-
-
[求助][讨论]关于动态插装工具PIN的问题:不能识别程序代码段中的某些Routine
-
-
[求助][讨论]关于动态插装工具PIN的问题:不能识别程序代码段中的某些Routine
最近在用PIN做软件分析,捕获程序自身IMG并遍历其中代码段(.init/.plt/.text/.fini)中的每一条指令。
于是用了个三层for循环:
for(SEC sec=IMG_SecHead(img);SEC_Valid(sec);sec=SEC_Next(sec))
{
if(SEC_Type(sec)==SEC_TYPE_EXEC)
{
for(RTN rtn=SEC_RtnHead(sec);RTN_Valid(rtn);rtn=RTN_Next(rtn))
{
RTN_Open(rtn);
for(INS ins=RTN_InsHead(rtn);INS_Valid(ins);ins=INS_Next(ins))
{ //遍历每条指令并进行相关操作}
RTN_Close(rtn);
}
}
}
但是,我在程序执行过程中插装发现,代码段中的某些routine下的指令执行了,但是之前遍历代码段时却完全没有扫描到这个routine下的指令。
之前也用PIN做过其他事情,也遇到过 无法识别某些复杂程序自定义的routine名字,但是识别出了这一个段地址范围是一个routine。
而对于我这种情况,PIN在遍历时好像就完全没有识别出这是一个有效的routine,估计因此就跳过了这个未识别出来的routine的地址范围(仅仅是自己猜测)。
求玩过PIN插装的大神或者遇到此种情况的同学们指导,解释。。。

谢谢!
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课