首页
社区
课程
招聘
[求助]超级无敌菜菜菜鸟的第一次学破解遇到了困惑。
发表于: 2005-4-26 17:19 4193

[求助]超级无敌菜菜菜鸟的第一次学破解遇到了困惑。

2005-4-26 17:19
4193
【标  题】超级无敌菜菜菜鸟的第一次学破解遇到了困惑,哪位大哥可以给
            我一点提示!!!!!!!!
【日  期】2005-4-26
【使用工具】H-W32Dasm    Hiew
【平  台】WinXP sp1
【目标程序】Windows设置大师2005
【作者声明】只是感兴趣,没有其他目的。第一次学破解,就拿它来练一练。
            但是就是它也让我很困惑,各位大侠看了不要笑,毕竟我还只是
            一只超级无敌菜菜菜鸟!
正文:
    小弟是破解的一个门外汉,对加密与解密很感兴趣,也很想学它。所以就把我们看雪论坛里的精华1-6有关初学者的东西给大致看了看,也看了论坛里写给新手们的文章。近日小弟自己觉得应该找个东西来练练手了,所以就拿《Windows设置大师2005》开刀了。在练手的过程中遇到了问题,想让大家帮我看看,然后给我点提示,谢谢~~~~~~!!

   首先我用HA_PEiD0.93汉化版看它是否加了壳,好家伙果然加了,这样更好,又可以把学习和实践结合起来了。是ASPack 2.12 -> Alexey Solodovnikov  我用Quick Unpack 0.7汉化版去掉其壳,再用H-W32Dasm分析脱壳后的文件,找到“您输入的注册码不正确,请重新输入或者与软件作者联系!”并顺着向上可以看到这样一个跳转:
00507C52 752C                   jne 00507C80
在H-W32Dasm下可以看到它的offset是00107052,我再用Hiew打开它,并找到00107052,我尝试把jne给改成je,保存并退出。重新启动Windows设置大师2005在输入激活码的地方,注册姓名输入yejun125,激活密码输入123321。点注册码验证,程序跳出这样一个提示信息:注册成功!感谢你对我们的支持!请重新启动软件以验证注册码!点确定,程序自动关闭,再打开Windows设置大师2005,依然是试用版,刚刚的修改并没有成功。看来还有其他地方没有修改到。
再用H-W32Dasm找到“感谢你对我们的支持!请重新启动软件以验证注册码!”可以看到如下代码:
* Possible StringData Ref from Code Obj ->"注册成功! 注册信息为: 用户姓名:"
                                  |
:00507C80 68687D5000              push 00507D68
:00507C85 8BB320030000            mov esi, dword ptr [ebx+00000320]
:00507C8B FF7648                  push [esi+48]
:00507C8E 68947D5000              push 00507D94

* Possible StringData Ref from Code Obj ->"公    司:"
                                  |
:00507C93 68A07D5000              push 00507DA0
:00507C98 FF7654                  push [esi+54]
:00507C9B 68947D5000              push 00507D94

* Possible StringData Ref from Code Obj ->"授权密码:"
                                  |
:00507CA0 68B47D5000              push 00507DB4
:00507CA5 FF765C                  push [esi+5C]
:00507CA8 68947D5000              push 00507D94

* Possible StringData Ref from Code Obj ->"感谢您对我们的支持!请重新启动软件以验证注册码"
                                        ->"。"
                                  |
:00507CAD 68C87D5000              push 00507DC8
:00507CB2 8D45FC                  lea eax, dword ptr [ebp-04]
:00507CB5 BA0A000000              mov edx, 0000000A
:00507CBA E851D0EFFF              call 00404D10
:00507CBF 6A40                    push 00000040
:00507CC1 8B45FC                  mov eax, dword ptr [ebp-04]
:00507CC4 E87FD1EFFF              call 00404E48
:00507CC9 8BD0                    mov edx, eax

我认为要想破了它就应该是上面两个CALL有问题,不知道我的想法对不对。

来到第一个call  00404D10处可以看到如下代码:
:00404D10 53                      push ebx                           //压入S
:00404D11 56                      push esi                           //压入V
:00404D12 57                      push edi                           //压入W
:00404D13 52                      push edx                           //压入R
:00404D14 50                      push eax                           //压入P
:00404D15 89D3                    mov ebx, edx                       //把ebx给改为R,它为什么要改呢?
:00404D17 31FF                    xor edi, edi                       //这是个异或,不知道具体是什么意思和怎么回事,汗~~!是                                                                       查验edi是否一样吗?如果是一样,它会怎么处理,不一样呢?
:00404D19 8B4C9414                mov ecx, dword ptr [esp+4*edx+14]   // 这里我也看不懂,它到底要传一个什么值啊?。
:00404D1D 85C9                    test ecx, ecx                       //测试ecx是否相等,等就跳到00404d72
:00404D1F 7406                    je 00404D27   
:00404D21 3908                    cmp dword ptr [eax], ecx          //比较dword ptr [eax], ecx,不等就跳00404d27
:00404D23 7502                    jne 00404D27
:00404D25 89C7                    mov edi, eax                      //再把eax传给edi

汇编没有学好,现在还搞忘了很多,如果我阅读程序有误,请一定帮忙指正,谢谢~~!

再来到第二个call,看到如下代码:
:00404E48 85C0                    test eax, eax
:00404E4A 7402                    je 00404E4E
:00404E4C C3                      ret                                //这是返回一个什么值?

:00404E4D 00                      BYTE 0                             // 看不懂。是置0就没有注册成功吗?但是我把它给改为1还是                                                                        不行。

当我尝试把
             :00404E4A 7402                    je 00404E4E

给改为       :00404E4A 7402                    jne 00404E4E

保存后再运行程序时系统弹出一个发送错误报告,点击不发送,又弹出一个Error:Runtime error  217 at 0041c361。

    说明这个方法行不同,可是我到这里已经无法再干下去了。我个人觉得:第一个call,就是真正的注册码所在,但是我有些看不懂,也就无法把真注册码给找出来。第二个call,主要是测试输入的注册码和真注册码是否一样!请大家帮我看看,我下一步应该怎么办,还有我目前所掌握的知识肯定不够,我应该恶补哪些知识呢?不要怕打击我,该怎么说就怎么说,我承受得起!就让暴风雨来得更猛烈些吧~~~~!

    不知道我的理解是否正确,我自己感觉某些地方理解得有误,可能在大家眼里我这个人真是无愧于超级无敌菜菜菜鸟的称号!但是我还是有信心,每一个菜菜菜鸟,菜菜鸟,菜鸟,老鸟,老老鸟到超级无敌老老鸟都是这样走过来的。路都是这样走过来的,努力就会成功,对吧!

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
怎么显示得有点乱啊,在预缆时是好的,到正式发表就有误啊???
2005-4-26 17:22
0
雪    币: 221
活跃值: (137)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
3
从你的分析来看,是程序在启动时会进行验证你输入的注册码是否正确。因此还得把重启验证的地方也要搞了才行的
2005-4-26 18:30
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我在哪里才可以找到重启验证这个代码呢,这个不像找注册码出错这些那么容易啊,望大哥多多指点一下小弟。。
2005-4-26 18:50
0
雪    币: 221
活跃值: (137)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
5
我也还很菜。这个你自己从看雪教程中看看吧,那里有很多的实例。
2005-4-26 19:11
0
雪    币: 442
活跃值: (1246)
能力值: ( LV12,RANK:1130 )
在线值:
发帖
回帖
粉丝
6
2005-4-26 19:20
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
谢谢,先下回去看看,太感谢了。太感谢了。太感谢了。
2005-4-26 19:48
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
就改这里应该是可以的.你看以下有那些地方条到注册错误和正确的地方!
你的汇编还有待加强,不过我也只是一只菜鸟!
2005-4-26 21:21
0
游客
登录 | 注册 方可回帖
返回