吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3546|回复: 7
收起左侧

[其他] OEP入口查找和基本壳的识别

[复制链接]
du11jk 发表于 2022-3-14 13:42

入口点的查找:

VC6特点:入口点代码是固定的代码,入口调用的API也是相同的,其中有的push地址不同程序可能不同;区段有四个也是固定的.text、.rdata、.data和.rsrc。
特征:固定调用API
GetVersion;  GetCommandLineA;  GetStartupInfoA

VS特点:入口点只有两行代码,一个CALL后直接JMP,第一个CALL进去后调用的API也是相同的;区段相对于VC6多了一个.reloc。
特征:call + jmp指令
API:GetSystemTimeAsFlieTime;  GetCurrentThreadId;  GetCurrentProcessId;  QueryPerformanceCounter

脱壳基本方法

1.单步跟踪

2.平衡堆栈

​ OEP的第一条指令是pushad,作用一般是保存寄存器环境,将8各通用寄存器压入堆栈;单步执行程序,指令pushad执行,堆栈变化,此时在栈顶(ESP)设置硬件断点;
​ 运行,程序在popad附近停止,表示已经处在壳代码末尾,继续单步到一个较大的jmp跳转,目标应该是原始OEP。
​ 观察代码是否确是原始OEP,可以参照上文不同情况入口点特征做判断。

步骤:

1.查找原始OEP

​ 确定原始程序代码的位置

2.dump内存到文件

​ 内存中被还原的代码和数据抓取下来,重新保存成一个文件

3.修复文件

​ 修复IAT,对从内存中转储到本地的文件进行修复

参考

https://www.anquanke.com/post/id/99750
https://www.52pojie.cn/forum-68-1.html
https://www.52pojie.cn/thread-234739-1-1.html
https://zhuanlan.zhihu.com/p/34263050
https://www.cnblogs.com/iBinary/p/7764483.html

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

liuyilin999 发表于 2022-3-14 15:41
这个是一般情况
sopc 发表于 2022-3-20 13:10
Danx 发表于 2022-6-26 16:01
lin007 发表于 2022-7-7 18:58
谢谢楼主科普
lishaoyi 发表于 2022-7-24 09:12
88M的程序,一脱就7M了,咋回事
lantian899 发表于 2022-7-28 19:35
啥是入口点?
hao9ii 发表于 2022-11-27 22:09
我测试了一下,UPX4.0加的壳,ESP定律好像搞不定,找不到正确的OEP
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-22 00:24

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表