麻烦各位看一下这个软件,是智狐超级智力游戏集,是一个共享软件,未注册版本的限制是运行软件两分钟后游戏界面被黑屏替代,且弹出注册框,注册失败会弹出提示:错误的序列号。
麻烦各位帮忙破解一下,指点一下我到底哪里想错了。
软件的下载地址:(我没权限上传,对不起了,不过不大,不到一分钟可以下下来,就麻烦各位下一下了)
http://www.newhua.com/soft/42100.htm
我的思路:
1、从注册码破解入手,用w32找到“错误的序列号”消息的地址,再用od打开找到对应地址,在MessageBoxA函数前有一段代码:
004A47C5 /$ 8B4424 08 mov eax, [esp+8]
004A47C9 |. 56 push esi
004A47CA |. 85C0 test eax, eax
004A47CC |. 8BF1 mov esi, ecx
004A47CE |. 75 08 jnz short 004A47D8
004A47D0 |. E8 E2760000 call 004ABEB7
004A47D5 |. 8B40 10 mov eax, [eax+10]
004A47D8 |> 85F6 test esi, esi
004A47DA |. 74 04 je short 004A47E0
004A47DC |. 33C9 xor ecx, ecx
004A47DE |. EB 03 jmp short 004A47E3
004A47E0 |> 8B4E 1C mov ecx, [esi+1C]
004A47E3 |> FF7424 10 push dword ptr [esp+10] ; /Style
004A47E7 |. 50 push eax ; |Title
004A47E8 |. FF7424 10 push dword ptr [esp+10] ; |Text
004A47EC |. 51 push ecx ; |hOwner
004A47ED |. FF15 08654B00 call [<&USER32.MessageBoxA>] ; \MessageBoxA
004A47F3 |. 5E pop esi
004A47F4 \. C2 0C00 retn 0C
虽然可以看的懂MessageBoxA,但是前面那里那么多的跳转就不知道是做什么的了。我想把到MessageBoxA的跳转都改成跳过,但是没成功。
后来想只要把记时停了大概就好了,于是继续找,找到了settimer()函数和一个InvalidateRect()函数
0045C24D > \8B57 1C mov edx, [edi+1C]
0045C250 . 6A 01 push 1 ; /Erase = TRUE
0045C252 . 6A 00 push 0 ; |pRect = NULL
0045C254 . 52 push edx ; |hWnd
0045C255 . C787 C0000000>mov dword ptr [edi+C0], 0 ; |
0045C25F FF15 20664B00 call [<&USER32.InvalidateRect>] ; USER32.InvalidateRect
0045C265 . 8B47 1C mov eax, [edi+1C]
0045C268 . 6A 00 push 0 ; /Timerproc = NULL
0045C26A . 68 F4010000 push 1F4 ; |Timeout = 500. ms
0045C26F . 6A 01 push 1 ; |TimerID = 1
0045C271 . 50 push eax ; |hWnd
0045C272 FF15 24664B00 call [<&USER32.SetTimer>] ; USER32.SetTimer
0045C278 > 5F pop edi
0045C279 . 5E pop esi
0045C27A . 5B pop ebx
0045C27B . C2 0C00 retn 0C
我以为settimer是记时器,InvalidateRect是控制到时间后弹出Nag的函数,但是把他们都NOP掉以后问题还是不变
而且最开始还用到了SoftICE在MessageBoxA上设置断点,在“序列号错误”警告画面出现之前拦截到了,但是之后就跳到一个77d504ea的陌生的地址,和OD中设置断点拦截再运行后跳到的地址相同,也不知道那个地址是做什么的。
我的第一次破解就这样了……
弄了我好久了,真的不行了,麻烦各位指点一下,谢谢了~~~~
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课