用户
搜索
  • TA的每日心情
    擦汗
    2017-9-9 00:08
  • 签到天数: 219 天

    连续签到: 1 天

    [LV.7]常住居民III

    i春秋签约作家

    Rank: 7Rank: 7Rank: 7

    40

    主题

    796

    帖子

    91

    魔法币
    收听
    3
    粉丝
    13
    注册时间
    2015-11-20

    核心白帽i春秋签约作者积极活跃奖

    发表于 2017-5-3 18:35:25 3014019
    一、普及
    What
    所谓“壳”就是专门压缩的工具。
       这里的压缩并不是我们平时使用的RAR、ZIP这些工具的压缩,壳的压缩指的是针对exe、com、和dll等程序文件进行压缩,在程序中加入一段如同保护层的代码,使原程序文件代码失去本来面目,从而保护程序不被非法修改和反编译,这段如同保护层的代码,与自然界动植物的壳在功能上有很多相似的地方,所以我们就形象地称之为程序的壳。


    WHY 对程序专门进行压缩,以减小文件大小,方便传播和储存。
    ② 我这是一个商业的程序,是用来赚钱的,怎么可以被别人破解呢,那我就是加密保护壳(Safengine、VMprotect、winlicense、Themida)保护程序不被非法修改和反编译。
    ③ 其他(病毒、木马加壳,Anti-AntiVirus)

    DO?
    脱壳
    就是把保护壳去掉更好的调试和破解能清楚看到代码

    OEP
    程序的入口点如果我们找到OEP我们就能快速脱壳就类似于找到钥匙就能开门
    壳就是一把锁OEP就是锁孔
    IAT
    IAT就是指针脱壳的话可能要修复指针如果没有指针就相当于人只有一个身体没有灵魂
    壳可能会对指针进行处理修复输入表就是修复IAT
    段首和段尾
    段首,是上一段的结尾也是下一段的开头一段是以retn开始和retn结尾。我们经常听到在段首下断所以我们要找的就是retn下面第一个push ,段首是以push开始滴所以我们不会在retn那里下段而段尾我们是在retn处下断因为软件的子程序是以retn返回到某一地方所以返回的时候要在retn出下断。
    二、准备知识
    ESP定律的原理就是“堆栈平衡”原理。
    1、在命令行下断hresp-4(此时的ESP就是OD载入后当前显示的值)
    2
    hrESP(关键标志下一行代码所指示的ESP(单步通过))
    CALL
    1.
    向堆栈中压入下一行程序的地址;
    2.JMP
    call的子程序地址处。

    RETN
    call对应的就是RETN了。对于RETN我们可以这样来理解:
    1.
    将当前的ESP中指向的地址出栈;
    2.JMP
    到这个地址。

    三、开始
    工具:
    ①、peid
    ②、OD
    ③、DetectItEasy
    ④、LordPE
    ⑤、ImportREC

    esp定律
    1.F8,观察OD右上角寄存器中ESP有没有实现(红色)
    2.命令行下 DD ******(当前代码ESP值),回车
    3.DD就选中下端地址,断点—硬件访问—DWORD断点,F9运行,到跳转处按F8 OEP

    1PEID先看程序的壳
    image001.png
    2ASPACK的壳子属于压缩壳的一种
    image002.png
    3、用DetectItEasy V1.0看一下编译器为Delphi
    看一下delphi的oep
    image003.png
    4、之后,载入od
    image005.png
    5、选择是否都可以的
    image007.png
    这是带壳的.
    6f8单步往下走
    image009.png
    7\ESPEIP都变成红色(实现)的时候,在ESP上右键下ESP断点
    image011.png
    8、下完断点,F9运行程序
    image013.png
    9、之后F8单步往下走,一直走
    image015.png
    10、到达OEP,右键-OD脱壳调试进程
    image017.png
    image019.png
    11、复制红框里面的oep,(9C25C之后关闭这个框,OD最小化
    12、打开loadpe
    image020.png
    13、选择刚刚的程序进程--修复镜像大小-完全转存
    image023.jpg
    14、转存后打开会出现这样的结果
    image024.png
    15、然后再用ImportREC修复
    image025.png
    16、点选刚刚的进程
    17、把之前复制的OEP放到1里面,按序号依次点击
    image027.png
    image029.png
    18、修正转储刚刚导出的那个
    image030.png
    19、脱壳完成...
    之后放到原目录下运行即可
    三、内存镜像法
    内存镜像法找oep
    1.OD载入软件
    2.点选项—调试选项—忽略全部—CTRL+F2重载
    3.ALT+N打开内存镜像,找程序第一个.rsrcF2下断—SHIFT+F9运行到断点,再打开找到程序第一个.rsrc上面的.code处(就是00401000处),F2下断—SHIFT+F9或无异常按F9,到OEP
    1、载入DO之后,alt+m
    image031.png
    2、在程序的资源处下内存访问断点
    image033.png
    3、返回程序按F9运行程序,也可以用快捷键SHIFT+F9运行程序
    界面是这个样子的
    image034.png
    4ALT+M返回,在代码段下内存访问断点
    image036.png
    5SHIFT+F9运行程序
    image037.png
    6、直接到达OEP,按照之前的方法脱壳就可以了
    7、OD自带的插件即可脱壳

    单步跟踪法
    1.OD载入,不分析代码。
    2.CALLF7,远CALLF8,实现向下的跳转。
    3.有回跳处,下一句代码处—F4 (右键—代码断点运行到所选)
    4.大的跳转(大跨段,JMP***JE***RETN),很快就会到OEP

    最后一次异常
    1.OD打开—点选项—调试选项—去掉所有异常—CTRL+F2重载.
    2.SHIFT+F9.只到程序运行,记下次数M
    3.CTRL+F2重载—按SHIFT+F9(次数为M-1次)
    4.CTRL+G—输入OE右下角的SE句柄前的地址.
    5.F2下断—SHIFT+F9到断点处.
    6.去断按F8,到OEP.
    OEP大全
    image039.png
    image041.png
    image043.png
    image045.png
    image047.png
    image049.png
    image051.png
    image053.png
    常用脱壳工具:
    1、文件分析工具(侦测壳的类型):Fi,GetTyp,peid,pe-scan,
    2、OEP入口查找工具:SoftICE,TRW,ollydbg,loader,peid
    3、dump工具:IceDump,TRW,PEditor,ProcDump32,LordPE
    4、PE文件编辑工具PEditor,ProcDump32,LordPE
    5、重建Import Table工具:ImportREC,ReVirgin
    6、ASProtect脱壳专用工具:Caspr(ASPr V1.1-V1.2有效),Rad(只对ASPr V1.1有效),loader,peid

    总结:
    1、介绍了什么是压缩壳,什么是加密壳
    2、脱壳原理
    3、脱壳常用的工具
    4、4种脱壳方法及修复
    5、各种语言OEP特征
    6、压缩壳这几种方法几乎够用了,如果出现冷门壳,用这些方法脱不掉,可以用之间说的打补丁的方法。
    现在压缩壳都有很多自动脱壳机,但是加密壳呢?学习手工脱壳不是为了单纯去学怎么脱这一种壳,学习的是技巧,以后遇到其他的没有脱壳机的壳要尝试手工去脱,就像一个网站注入点,你可以用sqlmap去注入,如果有waf呢?Sqlmap脚本绕不过去呢?不还得靠手工去试,工具是死的,人是活的.

    附件:链接: https://pan.baidu.com/s/1i5mPEHv 密码: w3qz

    本帖被以下淘专辑推荐:

    yyyxy 管理员 六国战旗移动展示平台! 秦 楚 燕 魏 齐 赵
    来自 6#
    发表于 2017-5-8 16:37:28
    文章奖励介绍及评分标准:http://bbs.ichunqiu.com/thread-7869-1-1.html,如有疑问请加QQ:286894635!
    奖金
    点评
    100
    融合了技巧,介绍,逻辑清晰,不错。

    欢迎加入i春秋QQ群大家庭,每人只能任选加入一个群哦!投稿请加我QQ:286894635。
    i春秋-楚:533191896
    i春秋-燕:129821314
    i春秋-齐:417360103
    i春秋-秦:262108018
    使用道具 举报 回复
    爱上网的薛定谔 发表于 2017-5-4 17:01
    由于文件体积过大,正在联系坏蛋解决。。。。然后解决了?

    坏蛋泡妞去了,
    使用道具 举报 回复
    z7788520 发表于 2017-5-5 09:18
    坏蛋泡妞去了,

    好吧。。。。。。难得的的学习机会,先马
    使用道具 举报 回复
    流yin 发表于 2017-5-19 01:27
    怎么避免检测到虚拟机和隐藏od?

    有插件,
    使用道具 举报 回复

    OD不能用大众版的
    使用道具 举报 回复
    由于文件体积过大,正在联系坏蛋解决。。。。然后解决了?
    使用道具 举报 回复
    很详细,来学习一下,很基础不错
    使用道具 举报 回复
    发表于 2017-5-6 17:15:09
    使用道具 举报 回复
    哈哈,看看
    使用道具 举报 回复
    发表于 2017-5-8 23:15:57
    基础学习了
    使用道具 举报 回复
    来学习一下
    使用道具 举报 回复
    文章思路清晰,受教了
    使用道具 举报 回复
    发表于 2017-5-11 13:08:28
    想学逆向
    使用道具 举报 回复
    发表于 2017-5-12 17:47:00

    很详细,来学习一下
    使用道具 举报 回复
    发表于 2017-5-13 00:19:30
    文章不错,隐藏内容先看看
    使用道具 举报 回复
    发表于 2017-5-19 01:27:59
    怎么避免检测到虚拟机和隐藏od?
    使用道具 举报 回复
    123下一页
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册