Disassembler
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 eszköznek tekinthető.
Példák disassembler működésére
- Intel
x86
platformon linux alatt azobjdump
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 Archiválva 2008. augusztus 28-i dátummal a Wayback Machine-ben
Informatikai portál • összefoglaló, színes tartalomajánló lap