吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 10227|回复: 27
收起左侧

[分享] 拿个软件的分析下破解思路(高手请飘过)

[复制链接]
yanhuohua999 发表于 2009-10-20 01:57
[ 破文标题 ] 测试题一 By:yanhuohua999
[ 破文作者 ] yanhuohua999
[ 作者邮箱 ] whf16325.tom@tom.com
[ 破解工具 ] PEID、flyODBG
[ 破解平台 ] Windows XP SP2
[ 软件名称 ] MP3音频录音机 专业版
[ 原版下载 ] http://www.flywing.cn/mp3_audio_recorder.htm
[ 破解声明 ] 只提供交流思路,不提供补丁
-----------------------------------------------------
[ 破解过程 ]-----------------------------------------

MP3音频录音机 专业版

追码不重要,主要是对软件各个角度来做分析。

查壳:Borland Delphi 6.0 - 7.0 [Overlay]
没壳直接载入

今天就根据N大的序所学到的思路来把这个软件过一遍。。。。
运行看看软件,先认识下他,看看长的什么样子...(1.没有注册的启动有提示、2.注册试试发现有错误提示字符串 3.错误后有提示窗弹出4.没有注册的有功能限制 5.想到注册后正确序列号会保存到硬盘文件或注册表)大概先认识他就这么多,一会调试着看看。。。。这些可都是突破口啊

先方法1.字符串法:
     OD载入,不运行了,直接右键查找字符串,来看看有没有可用的信息。发现《感谢您注册我们的软件,请关闭本软件并重新运行,以使您的注册生效!》,这里不是注册失败,而是重新运行,和错误码错误的时候提示有冲突,想到这应该大概是序列号正确的时候的提示,一会验证下,双击,OD停在这里 005F83A8

005F83A8  |.  B8 4C845F00   MOV EAX,recorder.005F844C                ;  感谢您注册我们的软件,请关闭本软件并重新运行,以使您的注册生效!
005F83AD  |.  E8 6229E4FF   CALL recorder.0043AD14
005F83B2  |.  A1 C88D6400   MOV EAX,DWORD PTR DS:[648DC8]
005F83B7  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
005F83B9  |.  E8 A6540200   CALL recorder.0061D864
005F83BE  |.  8BC6          MOV EAX,ESI

------------------------------------------------------------
向上翻看下程序,观察下,代码如下:
005F832F  |.  E8 1011E1FF   CALL recorder.00409444
005F8334  |.  A1 C88D6400   MOV EAX,DWORD PTR DS:[648DC8]
005F8339  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
005F833B  |.  8B4D F4       MOV ECX,DWORD PTR SS:[EBP-C]
005F833E  |.  8B55 F8       MOV EDX,DWORD PTR SS:[EBP-8]
005F8341  |.  E8 F62B0200   CALL recorder.0061AF3C
005F8346  |.  84C0          TEST AL,AL
005F8348  |.  74 7D         JE SHORT recorder.005F83C7            大家注意这里有个跳过重启提示的JE,很可疑
005F834A  |.  A1 C88D6400   MOV EAX,DWORD PTR DS:[648DC8]
005F834F  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
005F8351  |.  8B88 08030000 MOV ECX,DWORD PTR DS:[EAX+308]
005F8357  |.  B2 01         MOV DL,1
005F8359  |.  A1 F42C4400   MOV EAX,DWORD PTR DS:[442CF4]
005F835E  |.  E8 41AAE4FF   CALL recorder.00442DA4
005F8363  |.  8BD8          MOV EBX,EAX
005F8365  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]
005F8368  |.  50            PUSH EAX
005F8369  |.  B9 14845F00   MOV ECX,recorder.005F8414                ;  username
005F836E  |.  BA 28845F00   MOV EDX,recorder.005F8428                ;  user_info
005F8373  |.  8BC3          MOV EAX,EBX
005F8375  |.  8B38          MOV EDI,DWORD PTR DS:[EAX]
005F8377  |.  FF57 04       CALL DWORD PTR DS:[EDI+4]
005F837A  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]
005F837D  |.  50            PUSH EAX
005F837E  |.  B9 3C845F00   MOV ECX,recorder.005F843C                ;  regcode
005F8383  |.  BA 28845F00   MOV EDX,recorder.005F8428                ;  user_info
005F8388  |.  8BC3          MOV EAX,EBX
005F838A  |.  8B38          MOV EDI,DWORD PTR DS:[EAX]
005F838C  |.  FF57 04       CALL DWORD PTR DS:[EDI+4]
005F838F  |.  8BC3          MOV EAX,EBX
005F8391  |.  E8 DEB7E0FF   CALL recorder.00403B74
005F8396  |.  A1 C88D6400   MOV EAX,DWORD PTR DS:[648DC8]
005F839B  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
005F839D  |.  8B4D F4       MOV ECX,DWORD PTR SS:[EBP-C]
005F83A0  |.  8B55 F8       MOV EDX,DWORD PTR SS:[EBP-8]
005F83A3  |.  E8 C0480200   CALL recorder.0061CC68
005F83A8  |.  B8 4C845F00   MOV EAX,recorder.005F844C                ;  感谢您注册我们的软件,请关闭本软件并重新运行,以使您的注册生效!
005F83AD  |.  E8 6229E4FF   CALL recorder.0043AD14
005F83B2  |.  A1 C88D6400   MOV EAX,DWORD PTR DS:[648DC8]

在上面有个可以跳过去重启提示的跳,有点可以,验证下什么作用,在他的上面2~3个call处下断,我们在005F8324处下断,然后运行程序注册测试下这个跳的作用~~~
运行程序后注册,然后断下来了,看到这个CALL的数据没,直接显示我们的用户名了,F8单步,
005F8324  |.  E8 E71DE8FF   CALL recorder.0047A110              用户名出现
005F8329  |.  8B45 EC       MOV EAX,DWORD PTR SS:[EBP-14]
005F832C  |.  8D55 F4       LEA EDX,DWORD PTR SS:[EBP-C]
005F832F  |.  E8 1011E1FF   CALL recorder.00409444               假码出现
005F8334  |.  A1 C88D6400   MOV EAX,DWORD PTR DS:[648DC8]
005F8339  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
005F833B  |.  8B4D F4       MOV ECX,DWORD PTR SS:[EBP-C]
005F833E  |.  8B55 F8       MOV EDX,DWORD PTR SS:[EBP-8]
005F8341  |.  E8 F62B0200   CALL recorder.0061AF3C            算法CALL      
005F8346  |.  84C0          TEST AL,AL
005F8348  |.  74 7D         JE SHORT recorder.005F83C7       关键跳。

大家看到没有这里不是明码比较,而是al 标识的比较,接着跟着程序跳走,提示错误,看来这里是真正的注册成功与否的比较。一会拿这里开刀。。。。这里只说找关键点的思路

方法2.假如没有字符提示怎么办?万能断点法!
OD重新载入程序,运行,下万能断点。注册,好断下来了
005F8324  |.  E8 E71DE8FF   CALL recorder.0047A110          断在这里
005F8329  |.  8B45 EC       MOV EAX,DWORD PTR SS:[EBP-14]
005F832C  |.  8D55 F4       LEA EDX,DWORD PTR SS:[EBP-C]
005F832F  |.  E8 1011E1FF   CALL recorder.00409444
005F8334  |.  A1 C88D6400   MOV EAX,DWORD PTR DS:[648DC8]
005F8339  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
005F833B  |.  8B4D F4       MOV ECX,DWORD PTR SS:[EBP-C]
005F833E  |.  8B55 F8       MOV EDX,DWORD PTR SS:[EBP-8]
005F8341  |.  E8 F62B0200   CALL recorder.0061AF3C
005F8346  |.  84C0          TEST AL,AL
005F8348  |.  74 7D         JE SHORT recorder.005F83C7
断下来后不是程序段,寄存窗口出现我们用户名,我们f8单步走,alt+f9回到程序,然后单步向下走走,看下程序的变化,
005F830B  |.  E8 001EE8FF   CALL recorder.0047A110
005F8310  |.  8B45 F0       MOV EAX,DWORD PTR SS:[EBP-10]
005F8313  |.  8D55 F8       LEA EDX,DWORD PTR SS:[EBP-8]
005F8316  |.  E8 2911E1FF   CALL recorder.00409444
005F831B  |.  8D55 EC       LEA EDX,DWORD PTR SS:[EBP-14]
005F831E  |.  8B86 14030000 MOV EAX,DWORD PTR DS:[ESI+314]
005F8324  |.  E8 E71DE8FF   CALL recorder.0047A110
005F8329  |.  8B45 EC       MOV EAX,DWORD PTR SS:[EBP-14]
005F832C  |.  8D55 F4       LEA EDX,DWORD PTR SS:[EBP-C]
005F832F  |.  E8 1011E1FF   CALL recorder.00409444
005F8334  |.  A1 C88D6400   MOV EAX,DWORD PTR DS:[648DC8]
看看。。和上面的一样,又回到关键的地方了。。


方法3.假如万能断点断不下来怎么办?窗体函数法!因为启动的时候有提示窗口弹出嘛!

OD重新载入程序,下函数CreateWindowExA、CreateWindowExW.

这个文字写不好写,我有空做个语音视频好了

我现在破解这个软件,大家看好。
还是来到关键call。处
005F8341  |.  E8 F62B0200   CALL recorder.0061AF3C             关键call。。
005F8346  |.  84C0          TEST AL,AL
005F8348  |.  74 7D         JE SHORT recorder.005F83C7            
005F834A  |.  A1 C88D6400   MOV EAX,DWORD PTR DS:[648DC8]
005F834F  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
005F8351  |.  8B88 08030000 MOV ECX,DWORD PTR DS:[EAX+308]
005F8357  |.  B2 01         MOV DL,1
005F8359  |.  A1 F42C4400   MOV EAX,DWORD PTR DS:[442CF4]
005F835E  |.  E8 41AAE4FF   CALL recorder.00442DA4
005F8363  |.  8BD8          MOV EBX,EAX
005F8365  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]
005F8368  |.  50            PUSH EAX
005F8369  |.  B9 14845F00   MOV ECX,recorder.005F8414                ;  username
005F836E  |.  BA 28845F00   MOV EDX,recorder.005F8428                ;  user_info
005F8373  |.  8BC3          MOV EAX,EBX
005F8375  |.  8B38          MOV EDI,DWORD PTR DS:[EAX]
005F8377  |.  FF57 04       CALL DWORD PTR DS:[EDI+4]
005F837A  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]
005F837D  |.  50            PUSH EAX
005F837E  |.  B9 3C845F00   MOV ECX,recorder.005F843C                ;  regcode
005F8383  |.  BA 28845F00   MOV EDX,recorder.005F8428                ;  user_info
005F8388  |.  8BC3          MOV EAX,EBX


回车跟进这个 call 关键call,
因为经过这个call后AL赋值,返回为0就跳到错误,返回为1就是正确的。。
跟进后发现
EBP=0012FDA8
局部调用来自 005F8341, 005F8A09, 0061AA85, 0061B48E
有四处调用,
0061AF3C   $  55            PUSH EBP
0061AF3D   .  8BEC          MOV EBP,ESP
0061AF3F   .  6A 00         PUSH 0
0061AF41   .  6A 00         PUSH 0
0061AF43   .  6A 00         PUSH 0
0061AF45   .  6A 00         PUSH 0
0061AF47   .  6A 00         PUSH 0
0061AF49   .  53            PUSH EBX
0061AF4A   .  56            PUSH ESI
0061AF4B   .  57            PUSH EDI
0061AF4C   .  894D F8       MOV DWORD PTR SS:[EBP-8],ECX
0061AF4F   .  8955 FC       MOV DWORD PTR SS:[EBP-4],EDX
0061AF52   .  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
0061AF55   .  E8 FE9EDEFF   CALL recorder.00404E58
0061AF5A   .  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]
0061AF5D   .  E8 F69EDEFF   CALL recorder.00404E58
0061AF62   .  33C0          XOR EAX,EAX




我们这样破解,把上面的代码汇编成:

0061AF3C   $  55            xor eax,eax         eax清空数据
0061AF3D   .  8BEC          MOV eax,1             直接赋值为1
0061AF3F   .  6A 00         retn                在这里就 直接返回了
0061AF41   .  6A 00         PUSH 0
0061AF43   .  6A 00         PUSH 0


运行后注册成功,保存修改后的软件,运行,直接注册过的嘿嘿

[ 破解总结 ]-----------------------------------------

有空给大家做视频好了,我打字太慢。。。
-----------------------------------------------------
[ 版权声明 ]
-----------------------------------------------------

免费评分

参与人数 1威望 +1 收起 理由
Hmily + 1 感谢发布原创作品,[吾爱破解]因你更精彩!

查看全部评分

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

20602060 发表于 2009-10-21 12:00
yanhuohua999同学,你把作业也发上来了啊?
winluo 发表于 2009-10-21 10:32
lyjxy 发表于 2009-10-20 19:45
Hmily 发表于 2009-10-20 10:39
暴力破解,分析的很好~
xujunlin5588 发表于 2009-10-20 08:32
好基础啊。新手学习了。
001 发表于 2009-10-20 03:02
虽然看不太懂,但顶你一下!
我本善良 发表于 2009-10-21 20:29
我也来学习下
syy111 发表于 2009-10-23 14:47
路过,本人是菜鸟
fandingshizhi1 发表于 2009-10-24 14:22
学习下·!···················
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-15 10:11

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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