1、今天学习了Pin Tools。主要是了解了/source/tools/ManualExamples中的一些cpp的实际功用。
imageload 跟踪程序上传和下载image
inscount0 记录程序运行指令总数
intrace 显示每个指令执行的内存地址
malloctrace 记录函数参数传递到函数的值或返回的值
pinatrace 检测指令读取和写入的内存地址
proccount 记录程序被调用的次数
在使用Pin Tools时,首先用Visual Studio编译/source/tools/ManualExamples下的所有cpp,编译为dll后,在cmd命令行下就可以使用pin的命令了。
例如:
X:\>pin -t /source/tools/ManualExamples/obj-ia32/inscount0.dll -- cmd xxx.exe
就可以记录xxx.exe中程序运行指令的总数。
2、学习了PLT和GOT表的内容。
动态解析过程的大致内容。
.PLT0:
Push1 got_plus_4
jmp *got_plus_8
.PLT1:
jmp *name1_in_GOT
Push1 $offset
jmp .PLT0@PC
.PLT2:
jmp *name2_in_GOT
Push1 $offset
jmp .PLT0@PC
3、学会使用反汇编工具,OllyDbg,在进行反汇编的时候,可以直接加入exe文件进行反汇编。
4、使用Pin进行缓冲区溢出检测的流程图
5、疑问:在拿到一个程序时,如何可以查看到PLT表项和GOT表项的具体内容。