吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5407|回复: 4
收起左侧

[原创] bs#2kgenme 分析

[复制链接]
HadgeROL 发表于 2011-4-16 21:07
本帖最后由 Blackk 于 2011-4-16 21:26 编辑

【破文标题】bs#2kgenme 分析
【破文作者】Blackk
破解工具】OD,PEID,LordPE,IEC
【破解平台】XP SP3
------------------------------------------------------------------------
【破解过程】

用PEID查壳:FSG 2.0 -> bart/xt


脱壳就不多说了,懒得浪费时间咯(脱壳文件已经打包在一起了)...


//OD载入脱壳后的CM
00456BC0 > $ 55 push ebp
00456BC1 . 8BEC mov ebp, esp
00456BC3 . 83C4 F0 add esp, -10
00456BC6 . B8 D8694500 mov eax, 004569D8
00456BCB . E8 A0F0FAFF call 00405C70
00456BD0 . 6A 00 push 0 ; /Style = MB_OK|MB_APPLMODAL
00456BD2 . 68 186C4500 push 00456C18 ; |Title = "Nag for you"
00456BD7 . 68 246C4500 push 00456C24 ; |Text = "Hi, cracker!",LF,"Wellcome.. Just find out where the serial is checking,",LF,"and make a keygen. It's a good idea to write a solution and share it.",LF,"Be careful! There is a lot of bugs.."
00456BDC . 6A 00 push 0 ; |hOwner = NULL
00456BDE . E8 25FAFAFF call <jmp.&user32.MessageBoxA> ; \MessageBoxA

去NAG.........,这个方法太多啦,随便您怎么弄,我就不占空间啦.....


用OD搜索字符串插件,可以找到关键信息,双击:you're great,man!  向上找到入口点,F2
0045645C /. 55 push ebp
0045645D |. 8BEC mov ebp, esp
0045645F |. 83C4 F8 add esp, -8
00456462 |. 33C0 xor eax, eax
运行程序,输入用户名和假码,按下Register,程序假死,但是一直到程序正常运行我们的断点都没有断下.....

在命令行输入:bp Sleep, 回到程序领空, 向上找到代码入口:

00456660 /. 55 push ebp
00456661 |. 8BEC mov ebp, esp
00456663 |. 33C9 xor ecx, ecx
00456665 |. 51 push ecx
00456666 |. 51 push ecx
下好断点,按下Register,断点生效,单步向下走:
004566BE |. E8 A5F9FAFF call <jmp.&kernel32.lstrlen> ; \lstrlenA
004566C3 |. 83F8 08 cmp eax, 8 ; 比较用户名是否为8位
004566E3 |. E8 80F9FAFF call <jmp.&kernel32.lstrlen> ; \lstrlenA
004566E8 |. 83F8 08 cmp eax, 8 ; 比较注册码是否为8位

从这里我们知道用户名和注册码都应该为8位,重新输入:


用户名:MeBlackk

假码:   12345678


按Register,稍等,我们就看到程序断在了验证的入口:

0045645C /. 55 push ebp
0045645D |. 8BEC mov ebp, esp
0045645F |. 83C4 F8 add esp, -8
00456462 |. 33C0 xor eax, eax
00456464 |. 33D2 xor edx, edx


单步走,看算法:

0045646C |. 8B05 0C9C4500 mov eax, dword ptr [459C0C] ; 用户名的前4位放入EAX
00456472 |. 8B1D 109C4500 mov ebx, dword ptr [459C10] ; 用户名的后4位放入EBX
00456478 |. 31D8 xor eax, ebx ; EAX=EAX XOR EBX
0045647A |. 0D 0FF0F00F or eax, 0FF0F00F ; EAX=EAX OR 0FF0F00F
0045647F |. 01D8 add eax, ebx ; EAX=EAX+EBX
00456481 |. 8945 FC mov dword ptr [ebp-4], eax ; EAX放入EBP-4中
00456484 |. 8B05 189C4500 mov eax, dword ptr [459C18] ; 注册码的前4位放入EAX
0045648A |. 8B1D 1C9C4500 mov ebx, dword ptr [459C1C] ; 注册码的后4位放入EBX
00456490 |. 01D8 add eax, ebx ; EAX=EAX+EBX
00456492 |. C1C8 09 ror eax, 9 ; 右循环移位指令
00456495 |. 31D8 xor eax, ebx ; EAX=EAX XOR EBX
00456497 |. C1E8 02 shr eax, 2 ; EAX逻辑右移2位
0045649A |. 35 ADDE0FFF xor eax, FF0FDEAD ; EAX=EAX XOR FF0FDEAD
0045649F |. 8945 F8 mov dword ptr [ebp-8], eax ; EAX放入EBP-8
004564A2 |. 0345 FC add eax, dword ptr [ebp-4] ; EAX=EAX+EBP-4
004564A5 |. 2D 32C44C0C sub eax, 0C4CC432 ; EAX=EAX-0C4CC432


//注册判断

004564AB |. 3D 4C4C494B cmp eax, 4B494C4C ; EAX和4B494C4C比较.
004564B0 |. 75 2D jnz short 004564DF ; 不相等就Over....

修改标志位我们继续向下走

004564BA |. E8 99FBFAFF call <jmp.&kernel32.lstrcmpW> ; 字符串比较
004564BF |. 85C0 test eax, eax
004564C1 |. 75 15 jnz short 004564D8 ; 判断用户名的计算结果和注册码的计算结果是否相等....
依然修改标志位,向下走...

开心把,奇迹马上就要诞生了,真的.....奇迹发生了..
004564C3 |. 6A 00 push 0 ; /Style = MB_OK|MB_APPLMODAL
004564C5 |. 68 F0644500 push 004564F0 ; |you're great, man!
004564CA |. 68 04654500 push 00456504 ; |good work!
004564CF |. 6A 00 push 0 ; |hOwner = NULL
004564D1 |. E8 3201FBFF call <jmp.&user32.MessageBoxA> ; \MessageBoxA
这里明明有一个MessageBoxA,但是我们却并没有看到Box....经过分析我找到了关键点

         Ctrl+G:输入00457DD0,来到了这里:
00457DD0 58 pop eax
00457DD1 83C4 10 add esp, 10
00457DD4 50 push eax
00457DD5 C3 retn
         把这段修改为:
00457DD0 8BFF mov edi, edi
00457DD1 55 push ebp
00457DD4 8BEC mov ebp, esp
00457DD5 833D 1C04D777>cmp dword ptr [77D7041C], 0
保存修改后的代码,这样就可以进行爆破了...
------------------------------------------------------------------------
【破解总结】
1.算法看起来不是很难,但是想逆推出正确的注册码还是有一定的难度,像我这种菜鸟只能爆破...所以还请大牛指教怎样逆推注册码....
2.此CM最大的亮点就是MessageBoxA的代码修改,我这也是第一次遇到这样的CM,又给我开拓了知识啊...…………^^
------------------------------------------------------------------------
【版权声明】
额,这个...转载请保持文章的完整性,顺便说下出处吧^^...

分析有错误,请大牛指出
CM下载:
CM.rar (536.05 KB, 下载次数: 5)

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

头像被屏蔽
892644330 发表于 2011-4-16 21:44
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| HadgeROL 发表于 2011-4-17 08:16
回复 892644330 的帖子

你可以自己把休眠时间改小或者去掉...貌似对验证是没影响的....
   还有,就算逆推出正确注册码 如果没有修改Box那里...那么做的也是无用功
琦琦的爱 发表于 2011-4-17 08:59
 楼主| HadgeROL 发表于 2011-4-17 09:18
回复 琦琦的爱 的帖子

:)eee 至少目前为止我是这样想的,但是到现在还没逆推出..
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

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

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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