>_0xFORUM
Sign in

# Reversing

unreadhot
dnlib / ILSpy vs Ghidra on a mixed-mode C++/CLI dll

Mixed-mode. Native + C++/CLI. ILSpy is great on the managed half and useless on the native. Ghidra is the opposite.…

beaconbeaconGUESTstarted 21 Dec 2025, 03:47
Last ReplypagefltpagefltFriday, 07:52
8posts4.6kviewsalpc_seamretwfp_syscallstor_invlpg3 reading
unread
Listing vs graph vs decompiler — which view actually found the bug

On this crackme the bug was a signed compare. Graph hid it. Listing showed the jle. Decompiler invented a cast that…

pushlockMEMBERstarted 25 Aug 2026, 09:43
Last ReplylarskmlarskmThursday, 08:41
11posts445viewsstor_fs1 reading
unreadhot
Delphi binaries: recovering TForm methods without a map file

Old Delphi 7 target (public, licensed to the lab). No TDS. Ghidra treats it as a blob of stdcall with crazy stack f…

last_excMEMBERstarted 20 Oct 2025, 03:59
Last ReplypbrsbThursday, 03:44
18posts4.8kviews1 reading
When the 'packer' is just UPX and a skip-upx trick

UPX, but they patched the magic so upx -d shrugs. The stub is still UPX. Restore the magic, decompress, move on. I …

startioMEMBERstarted 24 Aug 2026, 04:25
Last Replyavx512avx512Tuesday, 21:54
10posts157viewssoftlockio_wbinvdnpagedex_epcpage4 reading
hot
ELF RELRO / BIND_NOW: how much does it actually change reversing?

People talk about RELRO like it changes the reverse. On a BIND_NOW + FULL RELRO lab binary the GOT is read-only aft…

apclevelapclevelMEMBERstarted 27 Oct 2025, 02:39
Last Replynmiwatchnmiwatch20 Aug 2026, 22:38
15posts2.5kviewsob_mdlvehchainob_dr7ke_hlt8 reading
COM vtable from a typelib vs guessing from QueryInterface

Public COM server. Typelib exists. I still see people QueryInterface-guessing instead of loading the IDL. Ghidra's …

nminestMEMBERstarted 8 Jun 2026, 00:49
Last Replybswapeaxbswapeax17 Aug 2026, 13:00
9posts1.1kviews1 reading
PE overlay that is actually a ZIP, not a packer

Overlay entropy looked packed. It was a ZIP of maps. file(1) on the overlay offset would have saved an hour. Please…

swapgsswapgsMEMBERstarted 5 Jun 2026, 06:03
Last Replycltsclts16 Aug 2026, 18:21
10posts986viewske_dpcrootkit_ivanint3loopetw_stac4 reading
hot
Base64 + rolling XOR in resources, still not a packer

People call any resource blob a packer. This one is a config. Decode is 12 lines. I wish writeups would stop saying…

zydisMEMBERstarted 29 Mar 2026, 18:42
Last Replylldtlldt15 Aug 2026, 05:25
20posts2.8kviewsndis_vmxonollyholdex_sysret8 reading
NSIS stub vs actual payload — people still confuse them

Installer. The interesting code is in the overlay, not the NSIS stub. Ghidra on the stub is a waste of a morning. 7…

headlessheadlessMEMBERstarted 15 May 2026, 03:49
Last Replyloadtrloadtr14 Aug 2026, 15:02
12posts1.4kviewsnt_inveptnt_msrndis_dr7alpc_wbinvd10 reading
Switching from x64dbg dump to Ghidra without losing comments

I dump after OEP, load in Ghidra, and all my x64dbg comments are gone. Labeless/retsync is the usual answer. What i…

cryptcryptGUESTstarted 11 Aug 2026, 17:11
Last Replyfidbbuildfidbbuild12 Aug 2026, 12:30
8posts310viewscm_rdrandndis_int3idtvec3 reading
hot
Delay-load IAT: why the decompiler shows a thunk to nowhere

Delay-load DLL. The IAT slot is a helper, not the real import, until the first call. Ghidra named it as the import …

tebselftebselfSENIORvendorstarted 3 Dec 2025, 13:14
Last Replyxgetbvxgetbv12 Aug 2026, 03:32
6posts4.6kviewsse_xgetbvse_invvpidndis_vmxonollyhold7 reading
hot
Stack strings vs FLOSS vs just reading the decoder

People dump FLOSS output and call it a day. On this crackme the interesting strings are built on the stack in 4-byt…

wrgsbasewrgsbaseSENIORvendorstarted 25 Sep 2025, 06:31
Last Replyuart16550uart1655010 Aug 2026, 00:43
17posts5.8kviewsob_dr7ke_hltob_eenter10 reading
hot
PE authenticode catalog vs embedded signature — what I actually check

Embedded signature vs catalog. People screenshot 'Digital Signatures' in Explorer and call it verified. I use signt…

kdnetkdnetMEMBERstarted 31 Jul 2026, 20:56
Last Replyplthookplthook6 Aug 2026, 22:11
26posts565viewsnt_inveptnt_msrndis_dr710 reading
hot
PDB vs no PDB: reconstructing structs from access patterns

No PDB. I have a loop that touches what is obviously a struct at rcx+0x20, +0x28, +0x30. Creating a Ghidra struct a…

idtgateMEMBERstarted 31 Oct 2025, 23:18
Last Replythpsplit1 Aug 2026, 23:19
8posts4.9kviewsnpagedex_epcpagestor_fsvolchok9 reading
Obfuscated MBA expressions — when to stop rewriting

MBA pass on a CTF binary. I rewrote until the decompiler showed a xor. Then I stopped. Is there a Ghidra plugin in …

retsyncretsyncMEMBERstarted 2 May 2026, 21:56
Last Replynnpflagnnpflag29 Jul 2026, 20:53
10posts754viewsio_wbinvdnpaged2 reading
Thumb interworking on a Cortex-M firmware that also has ARM veneers

Mostly Thumb-2, a few ARM veneers. Ghidra mixed modes in one function and the decompiler invented bx loops. I split…

cioptscioptsMEMBERstarted 28 Jul 2026, 12:48
Last Replykptinotekptinote28 Jul 2026, 20:04
8posts328viewshex_olgaalpc_seamretwfp_syscallstor_invlpg7 reading
hot
Firmware: raw SPI dump, no headers, ARM Cortex-M

SPI dump from a router we own. No ELF, no PE. Vector table at 0, SP/PC look sane, then Thumb code. Ghidra language …

irpmjirpmjMEMBERstarted 20 Nov 2025, 22:49
Last Replyallocaprobeallocaprobe24 Jul 2026, 19:03
36posts1.7kviewsex_epcpagestor_fsvolchokstor_mdl5 reading
Rust async state machines in Ghidra — naming the poll functions

Tokio-ish lab tool. The interesting logic is in a generated poll() state machine. Function names are hash soup. I n…

bootmgfwbootmgfwMEMBERstarted 16 Jul 2026, 08:50
Last Replythunkmethunkme18 Jul 2026, 16:42
20posts355viewscm_cr3ob_invept2 reading
Minidump without a binary — reconstructing enough to name crashes

Crash dump, matching binary gone. I have ntdll and the module list. Enough to name the crashing call, not enough to…

spidumpspidumpMEMBERstarted 11 Jul 2026, 12:08
Last Replydump_the_coredump_the_core12 Jul 2026, 02:07
8posts873viewshexraysnt_xgetbvio_gske_dpc5 reading
MSVC RTTI complete object locator — walking it without IDA

I walked COL -> type descriptor -> name. Ghidra has an analyzer. On this binary it named 60% and left the rest. Is …

smbiossmbiosMEMBERstarted 2 Jul 2026, 18:29
Last Replygscookiegscookie5 Jul 2026, 08:05
12posts1kviewsex_sysretsoftlockio_wbinvdnpaged6 reading
Recovering encrypted import names without running the sample

Crackme decrypts import names into a heap buffer then GetProcAddress. I emulated the decryptor in 30 lines of Pytho…

tscskewtscskewMEMBERstarted 27 Jun 2026, 16:34
Last Replysysentersysenter29 Jun 2026, 05:54
11posts859viewsse_invvpidndis_vmxonollyhold9 reading
Shadow stack / CET on a user binary — what breaks in the decompiler

CET-enabled public binary. incsspq around returns. Ghidra treated them as noise; the graph is still fine. Does anyo…

ud2padud2padMEMBERstarted 20 Jun 2026, 20:34
Last Replyhex_olgahex_olga21 Jun 2026, 17:56
12posts670viewsvehchainob_dr7ke_hlt8 reading
hot
Golang ABI internal vs register — Ghidra calling convention

Go 1.21+ register ABI. Ghidra still treated some functions as stack ABI and invented extra args. I set the Go calli…

wowentrywowentryMEMBERstarted 23 May 2026, 01:03
Last Replyiatboundiatbound26 May 2026, 10:42
18posts1.5kviewsio_stips_seamretcm_cr33 reading
hot
Kernel driver reversing without a kernel debugger — static first

Public sample driver (WHQL, old). I reversed the IOCTL table statically before attaching WinDbg. DeviceIoControl co…

sleighjitsleighjitMEMBERstarted 10 May 2026, 09:48
Last Replydseflagdseflag18 May 2026, 04:08
39posts928viewswfp_syscallstor_invlpgio_stips_seamret7 reading
DWARF on a stripped-ish ELF that kept .debug_line

Someone shipped .debug_line and stripped the rest. Line numbers without types. Still gold. Ghidra imported the line…

ghidrafidMEMBERstarted 20 Apr 2026, 21:02
Last Replyhidvendor21 Apr 2026, 04:34
8posts1.2kviewsstor_invlpgio_stips_seamretcm_cr35 reading
hot
Import-by-hash plus a tiny PIC stub — naming in Ghidra

Public loader-style crackme. Hash + PIC stub, then a normal IAT. I named the stub Resolve and the hash table. Do yo…

yarahotyarahotMEMBERstarted 17 Apr 2026, 22:56
Last Replyapplyenumapplyenum18 Apr 2026, 10:55
7posts1.9kviewsob_inveptcm_rdrandndis_int3idtvec6 reading
Recovering C++ exception typeinfo without a PDB on clang-cl

clang-cl, /EHsc, no PDB. Throw sites have a typeinfo pointer that Ghidra left unnamed. I walked the catchable type …

flossstrflossstrMEMBERstarted 8 Apr 2026, 18:12
Last Replysys_callsys_call9 Apr 2026, 10:03
9posts1kviewsalpc_ripalpc_tssse_xgetbv9 reading
hot
Custom new/delete on a game-adjacent public engine

Public engine (licensed). Custom allocator, so 'follow the malloc' is a lie. I found the arena from a size class ta…

gdbrecgdbrecMEMBERstarted 22 Mar 2026, 14:02
Last Replysibscalesibscale23 Mar 2026, 09:43
8posts1.8kviewsvolchok1 reading
hot
Switch-case recovery when MSVC used a jump table plus a sparse tree

One function: dense jump table for 0-31, binary tree for the rest. Ghidra recovered the table and missed the tree. …

ttdposttdposSENIORvendorstarted 13 Mar 2026, 16:59
Last Replyforcefnforcefn15 Mar 2026, 00:23
12posts1.6kviewsob_eenterndis_eresumehex_olga4 reading
hot
TLS callbacks that only run under a debugger

Crackme TLS callback checks BeingDebugged and skips the real init. Without a debugger the interesting function neve…

x64dbgbpx64dbgbpMEMBERstarted 10 Mar 2026, 05:50
Last Replyiamflexiamflex12 Mar 2026, 13:02
11posts1.6kviewsollyholdex_sysret3 reading
Export forwarding: when the EAT lies about the implementing DLL

Forwarded export. EAT says kernel32.Foo, the string is NTDLL.RtlFoo. Ghidra named the thunk as kernel32. Do you ren…

rttimsvcMEMBERstarted 3 Mar 2026, 19:30
Last Replypeb64peb644 Mar 2026, 08:28
13posts1.1kviewsidtvecalpc_ripalpc_tss10 reading
hot
Overlapping instructions as anti-disassembly on a crackme

Classic overlapping-instruction trick on a public crackme. Capstone linear sweep lies. Recursive descent with a for…

rustcsymrustcsymMEMBERstarted 24 Feb 2026, 10:45
Last Replychkstkchkstk24 Feb 2026, 16:42
6posts2.1kviewsndis_int3idtvecalpc_rip7 reading
hot
.NET mixed native images: ReadyToRun vs Ghidra

R2R image. ILSpy is fine on the IL, Ghidra sees a native precompiled body and an IL blob. I want the native body na…

boltboltGUESTstarted 11 Feb 2026, 15:29
Last Replystartiostartio21 Feb 2026, 05:17
40posts3.6kviewsse_xgetbv2 reading
ARM64 PAC/BTI in user binaries — what the decompiler shows

Public ARM64 Linux binary built with PAC and BTI. Ghidra shows PACIASP / AUTIASP as noise around every frame. Do yo…

tlscbMEMBERstarted 4 Feb 2026, 06:25
Last Replygdtarchgdtarch7 Feb 2026, 15:57
18posts1.5kviewsint3loopetw_stacob_mdlvehchain5 reading
Vtable recovery on a stripped MSVC binary without RTTI

No RTTI, no PDB. vfptrs in .rdata, slots look like functions. I am grouping by cross-refs and naming IUnknown-shape…

boundimpMEMBERstarted 26 Jan 2026, 19:54
Last Replykprobekprobe28 Jan 2026, 00:02
11posts1.3kviewsps_seamretcm_cr3ob_inveptcm_rdrand6 reading
hot
PE rich header as a compiler fingerprint, not a packer

I still see writeups treating the rich header as 'packer residue'. It is a compiler/linker fingerprint. Useful, not…

apihashapihashMEMBERstarted 18 Jan 2026, 00:12
Last Replyboundimpboundimp18 Jan 2026, 12:10
7posts2.5kviewsio_gske_dpcrootkit_ivanint3loop9 reading
Syscall stubs: naming ntdll wrappers in Ghidra

ntdll syscall stubs are all `mov r10, rcx; mov eax, imm; syscall`. Ghidra FID sometimes names them, sometimes leave…

xdatabadMEMBERstarted 11 Jan 2026, 04:44
Last Replyghidrafid11 Jan 2026, 13:49
10posts1.2kviewsrootkit_ivanint3loopetw_stacob_mdl8 reading
hot
Read-only string decryption: emulate or patch the dump?

Decoder writes plaintext into a heap buffer, never back into .rdata. Patching the binary does nothing useful. I emu…

gscookiegscookieMEMBERstarted 3 Jan 2026, 16:25
Last Replyclflushclflush3 Jan 2026, 23:05
7posts3.4kviewsstor_mdl1 reading
hot
Exception-handler decompiler in Ghidra 11.2 — actually better?

Release notes said exception-handler decompiler is less cursed. I opened an old project and re-decompiled two funct…

tailcalltailcallMEMBERstarted 29 Dec 2025, 17:34
Last Replydirqldirql31 Dec 2025, 10:30
15posts3.7kviewsetw_stacob_mdlvehchainob_dr74 reading
hot
FLIRT vs Ghidra FID: rebuilding a small MSVC 14 library

Signatures for a static lib we compiled ourselves (lab). FLIRT in IDA Free is limited. Ghidra FID I can actually ge…

eatwalkeatwalkMEMBERstarted 11 Dec 2025, 21:30
Last Replygreybeardgreybeard15 Dec 2025, 14:38
24posts3.4kviewsnt_xgetbvio_gske_dpcrootkit_ivan10 reading
hot
Thiscall vs fastcall vs vectorcall — Ghidra guessed wrong

MSVC C++ binary. Ghidra marked a pile of methods as __fastcall. They are thiscall. Decompiler invented extra argume…

tlsslottlsslotSENIORvendorstarted 1 Dec 2025, 05:27
Last Replywindbgdxwindbgdx3 Dec 2025, 04:24
17posts2.5kviewsndis_eresumehex_olga2 reading
lockhot
Ghidra vs IDA Free for a 40MB vendor PE — honest comparison

Not a fan war. Same public vendor tool (40MB, lots of C++) in IDA Free and Ghidra 11. IDA won on initial auto-analy…

ptesmearMEMBERstarted 10 Nov 2025, 17:08
Last Replyrootkit_ivanrootkit_ivan22 Nov 2025, 10:08
73posts5.3kviewsalpc_wbinvdhexraysnt_xgetbvio_gs6 reading
hot
Control-flow flattening: educational notes, no unpacker

Public CTF binary used a CFF pass (dispatcher + state var). I am not asking for a generic unflatten. Find the dispa…

ntos_oldntos_oldMEMBERstarted 12 Oct 2025, 15:04
Last Replywowtebwowteb12 Oct 2025, 20:57
6posts3.3kviewsalpc_tssse_xgetbvse_invvpid4 reading
hot
API hashing: same algorithm, three families, one Ghidra script?

I keep rewriting the same 'walk EAT, ror13 add' script with tiny twists. One family uses ror13, one djb2, one crc32…

coldfirecoldfireMEMBERstarted 6 Oct 2025, 20:53
Last Replygdtarchgdtarch7 Oct 2025, 18:32
6posts4.3kviewsob_eenterndis_eresumehex_olga3 reading
hot
Rust panic paths polluting the decompiler — hide them?

Rustc 1.78, panic=unwind. Every fallible path fans into rust_begin_unwind and the decompiler becomes a novella. I m…

clflushMEMBERstarted 18 Sep 2025, 14:43
Last Replyssdtacpissdtacpi20 Sep 2025, 08:15
12posts2.1kviewske_hltob_eenterndis_eresume7 reading
hot
Go pclntab on stripped ARM64 — recovering function names

Stripped Go binary, ARM64, no symbols. pclntab is there but Ghidra's Go analyzer only named ~40% of functions. I wa…

sysenterMEMBERstarted 10 Sep 2025, 16:40
Last Replypackedlepackedle11 Sep 2025, 09:10
7posts7.1kviewsnt_msrndis_dr72 reading
hot
Unpacking a rolling-XOR stub after UPX on a self-written crackme

Legal crackme I authored. UPX -d gets the inner blob. The stub walks the IAT and XOR-decodes .text with a 4-byte ke…

hex_olgahex_olgaSENIORvendorstarted 29 Aug 2025, 10:05
Last Replyheadlessheadless5 Sep 2025, 04:04
34posts4.1kviewsndis_dr7alpc_wbinvdhexraysnt_xgetbv6 reading
hot
Ghidra decompiler still eats overlapping x64 unwind info

SEH/VEH on x64 still confuses the decompiler when the compiler emitted overlapping unwind codes. What worked: force…

trapicetrapiceMEMBERstarted 31 Aug 2025, 23:10
Last Replyapplyenumapplyenum1 Sep 2025, 20:53
12posts4kviewsex_sysretsoftlockio_wbinvd5 reading