吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 29329|回复: 49
收起左侧

[分享] 【ESP定律】一个简单的upx脱壳实验

  [复制链接]
梦幻的彼岸 发表于 2018-4-17 08:18
本帖最后由 梦幻的彼岸 于 2018-4-22 11:40 编辑





由于这几天没学破解
就先把之前的手动脱壳部分先分享出来,嘻嘻希望表哥,表姐们指证与鼓励下 嘻嘻 也希望伙伴们学到些知识
1.jpg
1,手动脱壳
       首先,
             用PEiD查询是否有壳,并是什么壳,在去寻找相关的课程,嘻嘻不会脱壳只能这么做了
       打开peid:
1.jpg
  将CrackMe(要查看壳的程序)托入或载入peid 我这里使用托入办法,嘻嘻
1.jpg
从结果分分析出是这个加壳方式:UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo
       寻找教程阶段:嘻嘻就不说了
       用od进行脱壳:
        一样用od载入要脱壳的程序
       看到:pushad
       单步步过(快捷键F8)一次
1.jpg
  根据所学知识判初步断可以使用ESP定律进行脱壳
        判断原因:
            单步步入后
              寄存器区域显示效果:
1.jpg
  就ESP显示为红色
      开始用ESP定律进行脱壳:
      ESP定律的两种使用方法:
      一种ESP脱壳原理:
           鼠标左键选择ESP区域,失去被其它颜色覆盖,判断为被选定状态就可以:若上图所示效果图
           鼠标右键(在选的位置或空白地方都可:因为ESP区域已被选中)
           在弹出的窗口选择:数据窗口中跟随
1.jpg
判断是否选择正确:看地址区域:是否 = ESP 后面的字符串:0019FF64 判断相等 则证明选择无错
          在 HEX 数据区域 鼠标左键从第一个字节开始选择多少都行记住是第一个字节这里的第一个字节为00
1.jpg
2.jpg
    鼠标右键:在弹出的窗口选择 断点 硬件访问 之后选择{ Byte :字节(1) Word :字值(2) Dword:双字值(4)}都可
             这里我选择 :Byte  :字节(1)
           查看是否选中:点击:调试 选择硬件断点
1.jpg
点击确认返回
       运行程序F9  单步不入F8(为找到OEP:找到之后进行脱壳)
          嘻嘻看到ESP:判断出这是ESP的辛酸史就不说了
1.jpg
    注意:脱壳之前先删除之前的断点 删除方法
          单击 调试 选择硬件断点  点击删除
1.jpg
1.jpg
    删除断点之后:点击确认返回:之后在选择PUSH 行的情况下右键在弹出的窗口选择用OllyDump脱壳调试进程
         选择两种保存方式,避免一种脱壳方式不能运行带不带重建输入表
          带重建输出表
1.jpg
1.jpg
点击脱壳进行保存
        不带重建输入表
1.jpg
点击脱壳进行保存
       运行两种脱壳之后的程序
       用peid进行查壳
1.jpg
  发现无壳,并看出编写语言为:Microsoft Visual Basic 5.0 / 6.0
        载入od我们可以看出不同
1.jpg
一种ESP脱壳插件:
          方法差不多:就是省略了一些步骤
        省略的步骤展示:  
           在弹出的窗口选择:数据窗口中跟随
           在 HEX 数据区域 鼠标左键从第一个字节开始选择多少都行记住是第一个字节这里的第一个字节为00
           鼠标右键:在弹出的窗口选择 断点 硬件访问 之后选择{ Byte :字节(1) Word :字值(2) Dword:双字值(4)}都可
           这里我选择 :Byte  :字节(1)
           查看是否选中:点击:调试 选择硬件断点
         替换的方法为:
           鼠标左键选择ESP区域,失去被其它颜色覆盖,判断为被选定状态就可以:若上图所示效果图
           鼠标右键(在选的位置或空白地方都可:因为ESP区域已被选中)
1.jpg
查看硬件断点:可以发现帮助我们选择了Dword的方式:
2.jpg
之后就相同了
总结:常见寻找OEP脱壳的方法方法一:1.用OD载入,不分析代码!2.单步向下跟踪F8,是向下跳的让它实现3.遇到程序往回跳的(包括循环),我们在下一句代码处按F4(或者右健单击代码,选择断点--运行到所选)4.绿色线条表示跳转没实现,不用理会,红色线条表示跳转已经实现!5.如果刚载入程序,在附近就有一个CALL的,我们就F7跟进去,这样很快就能到程序的OEP6.在跟踪的时候,如果运行到某个CALL程序就运行的,就在这个CALL中F7进入7.一般有很大的跳转,比如 jmp XXXXXX 或者 JE XXXXXX 或者有RETE的一般很快就会到程序的OEP。方法二:ESP定理脱壳(ESP在OD的寄存器中,我们只要在命令行下ESP的硬件访问断点,就会一下来到程序的OEP了!)1.开始就点F8,注意观察OD右上角的寄存器中ESP有没出现。2.在命令行下:dd 0012FFA4(指在当前代码中的ESP地址),按回车!3.选种下断的地址,下硬件访问WORD断点。4.按一下F9运行程序,直接来到了跳转处,按下F8,到达程序OEP,脱壳方法三:内存跟踪:1:用OD打开软件!2:点击选项--调试选项--异常,把里面的忽略全部√上!CTRL+F2重载下程序!3:按ALT+M,DA 打开内存镜象,找到第一个。rsrc.按F2下断点,然后按SHIFT+F9运行到断点,接着再按ALT+M,DA 打开内存镜象,找到。RSRC上面的CODE,按F2下断点!然后按SHIFT+F9,直接到达程序OEP,脱壳!方法四:一步到达OEP(前辈们总结的经验)1.开始按Ctrl+F,输入:popad(只适合少数壳,包括ASPACK壳),然后按下F2,F9运行到此处2.来到大跳转处,点下F8,脱壳之!方法五:1:用OD打开软件!2:点击选项--调试选项--异常,把里面的√全部去掉!CTRL+F2重载下程序!3:一开是程序就是一个跳转,在这里我们按SHIFT+F9,直到程序运行,记下从开始按F9到程序运行的次数!4:CTRL+F2重载程序,按SHIFT+F9(次数为程序运行的次数-1次5:在OD的右下角我们看见有一个SE 句柄,这时我们按CTRL+G,输入SE 句柄前的地址!6:按F2下断点!然后按SHIFT+F9来到断点处!7:去掉断点,按F8慢慢向下走!8:到达程序的OEP,脱壳!
OEP:OEP:(Original Entry Point),程序的入口点,软件加壳就是隐藏了OEP(或者用了假的OEP), 只要我们找到程序真正的OEP,就可以立刻脱壳。 PUSHAD (压栈) 代表程序的入口点
POPAD (出栈) 代表程序的出口点,与PUSHAD相对应,一般找到这个OEP就在附近啦。一般我感觉到oep的时候反汇编内的代码就变了,那种感觉很奇妙

ESP:ESP(Extended stack pointer)是指针寄存器的一种(另一种为EBP)。用于堆栈指针。ESP为栈指针,用于指向栈的栈顶(下一个压入栈的活动记录的顶部),而EBP为帧指针,指向当前活动记录的底部。栈指针与帧指针标识出了当前活动记录的位置。当函数被调用的时候,执行如下操作:⒈将帧指针压入栈中:push ebp⒉用ebp保存当前栈指针:mov esp,ebp⒊使得栈指针自减,自减得到的内存应当能够被用来存储被调用函数的本地状态:sub esp,0CCh

免费评分

参与人数 12吾爱币 +13 热心值 +11 收起 理由
Halifaxxx + 1 + 1 楼主v3.91 64位出个详细教程呗
Emilkbigmimi + 1 + 1 我很赞同!
lizhenseng + 1 + 1 我很赞同!
mayanfan123 + 1 + 1 我很赞同!
18532182084 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
海天一色001 + 1 + 1 谢谢@Thanks!
xing7681 + 1 我很赞同!
舒-hang + 1 + 1 用心讨论,共获提升!
freesoft00 + 1 + 1 我很赞同!
xie7 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
liphily + 2 + 1 我很赞同!
冷暖自知i + 1 + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

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

guols-cracker 发表于 2018-6-25 23:24
查壳结果显示: UPX v.3.91w - [ .... ] - 64 bit EXE signature  - at  2013-2016 - http://upx.github.io
用UPX -D 程序,则结果出现。CantUnpackExce ption: file is possibly modified/hacked/protected; take care!
楼主大牛有碰到过没,求指教一二!
q6687898 发表于 2018-4-17 08:27
xie7 发表于 2018-4-17 09:39
zhiweixiaoyi 发表于 2018-4-17 09:39
感谢分享。。
忆惘惜 发表于 2018-4-17 10:52
ximo的24课脱壳我都会脱了,然而自己找个软件脱 未能脱掉! 觉得有点可悲
冷暖自知i 发表于 2018-4-17 12:20
写的很详细  适合我们小白学习
头像被屏蔽
洪崖洞洞主 发表于 2018-4-17 18:09
提示: 作者被禁止或删除 内容自动屏蔽
gunxsword 发表于 2018-4-17 23:03
以前虽然用过ESP定律,不过一直不太懂,现在慢慢的,理解了,对付一般的壳,这方法还是非常好用地!
我是来日狗的 发表于 2018-4-17 23:05
要是有直播教程最好了
odaycho 发表于 2018-4-17 23:13
这个太适合我这样的新手菜鸟了,学习学习!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

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

GMT+8, 2024-4-19 12:55

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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