A disassemblerek olyan programok, melyek a gépi kódot assembly nyelvre fordítják, azaz az assemblerekkel ellentétes feladatot látnak el. A disassemblert az különbözteti meg a decompilertől, hogy alacsony szintű kódot képez, míg az utóbbi magas szintűt.
A disassembly, vagyis a disassembler kimenete ember által olvasható formában jelenik meg, ezért a disassembler egy reverse-engineering, avagy kódvisszafejtő eszköznek tekinthető.
Példák disassembler működésére Intel x86 platformon linux alatt az objdump program a forrásprogramot és a disassembly listát együtt mutatja (részlet): lp = (unsigned char *)(addr); 52: 8b 45 0c mov 0xc(%ebp),%eax 55: 89 45 f4 mov %eax,0xfffffff4(%ebp) hp = (unsigned char *)(addr + length - 1); 58: 8b 45 08 mov 0x8(%ebp),%eax 5b: 03 45 0c add 0xc(%ebp),%eax 5e: 48 dec %eax 5f: 89 45 f0 mov %eax,0xfffffff0(%ebp) Siemens BS2000 operációs rendszer AID debuggere az EDT program elejét disassemblálja (kihagyva az adatterületeket):
EDT001+0 BALR R10,R0 05 A0 EDT001+2 BC B'1111',E(R0,R10) 47 F0 A00E ... EDT001+10 BAL R1,2E(R0,R10) 45 10 A02E ... EDT001+30 SVC 1 0A 01 EDT001+32 CLM R15,B'0001',2F2(R10) BD F1 A2F2 EDT001+36 BC B'0111',150(R0,R10) 47 70 A150 EDT001+3A LR R4,R1 18 41 EDT001+3C XR R1,R1 17 11 EDT001+3E SVC 172 0A AC AIX operációs rendszer alatt gdb által generált disassembly lista (PowerPC-processzor): 0x100003d0 <main+0>: mflr r0 0x100003d4 <main+4>: stw r31,-4(r1) 0x100003d8 <main+8>: stw r0,8(r1) 0x100003dc <main+12>: stwu r1,-80(r1) 0x100003e0 <main+16>: mr r31,r1 0x100003e4 <main+20>: li r0,4 0x100003e8 <main+24>: stw r0,56(r1) 0x100003ec <main+28>: lwz r3,72(r2) 0x100003f0 <main+32>: li r4,1 0x100003f4 <main+36>: li r5,2 0x100003f8 <main+40>: li r6,4 0x100003fc <main+44>: li r7,4 0x10000400 <main+48>: li r8,8 0x10000404 <main+52>: li r9,4 0x10000408 <main+56>: li r10,4 0x1000040c <main+60>: bl 0x10000470 <printf>
Irodalom L. Vinciguerra, L. Wills, N. Kejriwal, P. Martino, and R. Vinciguerra, "An Experimentation Framework for Evaluating Disassembly and Decompilation Tools for C++ and Java", Proc. of 10th Working Conference on Reverse Engineering (WCRE) 2003. B. Schwarz, S. Debray, and G. Andrews, "Disassembly of Executable Code Revisited", Proc. of 9th Working Conference on Reverse Engineering (WCRE), pp. 45–54, 2002.
Lásd még Control flow graph Data-flow analysis
További információk transformation Wiki on disassembly OpenRCE: Various Disassembler Resources and Plug-ins
Kategória:Szoftverfordítás