吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1988|回复: 9
收起左侧

[求助] ESP定律法手脱UPX壳,发帖检验是否成功!

[复制链接]
雪落传承 发表于 2020-1-30 20:42
本帖最后由 雪落传承 于 2020-1-30 20:47 编辑

脱壳程序在论坛上下载教学视频的相关实例:吾爱破解论坛学习脱壳实例_UPX.exe  ; 打开界面如图:
打开软件.png

脱壳方法:根据ximo 脱壳教程(24集全) 1、手脱UPX壳教程第二个方法,ESP定律法。
1,点击下一步按钮
第一步.png


2,在寄存器中找到ESP代码右键选择 -- 数据窗口中跟随
第二部.png


3,在数据窗口区选中第一条数值,右键设置断点(断点—硬件访问-Word;每次设置前记得删除之前的断点:菜单栏—调设—硬件断点—删除)
第三部.png

4,点击运行按钮让反汇编窗口代码自动运行
第四步.png


5,再单步跟踪,一直找到(出栈)代码push ebp 为止,如图:
第五步.png


6,选中改代码右键选中【用Ollydump脱壳调试进程,选择脱壳保存脱壳后程序,最终完成脱壳。


点开脱壳后的程序打开成功,文件大小对比;脱壳前1332K,脱壳后368K。另外,Exeinfo PE工具查看截图如下:
脱壳.png
个人学习总结笔记:
关于脱UPX壳,从入口点代码查询,到结束一般都是push ebp 结尾,然后找到该代码进行Ollydump脱壳调试选择脱壳即可。

疑问:此次UPX脱壳有哪些错误,是否是成功的了,如何验证?另外总结部分的理解是否正确?? 谢谢


相关程序文件(百度云分享):链接: https://pan.baidu.com/s/1suU7rO4fI35k2E19kc6fbQ 提取码: cqpc

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

Carrot-Chou 发表于 2020-1-30 21:53
直接“HW break[ESP]”就行了,可以省下几步


详细的请看视频:https://www.bilibili.com/video/av77649752?p=86


Snipaste_2020-01-30_21-50-39.png

免费评分

参与人数 1吾爱币 +1 收起 理由
雪落传承 + 1 感谢分享,学到了

查看全部评分

mwy1024 发表于 2020-1-30 21:20
本帖最后由 mwy1024 于 2020-1-30 21:22 编辑

能运行就表示脱壳成功了,为何你一定要走到push ebp呢,不同程序写的入口不一定是这句,

(出栈)代码push ebp 为止
确定是出栈?
小可爱~ 发表于 2020-1-30 21:34
本帖最后由 小可爱~ 于 2020-1-30 21:50 编辑

是不是没成功???, 不应该是下硬件断点运行断下来, 再单步步过一直下去直到遇到一个jmp再单步步过跳过去(如果遇到回跳使用F4到回跳的后面), 那里才是OEP么??? 你这个直接停了, 找了下面那个push ebp了, 没找到真正的吧?

TIM截图20200130214542.png

吾爱破解论坛学习脱壳实例_UPX_unpack.rar (134.75 KB, 下载次数: 4)
topcookie 发表于 2020-1-30 21:40
应该是没脱成功,论坛里有教程看看照着走一遍
Hmily 发表于 2020-1-31 01:21
脱壳大体是对的,但你对oep的了解过少,比如这个是vs2018变异的,入口就不是push ebp,看第一课讲过https://www.52pojie.cn/thread-349073-1-1.html

免费评分

参与人数 1热心值 +1 收起 理由
雪落传承 + 1 感谢您的宝贵建议,我们会努力争取做得更好!

查看全部评分

 楼主| 雪落传承 发表于 2020-1-31 19:38
Hmily 发表于 2020-1-31 01:21
脱壳大体是对的,但你对oep的了解过少,比如这个是vs2018变异的,入口就不是push ebp,看第一课讲过https:/ ...

感谢回复,纯小白最近才刚开始学习破解,没有编码基础的,这里有个疑问想理解一下,我回顾学习了您发表的帖子,以及查询百科,对oep:(Original Entry Point),程序的入口点,软件加壳就是隐藏了OEP(或者用了假的OEP), 只要我们找到程序真正的OEP,就可以立刻脱壳。
PUSHAD (压栈) 代表程序的入口点。POPAD出栈) 代表程序的出口点,与PUSHAD相对应,一般找到这个OEP就在附近啦~
对此有几个疑问想探讨一下:
1,对于无壳程序的oep,如果确定了其编译器语言,是否就可以确定其程序入口点代码,比如说使用VC6编译的程序入口点代码都是push ebp这行代码?所以反推之,对于使用VC6编译的加壳程序,只要找到push ebp这行代码,就可以右键Ollydump脱壳调试进程进行脱壳。同理,对于VS编译的加壳程序脱壳找到两行CALL+JMP代码即可脱壳。
1.png

2,对于验证程序是否加壳,使用Ollydbg工具查看入口点代码是否对应相关编译语言入口点代码,有对应(比如说前两句代码为call+jmp代码则为VS编译的无壳程序)则为对应编译语言的无壳程序;都不对应阿即说明该程序为加壳程序,此时进而查询“程序区段”和“加载模块”的特征。确认其加的是什么壳,以及是什么语言编译。这样理解是否错误有问题呢?
3,对于区段信息的理解,对于VC6无壳程序的区段有固定,为.text、.rdata、.data和.rsrc。 但是我对论坛教程案例(吾爱破解论坛学习脱壳实例_UPX.exe)后的程序区段:想问为什么区段变化了呢?
脱壳后.png

4,在学习ximo 脱壳教程中,学到第二节(2、手脱ASPACK壳),我用Ollydbg打开  QQ个性网名昵称查看器.exe 程序界面不一样,程序入口点代码不一致。对比如图:
对比.png

点评

所以你看下我贴的链接,第一课基本都讲解了。  详情 回复 发表于 2020-1-31 23:06
 楼主| 雪落传承 发表于 2020-1-31 19:39
mwy1024 发表于 2020-1-30 21:20
能运行就表示脱壳成功了,为何你一定要走到push ebp呢,不同程序写的入口不一定是这句,

确定是出栈?

小白正在学习中push 代码 应该是压栈把,但是也不知道是啥意思
 楼主| 雪落传承 发表于 2020-1-31 19:45
topcookie 发表于 2020-1-30 21:40
应该是没脱成功,论坛里有教程看看照着走一遍

脱壳成功的定义是否如此理解,把脱壳后的程序使用Ollydbg工具调试,看其程序入口点代码是否对应编译语言的固定程序入口点代码,如果一致就说明脱壳成功,另外我脱壳之后程序的区段没发生变化,跟原来未脱壳的区段一样,但是跟对应编译语言的无壳程序区段不一致,这是不是说明程序脱壳还是没有成功(也就是说通过程序区段也是可以验证是否脱壳成功的)
脱壳后.png
Hmily 发表于 2020-1-31 23:06
雪落传承 发表于 2020-1-31 19:38
感谢回复,纯小白最近才刚开始学习破解,没有编码基础的,这里有个疑问想理解一下,我回顾学习了您发表的 ...

所以你看下我贴的链接,第一课基本都讲解了。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-25 12:21

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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