VB 程序快速定位 OEP
使用工具
分析思路
使用 ASPACK 给 CM 加壳;
将加壳后的 CM 导入 OD,然后来到内存窗口,找到 MSVBVM60.dll 的代码段,设置内存访问断点:
VB 程序有个特点:入口处都是一个 PUSH 指令,然后一个 CALL 指令,并且 CALL 指令中的 JMP 指向 MSVBVM60/50;
所以这里的思路就是:当外壳程序执行完毕,跳转至 OEP 时,程序会调用 MSVBVM60/50,所以,只要给 MSVBVM60/50 设置断点,然后跟随到调用位置,就到达 OEP 了;
设置好断点并
F9
运行程序,程序会中断在 MSVBVM60/50 的行首:此时在栈窗口跟随到调用位置:
这里,通过上面的函数列表就已经可以确定是 OEP,VB 程序的 OEP 基本类似,都是这种结构;
删除代码分析后,更加确定这里就是 OEP: