吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 11333|回复: 20
收起左侧

[转贴] 热带鱼水族箱屏幕保护程序V3.0 爆破解步骤

[复制链接]
ACracker 发表于 2012-10-11 13:30
本帖最后由 ACracker 于 2012-10-11 16:39 编辑

【文章名称】:热带鱼水族箱屏幕保护程序V3.0 爆破解步骤 超详细
【使用工具】:PEID,OD,PE Explorer1.99 R5
【软件地址】:http://www.duote.com/soft/252.html
【原文链接】:http://pleasereverse.me/thread-85-1-1.html


本来是原创的,但是先发到朋友论坛上面去了,就当转的吧。
PEID 查壳
1.jpg


比较简单的壳。
ESP定律后,修复一下就好了。
再次查壳:
Microsoft Visual C++ 6.0
OD运行程序,出现:
2.jpg


这时后会发现后面黑色部分挡住了OD窗体,不能进行调试,首先要解决这个问题。
下断:
BP CreateWindowExA
F9运行,断下,堆栈窗口如下:

3.jpg



第一行回车,即:反汇编窗口跟随。
出现如下代码:
004066A4 |. 56 |push esi ; /lParam
004066A5 |. 55 |push ebp ; |hInst
004066A6 |. 8B11 |mov edx,dword ptr ds:[ecx] ; |
004066A8 |. 8BAE F0D30000 |mov ebp,dword ptr ds:[esi+0xD3F0] ; |
004066AE |. 6A 00 |push 0x0 ; |hMenu = NULL
004066B0 |. 55 |push ebp ; |hParent
004066B1 |. 8B79 04 |mov edi,dword ptr ds:[ecx+0x4] ; |
004066B4 |. 895424 24 |mov dword ptr ss:[esp+0x24],edx ; |
004066B8 |. 897C24 28 |mov dword ptr ss:[esp+0x28],edi ; |
004066BC |. 8B41 08 |mov eax,dword ptr ds:[ecx+0x8] ; |
004066BF |. 894424 2C |mov dword ptr ss:[esp+0x2C],eax ; |
004066C3 |. 2BC2 |sub eax,edx ; |
004066C5 |. 8B49 0C |mov ecx,dword ptr ds:[ecx+0xC] ; |
004066C8 |. 894C24 30 |mov dword ptr ss:[esp+0x30],ecx ; |
004066CC |. 2BCF |sub ecx,edi ; |
004066CE |. 51 |push ecx ;                                |Height
004066CF |. 50 |push eax ;                                |Width

004066D0 |. 57 |push edi ;                                 |Y
004066D1 |. 8B3D CC824900 |mov edi,dword ptr ds:[<&user32.CreateWi>; |USER32.CreateWindowExA
004066D7 |. 52 |push edx ;                                |X
004066D8 |. 68 00000090 |push 0x90000000 ; |Style = WS_POPUP|WS_VISIBLE
004066DD |. 68 8C604D00 |push Unpack_0.004D608C ; |WindowName = "SereneScreen Marine Aquarium 3"
004066E2 |. 68 784C4C00 |push Unpack_0.004C4C78 ; |Class = "D3DSaverWndClass"
004066E7 |. 6A 08 |push 0x8 ; |ExtStyle = WS_EX_TOPMOST
004066E9 |. FFD7 |call edi ; \CreateWindowExA
可以看到窗体的宽和高分别为eax,和ecx,可能新手朋友会说直接 两个push 0,但是改了后长度就不对了,push 0 占了两个字节,就会覆盖下面的代码,我这里改的是蓝色的两句,程序运行到蓝色的部分时,edi edx都为0所以那两句貌似没有什么用,我就改成了xor eax,eax 和xor ecx,ecx。保存运行就没有黑色的部分了,这个破解后记得改回来。

破解正式开始。
既然是爆破就直接掉过软件注册窗口吧。
用资源工具 PE Explorer 可以找到注册窗口的资源。
4.jpg


可以看到资源ID为:124 即0x80,那么我们下断:BP DialogBoxParamA[ESP+8]==0x80
F9运行,断下,堆栈窗口第一行回车,即:反汇编窗口跟随。
来到如下代码:
5.jpg



这个应该就是 创建注册窗口的代码,那么我跳过这段代码就可以了。可以看到一共4个地方调用了。
在“本地调用来自.....” 右键 转到40D526 ,来到如下代码:

6.jpg



可以看到上面有一个跳转跳过了这个CALL,那么将jge 改为jmp 即可。当然也可以找到上面比较条件,盘根问底找到最完美的方法。
依葫芦画瓢,将其他3个也改了,不过第4个调用 ,是来自switch case,可以将这个case 直接跳到default case里面去,或者直接ret。我就不截图了,怎么改了。
4个地方改完后,保存运行一下,果然没有出现 软件注册这个窗口了,直接进入屏保效果了。
貌似可以用了,再看看有没有什么功能限制。
右击SCR文件 配置 鱼类设置,出现下图:
7.jpg




过软还是有功能限制。

可以看出右上角那些鱼是图片,那我们还是去资源文件中找找,看看有没有什么线索。
8.jpg




果然在资源文件 中找到了,ID为124,0x7c。
还有一样图片中没有英语的图片,ID 为121,0x79,这张图片是注册之后使用的。

OD 中 CTRL+F 输入 push 0x79回车
来到

9.jpg
0040CD2A |. 833D A0A95500 02 cmp dword ptr ds:[0x55A9A0],0x2
0040CD31 |. 7D 0B jge Xcracked_.0040CD3E
可以看到jge 如果不跳 就是失败的图片,跳就是成功图片,那么我们将jge 改为jmp,保存运行,看看效果。

运行后,发现图片倒是换了,但是上面的鱼可以点击,下面的鱼不行。

看来还有其他地方对ds:[0x55A9A0]中值进行比较。

那么对0x55A9A0下硬件访问断点 BYTE 的。
F9运行程序,断下
0041E7AF |. C705 A0A95500 00000000 mov dword ptr ds:[0x55A9A0],0x0
0041E7B9 |. E8 7B970600 call Unpack.00487F39
可以看到这里是初始化0x55A9A0这个全局变量。
前面图片那里是与2比较,那么将它的初始值改为2 ,试试。
运行,一切正常,所有功能都可以用。
既然他是全局变量,那前面注册窗口的判断条件也可能是他。
脱壳后的文件0041E7AF 直接改
0041E7AF |. C705 A0A95500 00000000 mov dword ptr ds:[0x55A9A0],0x2
果然还是正常运行,没有功能限制。

后记:做共享软件,不要将注册与否的标志全局储存,最好将注册码存放多个地方,需要进行注册判断的时候在不同的地方拉取注册码进行判断。

小菜学破解,不对的地方,还请指出。


贴顶有原版软件地址,有兴趣的自己试试。



免费评分

参与人数 1热心值 +1 收起 理由
Chief + 1 欢迎分析讨论交流[吾爱破解论坛]有你更精彩.

查看全部评分

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

334086882 发表于 2012-10-11 13:45
这个是什么东西 我来看看
zm1989 发表于 2012-10-11 14:50
 楼主| ACracker 发表于 2012-10-11 15:45
zm1989 发表于 2012-10-11 14:50
以前用过一次   非常漂亮

的确不错,是很漂亮。
Chief 发表于 2012-10-11 16:07
整体上很详细,
欢迎继续讨论分析。
cheng511154478 发表于 2012-10-11 23:15
支持下。。
郁金香 发表于 2012-10-11 23:47
楼主说的很详细很精彩
guangyu0741 发表于 2012-10-12 10:03
哈哈   先顶贴标记   待会下班回来操作一下     
O_o 发表于 2012-10-12 14:17
不过第4个调用 ,是来自switch case,可以将这个case 直接跳到default case里面去,或者直接ret

都进入case了,直接retn 怕是会堆栈不平衡吧。
nmbtangel 发表于 2012-10-12 14:36
果然不错 谢谢了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-25 16:25

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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