一:一些简单的概念:
Disassembly of file: 反汇编的程序名 code offset 段地址 code size 段大小
imagebase:虚拟地址
小知识点:win32应用程序绝大多数的虚拟基地址都是400000H,而dll、ocx文件及win32汇编程序的虚拟基地址一般都是10000000H。
RVA叫做相对虚拟地址,是内存中相对于文件基地址的偏移量,与文件偏移地址offset并不相同,文件偏移地址Offset指的是文件的内容相对于基地址的偏移。
MENU INFORMATION 菜单信息
DIALOG INFORMATIN 对话框信息
IMPRTED FUNCTIONS 程序的引入表函数(就是程序中调用了那些外部函数)
IMPORT MODULE DETAILS
EXPORTED DUNCTIONS
program entry point:程序的入口地址
*程序的入口点就是程序开始执行的地方*
*程序的入口点和程序代码的起始处并不是一个概念*
二:一些代码的意思
(1)@offset 000bc3bah:意思是源代码的偏移地址是bc3bah
(2)Referenced by a (u)nconditional or (c)onditional Jump at Address:
|:004BC41B(C)
|
:004bc425 .....
这段代码的意思是:4bc425处开始的源代码是由004BC41B(C)处有条件地跳转过来的(C)就是有条件跳转 (U)就是无条件跳转
(3)reference to:kernel32.getsystemtimeasfiletime,ord:0000h
|
:004bc57c ff15c4734e00 call dword ptr [004e73c4]
这段代码的意思是:4BC57C处的call语句执行的就是kernel32.dll中的getsystemtimeasfiletime这个API函数.
(4)possible ref to menu:menuid_5dc1,item:"close"
|
:004bc582 .........
这段代码的意思是:4BC582处开始的源代码是用来生成执行“menu”的“CLOSE”功能的。
三:常见的汇编指令及对应的机器码(这里我只要学习了几个常用的,当然可以通过工具进行查找)
jne/je(段内跳) 75/74
jne/je(段间跳) 0F85/0F84
jne/je(段内跳) 75/74
jnz/jz(段内跳) 0F85/0F84
jmp EB
nop 90