我正在尝试使用ndisasm
反汇编一个程序。我发现它不区分常量、元数据和程序指令。即:
00020CA3 00426F add [edx+0x6f],al
00020CA6 726C jc 0xd14
00020CA8 61 db 0x61
00020CA9 6E outsb
00020CAA 6420432B and [fs:ebx+0x2b],al
00020CAE 2B db 0x2b
00020CAF 202D20436F70 and [0x706f4320],ch
00020CB5 7972 jns 0xd29
00020CB7 69 db 0x69
00020CB8 67 a32
00020CB9 68 db 0x68
00020CBA 7420 jz 0xcdc
00020CBC 31 db 0x31
00020CBD 39 db 0x39
00020CBE 39 db 0x39
00020CBF 31 db 0x31
00020CC0 20426F and [edx+0x6f],al
00020CC3 726C jc 0xd31
00020CC5 61 db 0x61
00020CC6 6E outsb
00020CC7 6420496E and [fs:ecx+0x6e],cl
00020CCB 746C jz 0xd39
00020CCD 2E00446976 add [cs:ecx+ebp*2+0x76],al
字符串
实际上是一个字符串常量:
00020CA4 Borland C++ - Copyright 1991 Borland Intl.\x00
型
空终止字符串很容易找到,我只是将十六进制代码转换回ASCII。
所以,我的问题是:我怎样才能在汇编代码中找到对这些字符串的引用呢?
我做了一个虚拟的尝试,通过一个字符串常量的开始位置进行搜索(即0x20CA4),但它没有帮助。
1条答案
按热度按时间sshcrbum1#
您最好在十六进制编辑器中打开可执行文件。这些几乎总是带有ASCII显示关闭的一面。