首页
社区
课程
招聘
[原创]IDC脚本--寻找UPX壳的OEP
发表于: 2015-11-24 15:46 14923

[原创]IDC脚本--寻找UPX壳的OEP

2015-11-24 15:46
14923
OD已经停止更新了,而IDA一直在更新,不知道以后是不是只能用IDA了。。。。

今日突发奇想,想把OD的脱壳脚本转换成IDA的脱壳脚本。。。。

试了好久,踩了不少坑,只能搞定一个UPX的,不敢藏私,放出来权作抛砖引玉!!

脚本加注释:
auto r_esp;                //定义变量
auto r_eip;
AddBpt(BeginEA());    //在壳的入口点下断点  IDA的调试器如果入口没有断点就直接运行了
StartDebugger("","",""); //启动调试器
GetDebuggerEvent(WFNE_SUSP,-1); //这个函数比较关键。。。。。
StepOver();
GetDebuggerEvent(WFNE_SUSP,-1);//这里不调用这个函数的话,下面是获取不到esp的值的
r_esp=GetRegValue("esp");
Message("%x\n",r_esp);
AddBptEx(r_esp,4,BPT_WRITE);   //添加硬件断点 hw esp
Message("%x\n",MaxEA());
RunTo(MaxEA());
GetDebuggerEvent(WFNE_SUSP,-1);
Message("%x\n",eip);
RunTo(eip+7);             //这个地方是JMP 指令的地址 其他情况可能不一样。。。。
GetDebuggerEvent(WFNE_SUSP,-1);
StepOver();
GetDebuggerEvent(WFNE_SUSP,-1);
Message("OEP is %x",eip);


整体思路就是模拟OEP定律,只不过是用IDC脚本写的。

运行方法:shift+F2 调出脚本窗口,复制代码,然后点击按钮 Run

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 144
活跃值: (38)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不错,学习了
2015-11-24 19:02
0
雪    币: 6
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
值得学习一下。
2015-11-25 09:57
0
游客
登录 | 注册 方可回帖
返回
//