小白初试某贴吧工具UPX脱壳及破解
本帖最后由 729341299 于 2019-12-17 16:35 编辑很惭愧,注册了吾爱十一年。。。。到现在才第一次想起来学
也是多得最近有软件需求,故提起了尝试破解的心思,大佬勿喷,请多指教
以下正文:
1. PEID查壳:嗯,感觉应该是UPX,直接拖入OD
2. 拖入OD,提示分析,点否
3. 载入后看到压栈指令pushfd,使用esp定律,F8单步
3. 可以看到寄存器窗口ESP产生变化,选中后右键数据窗口跟随,在HEX数据窗口选中一行数据,设置硬件断点
4. 设置断点后F9运行,F8单步步入,发现单步后一直在循环,不死心继续F8,循环大概20次左右自动跳出,找到OEP
(这里个人觉得很奇怪,正常软件F9后肯定运行跑起来,但这里一直循环,也算误打误撞找的oep,希望有大大能给解释下?)
5. 找到OEP,右键脱壳,记住红框处修正地址,不勾选重建输入表,确定导出脱壳程序
6. 这个时候还打不开,使用importREC重建,选中调试进程,在OEP处输入刚刚记住的修正地址,记得加上00,然后IAT自动搜索 -- 获取导入表 -- 修正转储 --保存到原目录
顺序如图
7. 再查壳,VC++,程序正常运行,但还是好奇为什么EP段显示UPX0?
8. 第一次尝试破解
运行程序看看,这是个贴吧发帖工具,本身不收费,但插件收费,随便下个插件,打开发现有注册窗口,随意输入显示激活码无效,就拿这个查询看看
9. 拖入OD,右键中文搜索 - 智能搜索,搜索“激活码无效”,还真的有,在附近找的“激活成功”字样,先双击看看“激活码无效”
10. 发现其上方有个je跳转,尝试把它改成jmp无条件跳转,运行看看,发现还是显示激活码无效
发现还是显示激活码无效
11. 没有头绪,尝试直接从激活成功入手,je改成jmp,运行看看,
还是显示激活码无效
12. 换一种方式,尝试暂停找窗口,载入OD,直接F9跑起,打开程序到注册窗口,OD里点暂停,按K调出堆栈窗口
这里本人不太会看,只能挨个测试,选中最后一个有结构的,右键显示调用
13. 直接在第一个retn处F2下断,然后F8单步走一遍call到retn,再F7步入
14. 来到这里,给第一个call下断,F9运行程序,发现程序无法运行
15. 2019年12月17日重新编辑更新破解历程
15.1 暂停法是对的,但前面方法有误,其实直接用插件 -- API断点设置工具 -- 常用断点设置,勾选“messagesboxA”下断即可
15.2 此时回到软件,打开界面,点击注册,会自动断下
15.3 进行回溯,F8单步向下,跑到上图第二个call处程序弹出“激活码失效”框,点击确定,回到OD继续单步,retn返回后,直接ctrl+F9,执行到返回,再继续F8单步,到达dll模块
15.4 找段首下断,取消原messagesboxA断点,在过程中会发现“激活成功”字样,再往上会发现服务器验证链接,从段首F8单步向下,到达验证链接下的第一个call时会卡住
据查询到的资料应该是发验证包,此时可以F12暂停,再F9跑起程序即可成功步过
15.5 继续单步,在“激活成功”字样下方发现非常长的一个跳转,直接跳过一大片代码,来到最初验证失败的代码段,这应该就是大佬们常说的关键跳?
15.6 尝试在寄存器双击Z的1改成0,让跳转失效,F9运行,成功注册
15.7 至此,把je改为jnz,保存dll文件,替换程序插件目录文件,打开可顺利注册
16. Q&A:
Q1:至此又尝试换了其他几个堆栈显示调用,发现都无法找到注册框,小白不知应如何进行下一步,请大佬们指教?
A1:感谢@朱朱你堕落了 耐心教导!多得有大佬协助,勉强算挤进脱破门缝
Q2:上方第四点找OEP的问题,为何循环了几十次才出来OEP?是不是方法有问题?
A2:感谢@Ps出来的小赵 大佬解答,快捷键F4直接可以运行到指定位置
Q3:上方第七点提到的查壳问题,脱壳后查壳EP段显示UPX,是什么原因导致?程序可以正常运行,会影响后续破解?
A3:目前仍不知是否会有影响,但暂时判定为应该是手动脱壳拖不干净,使用脱壳机后脱壳检测为.text
Q4:关于15.4,“此时可以F12暂停,再F9跑起程序即可成功步过”其原理本人仍不清楚,@朱朱你堕落了 大佬解释也可以点T恢复线程,但仍不能理解,希望大佬们指教
A4:待解答
最后附上程序,感谢吾爱的大佬们教导,之后也会继续学习!
链接: https://pan.baidu.com/s/1J1fhbbxpx0kpmbWkCiwSNQ 提取码: 17xs
朱朱你堕落了 发表于 2019-12-14 13:28
虽然出来提示让注册的框了,但是这个插件也没发现,不注册就不让使用啊。。
软件可以弹出,但实际功能是无法使用的,你看这是个简单的去重工具
但每点一次插件功能都会提示注册框
而且功能不生效
破解这个收费插件的话,在我看来,不应该从exe下手,因为收费插件是外部下载的,即那个dll文件。exe文件只是调用这个dll,收不收费的和exe没什么关系。所以我觉得应该从DLL破解入手,而不是在exe那边绕。同为萌新,互相学习一下:loveliness: 像upx这类的压缩壳,有现成的脱壳器。像se的加密壳,就带壳破解吧。 有时间我也研究研究,简单的壳子用脱壳机。既然可以运行,应该不会影响破解。不知道你的od是什么版本,可以用自带的插件断点,bp消息框。然后在试试。不要着急!慢慢来 楼主不知道有个东西叫F4吗- -。。。 我以为说的是upx浏览器{:1_925:} 虽然出来提示让注册的框了,但是这个插件也没发现,不注册就不让使用啊。。
哪里不能使用,说明一下,截个图啥的。总得让人知道软件限制所在吧。
wasdzjh 发表于 2019-12-14 12:14
有时间我也研究研究,简单的壳子用脱壳机。既然可以运行,应该不会影响破解。不知道你的od是什么版本,可以 ...
嗯嗯,我也还在尝试,问下大佬,bp是什么。。。 Ps出来的小赵 发表于 2019-12-14 12:31
楼主不知道有个东西叫F4吗- -。。。
F4是在哪一步使用? 729341299 发表于 2019-12-14 13:33
F4是在哪一步使用?
4. 设置断点后F9运行,F8单步步入,发现单步后一直在循环,不死心继续F8,循环大概20次左右自动跳出,找到OEP
单步的时候一般向上回跳的直接下面F4……不要傻傻的一直F8 - -。。。