manbug 发表于 2010-1-5 16:30:36

一字节爆破QQ2009密码监控器6.6,附其它方法。

最近闲着没事,就试着在天空软件站随便下了个软件练一下手,本人也是新手。希望和大家一起交流,一起学习。软件地址 :http://shareware.skycn.com/soft/27680.htm
好进入正题。首先用PEID查壳,无壳是用VC写的东西,心中窃喜,少了好多麻烦,
OD载入,记得一定要隐藏OD,我看了一下,里面有反调试代码。
F9直接运行一次,点软件注册,会提示注册码和订单号,输入后确定,提示重启验证,说明是重启验证类的,无非就是写文件或注册表了。
Ctrl+F2重新载入,右键查找当前模块中的名称,会显示出所有调用API,发现有名称位于 QQ2009密, 条目 159
地址=0043829C
区段=.rdata
类型=输入    (已知)
名称=KERNEL32.GetProfileStringAGetProfileStringA这个函数,是关键了,用BP GetProfileStringA下断,然后按F9两次查看堆栈处0012F1CC   0040D02C/CALL 到 GetProfileStringA 来自 QQ2009密.0040D02A
0012F1D0   02236E98|Section = "DDLook"
0012F1D4   00447464|Key = "notetext"
0012F1D8   00449834|Default = ""
0012F1DC   0012F1F0|ReturnBuffer = 0012F1F0
0012F1E0   00000100\BufSize = 100 (256.)没有文件名说明是读写的win.ini文件位于c:\windows中,打开这个文件查看尾部
C:\WINDOWS\system32\ddinfo.db=1

version=1021
auto=0
notetext=manbug
noteid=123123
update=0取消断点,F9直接运行后,点击设置登陆密码会提示“只有注册用户才能设置密码”,这就是关键了点确定后,用OD查找字符串。Ultra String Reference, 条目 214
Address=00409852
Disassembly=push    offset <aVSZSI>
Text String=只有注册用户才能设置登录密码!双击此行会来到代码处00409827   . /0F84 AF000000 je      <loc_4098DC>
0040982D   . |8D4C24 6C   lea   ecx, dword ptr
00409831   . |E8 3A350000   call    <sub_40CD70>
00409836   . |68 E06E4400   push    offset <aVSS>                  ;未注册提示
0040983B   . |8D8C24 040100>lea   ecx, dword ptr
00409842   . |C78424 140100>mov   dword ptr , 0
0040984D   . |E8 F6DD0100   call    <CString::operator=(char const *>
00409852   . |68 D0704400   push    offset <aVSZSI>                  ;只有注册用户才能设置登录密码!
00409857   . |8D8C24 080100>lea   ecx, dword ptr
0040985E   . |E8 E5DD0100   call    <CString::operator=(char const *>
00409863   . |8D4C24 68   lea   ecx, dword ptr
00409867   . |E8 A82F0200   call    <CDialog::DoModal(void)>
0040986C   . |8D8C24 040100>lea   ecx, dword ptr 看到代码上面的je没有,这就是关键点,当然改此处是没有作用的,我们继续向上看。00409800   .64:A1 0000000>mov   eax, dword ptr fs:    大家可以在这里下断分析
00409806   .6A FF         push    -1
00409808   .68 B7604300   push    <unknown_libname_159>
0040980D   .50            push    eax
0040980E   .A1 E4974400   mov   eax, dword ptr [<dword_4497E4>]   将4497E4的值送eax,那么4497e4就是关键点了,估计是个全局变量或静态变量了
00409813   .64:8925 00000>mov   dword ptr fs:, esp
0040981A   .81EC 04010000 sub   esp, 104
00409820   .85C0          test    eax, eax            这是比较eax是否为0,如果为0就已经注册了否则未注册
00409822   .56            push    esi
00409823   .8BF1          mov   esi, ecx
00409825   .6A 00         push    0
00409827   .0F84 AF000000 je      <loc_4098DC>
0040982D   .8D4C24 6C   lea   ecx, dword ptr
00409831   .E8 3A350000   call    <sub_40CD70>
00409836   .68 E06E4400   push    offset <aVSS>                  ;未注册提示
0040983B   .8D8C24 040100>lea   ecx, dword ptr
00409842   .C78424 140100>mov   dword ptr , 0
0040984D   .E8 F6DD0100   call    <CString::operator=(char const *>
00409852   .68 D0704400   push    offset <aVSZSI>                  ;只有注册用户才能设置登录密码!我们直接用命令 d 4497E4 会看到值为02,在此处下硬件访问断点,删除以前所有断点。Ctrl+F2重新载入程序,F9运行程序,发生硬件中断0040CEE6|.C746 14 02000>mov   dword ptr , 2          此处为给 4497e4赋值2 只要将2直接改为0就算爆破了
0040CEED|.E8 56A70100   call    <CString::operator=(char const *>我也跟了他的注册算法,很简单的,大家可以跟进去看一下。注册码是本地验证然后网络验证的。00407B27|.B9 D0974400   mov   ecx, offset <unk_4497D0>
00407B2C|.E8 DF560000   call    <算法部分。。。>                        ;这里面就是算法了,跟进
00407B31|.A1 28984400   mov   eax, dword ptr [<dword_449828>]其实还有一种不用爆破的方法更为简单,当然就要用到算法了,我已经算出来了一组:注册码:man5Rx3hG3aG
订单号:123'or'='or'注册码是可以算出来的,单是订单号是服务器上的。其实如果知道注入的朋友一定会对'or'='or'不陌生吧。呵呵,因为我找到了他的网站有注入漏洞,所以。。。嘿嘿
上面的注册码和订单号应该哪里都可以用吧,没有机器限制的。

归纳一下这次破解过程:
1.这个程序有一定的反调试能力,所以没有加壳,但是现在一些反调试对于OD N多牛人写的插件来说的话约等于无了。
2.软件作者就用一个全局变量来判断软件是否注册,实在是有点失策,写了那多反调试代码和算法。为什么能一字节破解呢?唉。
3.作为一个共享软件,服务器的判断地址居然还有注入漏洞,实在不该。

好了,就写到这了!本文目的在于交流,请不要用这个软件用于非法用途!

月之精灵 发表于 2010-1-5 18:36:13

进来学习下,

pao 发表于 2010-1-5 18:59:05

不错哈,楼主加油!

樊盟 发表于 2010-1-5 19:35:55

支持一下,今天上午就玩的这个软件/:017

345305411 发表于 2010-1-5 20:58:59

好像有人求这个的破解呢/:014 刚刚才看到一个帖子

yanhuohua999 发表于 2010-1-5 22:06:22

呵呵,。,。不错,,又学到新知识了

loway 发表于 2010-1-6 20:49:17

楼主对API真的很熟悉,佩服

my1229 发表于 2010-1-8 08:52:35

学习一下楼主的方法,多谢分享。

winluo 发表于 2010-1-8 11:07:37

水平真高,最需要这样详细有破文。感谢

walili 发表于 2010-1-8 13:14:18

真牛,向你学习,什么时候也把算法经我们分析一下啊。
页: [1] 2
查看完整版本: 一字节爆破QQ2009密码监控器6.6,附其它方法。