吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 11223|回复: 44
收起左侧

[原创] 脱壳(初学)-- 手脱EZIP(ESP定律)

  [复制链接]
無涯 发表于 2015-3-30 01:02
本帖最后由 無涯 于 2015-3-30 01:06 编辑

几年前在长沙开福寺求了支签,虽然去年搬毕业搬宿舍的时候不慎丢失可是内容我还记得:留得家财千万贯,不如育子一身才;书山学海无止境,庸人得福终会穷话不多说了,开始今天的书山学海吧~~~
-------------------------------------------------------------------------------------------------------------------------
@Hmily 麻烦前辈看下我对ESP定律的浅显认识有什么不对的地方,我好及时更正,不要误导了跟我一样刚入门的新手,谢谢!!!
希望前辈多多指导
顺便提两个额外的问题
问题1:
如图0-1和图0-2
8.png
图0-1
9.png
为什么我跟到程序OEP后,向上滚动代码窗口,push ebp变成了add byte ptr。。。地址也从10cc变成了10c7
图0-2


问题2:论坛的搜索引擎,搜索完点击链接后,老是出现卡死现象,我用的是猎豹浏览器,好像是脚本出了什么问题,麻烦跟进一下!!!



看了好几课基础视频啦,感觉自己汇编基础还有对OD的使用不是很了解,这个星期刚好公司没什么事,一直在补基础
顺便推介一下现在正在看得教程
小甲鱼《PE结构详解》(PE结构是要了解的,以后会用到的),
《使用OllyDbg从零开始Cracking_CHM版》这个教程写的很详细,目前只看到10章,觉得还是很有用很有必要看一下的
(上个星期下的,网上应该很容易找到,不记得在哪里下载的,如果有需要我再放上来吧)
脱壳之前先补一下用ESP定律脱壳需要的基础知识吧,跟ESP定律有关系的


基础1:要了解ESP定律,还是先来了解一下ESP吧
            ESP是一个寄存器,一个比较特殊的寄存器,永远指向堆栈最顶端的地址,如下图
            





基础2:硬件断点
硬件断点分为:硬件执行断点(ON EXECUTION),硬件写入断点(ON WRITE),硬件访问断点(ON ACCESS)3种。
1、硬件执行断点与普通的CC断点作用一样,但硬件执行断点并不会将指令首字节修改为CC,所以更难检测。
2、硬件访问/写入断点是断在触发硬件断点的下一条指令处。
(尴尬,这个我理解也不深,可是接下来要用到,硬着头皮说一下,详细内容可以参考《使用OllyDbg从零开始Cracking.CHM》--第十一章硬件断点和条件断点和第三章寄存器)


接下来,我用ESP定律手脱EZIP壳,顺便讲讲我对ESP定律的理解
步骤一:载入程序
1.png
载入程序后我们看到一个跳转,F8单步走一下,如下(1-2),我们看到004102DC 55 push ebp
2.png
图1-2
3.png
图1-3
单步F8,注意图1-2 和图1-3箭头所指的地方,我们看到堆栈中已经将EBP压入堆栈中了,这里右键ESP,选择数据窗口中跟随,如图1-3-1
4.png
如1-3-1
在数据窗口选中跟随过来的地址下硬件访问断点,右键---断点---硬件访问---word/dword,如图1-3-2
5.png
图1-3-2
为什么要选择数据窗口中跟随呢,主要是为了下硬件访问断点,在代码区域只能下硬件执行断点,在堆栈区不能下断点;

为什么要下硬件访问断点呢,我试着讲一下,这是根据我看了几课初级脱壳教程和实践后的理解,不道之处还望多多指导

先讲一下加壳,加壳简单来说就是在程序前面再加一段代码,让我们不知道原程序从哪里开始的,可是终究还是要回到原程序的
所以,在执行加壳程序之前,一般需要保存好程序执行环境,比方说我今天要脱得EZIP的壳,push ebp就是先将源程序的寄存器
环境保存起来,等执行完加壳程序在恢复,所以,我们要找到源程序入口点,就要看什么时候程序将这个ebp重新拿出来,有一课
教程说到寻找popad也是这个道理,加壳之前pushad,将寄存器环境都压入堆栈中,所以我们要寻找与之对应的popad,入口点
往往就在恢复寄存器环境之后不远的地方。。。

我们这里下好硬件断点之后,点击运行(F9),程序会停在pop ebp的下一行,如图1-4
6.png
图1-4
这里我可以看到EBP又变回原来的地址了,很好!
此时程序停留在00410688 jmp eax,看右边EAX的值:004010cc,这是一个很大的跳转,很可能就跳到OEP了,单步F8
如图1-5
7.png
file:///C:/Users/Administrator/AppData/Local/YNote/data/qqD926D51B8FA6ADA24654A4011682AC3E/61e10ec5c6d14d6ba00e2e520b17f55d/clipboard.png
图1-5
我们看到图1-5 这段代码跟C++程序的入口特征一样,很可能就是OEP,脱壳。。。。的确是程序入口(10cc)!!!
其实这个壳得重点是在修复,具体课程中有讲,我就不多废话啦 ,我主要是想讲一下对ESP的浅显认识,希望前辈们多多指导


ps:以上只是目前为止我对ESP定律的浅显认识,当真不得的









免费评分

参与人数 12热心值 +12 收起 理由
xustrive + 1 我用WIN7 64 脱出来的无法运行。。。
heyteng + 1 热心回复!
Hmily + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
tmsdy + 1 咱们互相评个分呗~~~
你的微笑leo + 1 已答复!
Ps出来的小赵 + 1 已答复!
yzh2004 + 1 我很赞同!
niwota4125 + 1 LZ厉害啊 加个好友吧 我也是新手 多多交.
duanbin_109 + 1 我很赞同!
yeelnn + 1 我很赞同!
aikuimail + 1 热心回复!
Godfather.Cr + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩.

查看全部评分

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

 楼主| 無涯 发表于 2015-3-30 01:05
明天还要上班,我为了写博客写到这么晚,有没有人给点鼓励~~~~
写的好不好是另一回事,重要的是我态度好呀~~
如果觉得有帮助麻烦捧个钱场,小手一抖CB到手,
如果觉得写的很烂,麻烦不要吝啬那一点点口水,出来喷喷,指点一下新人!!
万分感谢!!!!
TOP虚拟网络 发表于 2015-3-30 01:17
WsQzR 发表于 2015-3-30 01:18 来自手机
wanmei 发表于 2015-3-30 01:21
菜鸟默默路过
wuling1012 发表于 2015-3-30 06:00 来自手机
菜鸟默默路过,求大神指点迷津
s1986q 发表于 2015-3-30 06:45
谢谢楼主的分享。
 楼主| 無涯 发表于 2015-3-30 09:16

多谢捧场 哈哈~~~我也是新手~~~
 楼主| 無涯 发表于 2015-3-30 09:17

谢谢!!!多谢各位好汉捧场~~
 楼主| 無涯 发表于 2015-3-30 09:18

我也是菜鸟··一起学习呗~~~
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-17 13:54

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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