首页
社区
课程
招聘
[旧帖] [原创]学习之路:破解QQ聊天记录查看器 0.00雪花
发表于: 2009-6-16 16:23 2838

[旧帖] [原创]学习之路:破解QQ聊天记录查看器 0.00雪花

2009-6-16 16:23
2838
刚学破解不久,破解这个程序花了6个多小时
       整理一下把它写出来,希望能对大家有些许帮助。
       PS:我在整理的时候,想从头再回现一下我的思路,所以把UDD文件删了想从头再来一遍,结果居然回想不起来,我怎么找到断点的了,又花了两小时才想出来

工具:OD2.0 http://bbs.pediy.com/showthread.php?t=79867新年大礼包里面的

首先运行了一遍,不注册只能用两次,不过可以无限注册,注册码错误的话,将弹出一个注册号无效的框。
OD 载入,首先我尝试了一下搜索参考字串(在反汇编区右键search for,然后选择All referenced strings),先搜了一下“注册号无效”,没搜到。
重新载入,F9来注册界面,随手输了一个1234567890123,注册失败,搜这个注册号,也没搜到。
ctrl+n 搜过模块名称,先搜了GetDlgItem,没有,又搜GetWindowText,搜到了一个GetWindowTextA,右键find references,找到两个,全设上断点,F9运行,仍然把刚刚的1234567890123输进去,点注册,结果直接弹出注册码无效,没断下来,点确定后也没断下来。。。。
想想既然弹出窗口,应该有MessageBox吧,搜到,再右键Find References,搜到两处,全下断,再注册,居然也没断下来,点确定,OD也没反应,郁闷ING。
后来想想,我点确定的时候应该返回到一个地方,在这之前应该就是处理注册的过程。
ctrl+n 搜过模块名称,仍然搜MessageBox,搜到后在上面双击一下来到user32模块,停在一行,直接在这一行下断,ctrl + F2重新运行,一路F9来到注册界面,输注册号,点注册,这次断下来了,F8继续运行,直到弹出注册号无效(CALL MessageBoxExA),并停在CALL MessageBoxExA这一行,下面还有一句retn 10,应该就是返回了,看一下它返回到哪,说不定能得到一点有用的。OK,点确定,F8继续运行到retn,返回。如下图:

Address   Hex dump          Command                                  Comments
77D507EA    8BFF            MOV EDI,EDI    ; ID_X user32.MessageBoxA(hOwner,Text,Caption,Type)下断在这里
77D507EC    55              PUSH EBP
77D507ED    8BEC            MOV EBP,ESP
77D507EF    833D BC14D777 0 CMP DWORD PTR DS:[77D714BC],0
77D507F6    74 24           JE SHORT 77D5081C
77D507F8    64:A1 18000000  MOV EAX,DWORD PTR FS:[18]
77D507FE    6A 00           PUSH 0
77D50800    FF70 24         PUSH DWORD PTR DS:[EAX+24]
77D50803    68 241BD777     PUSH OFFSET user32.77D71B24
77D50808    FF15 C412D177   CALL DWORD PTR DS:[<&KERNEL32.Interlocke
77D5080E    85C0            TEST EAX,EAX
77D50810    75 0A           JNE SHORT 77D5081C
77D50812    C705 201BD777 0 MOV DWORD PTR DS:[77D71B20],1
77D5081C    6A 00           PUSH 0
77D5081E    FF75 14         PUSH DWORD PTR SS:[EBP+14]
77D50821    FF75 10         PUSH DWORD PTR SS:[EBP+10]
77D50824    FF75 0C         PUSH DWORD PTR SS:[EBP+0C]
77D50827    FF75 08         PUSH DWORD PTR SS:[EBP+8]
77D5082A    E8 2D000000     CALL MessageBoxExA
77D5082F    5D              POP EBP
77D50830    C2 1000         RETN 10(这里就是返回了)
返回后来到这里:(如图)


在上图
0046EFA2  |.  E8 BDFCFFFF   CALL 0046EC64    ; [QQ聊天记录查看器_5_3.0046EC64
这一行下断,这一句应该就是调用判断函数了
重新运行,

接上图:

到这里就可以直接暴破或者写出注册机了。

很早就知道看雪了,以前来这里时,啥也看不懂,知道要打基础,等打完基础回来,发现需要激活码了。。。。。
但愿此贴能给大家带来此许帮助,同时也能给我带个码

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (15)
雪    币: 46
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
看来【丁页】被和谐了,楼主写的很棒,不过我还是看不懂~

如果能够提供那个程序,咱依葫芦画瓢的弄一次也不错:)

丁页~
2009-6-16 16:39
0
雪    币: 87
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这个程序是在华军下的,呵呵,网址http://www.newhua.com/soft/47456.htm
2009-6-16 16:43
0
雪    币: 245
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
呵呵      顶顶
2009-6-16 19:15
0
雪    币: 51
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
多谢楼主了
我也试试去
2009-6-16 21:10
0
雪    币: 172
活跃值: (42)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
学习了...
2009-6-16 21:33
0
雪    币: 46
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我去下了这个软件,用OD试验了,怎么还是不行啊,修改 EAX 的值没什么用啊,程序不能运行。

MOV EAX,5

不是这样?:)
2009-6-16 22:28
0
雪    币: 87
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
不清楚你改的哪里。。。。。
如果是改0046EDD0     \8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]这里的话,我这改不了,显示
no room for this command(没空间)。。。。。。
这个算法其实很简单,先把注册码由字符转为数字,然后偶数位左移四位,再加上前一位,这样就产生了8个新的数,然后新数1和4异或之后与0x38H比较,2和8异或后与0X6EH比较,3和6异或后与0X4EH比较,5和7异或后与0X1A比较,全等则成功
2009-6-16 23:39
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
我也找出算法,并自己组了一个注册码注册了,但是不会编程,没有办法写注册机!
2009-6-25 12:56
0
雪    币: 431
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
这个软件我也有,只是没弄过,回去试一下!!
2009-6-25 13:04
0
雪    币: 54
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
高手啊  我看都看不懂 太深奥了 顶下
2009-6-25 13:44
0
雪    币: 89
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
我教你一种方法秒破这个软件。
首先来到你说的那个注册失败和成功那里
0046EF60  /.  55            PUSH EBP
0046EF61  |.  8BEC          MOV EBP,ESP
0046EF63  |.  83C4 F4       ADD ESP,-0C
0046EF66  |.  33C9          XOR ECX,ECX
0046EF68  |.  894D F4       MOV DWORD PTR SS:[EBP-C],ECX
0046EF6B  |.  8955 F8       MOV DWORD PTR SS:[EBP-8],EDX
0046EF6E  |.  8945 FC       MOV DWORD PTR SS:[EBP-4],EAX
0046EF71  |.  33C0          XOR EAX,EAX
0046EF73  |.  55            PUSH EBP
0046EF74  |.  68 1FF04600   PUSH QQ聊天记.0046F01F
0046EF79  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
0046EF7C  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
0046EF7F  |.  8D55 F4       LEA EDX,DWORD PTR SS:[EBP-C]
0046EF82  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
0046EF85  |.  8B80 F0020000 MOV EAX,DWORD PTR DS:[EAX+2F0]
0046EF8B  |.  E8 C495FCFF   CALL QQ聊天记.00438554
0046EF90  |.  8B55 F4       MOV EDX,DWORD PTR SS:[EBP-C]
0046EF93  |.  B8 E89C4800   MOV EAX,QQ聊天记.00489CE8
0046EF98  |.  E8 3353F9FF   CALL QQ聊天记.004042D0
0046EF9D  |.  A1 E89C4800   MOV EAX,DWORD PTR DS:[489CE8]
0046EFA2  |.  E8 BDFCFFFF   CALL QQ聊天记.0046EC64                      ;  关键CALL
0046EFA7  |.  A3 EC9C4800   MOV DWORD PTR DS:[489CEC],EAX
0046EFAC      833D EC9C4800>CMP DWORD PTR DS:[489CEC],0              ;  关键比较
0046EFB3      74 34         JE SHORT QQ聊天记.0046EFE9                  ;  明显关键跳
0046EFB5  |.  6A 00         PUSH 0
0046EFB7  |.  A1 E89C4800   MOV EAX,DWORD PTR DS:[489CE8]
0046EFBC  |.  E8 6B57F9FF   CALL QQ聊天记.0040472C
0046EFC1  |.  50            PUSH EAX
0046EFC2  |.  68 2CF04600   PUSH QQ聊天记.0046F02C                      ;  注册成功
0046EFC7  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
0046EFCA  |.  E8 05FCFCFF   CALL QQ聊天记.0043EBD4
0046EFCF  |.  50            PUSH EAX                                 ; |hOwner
0046EFD0  |.  E8 D37FF9FF   CALL <JMP.&user32.MessageBoxA>           ; \MessageBoxA
0046EFD5  |.  A1 E89C4800   MOV EAX,DWORD PTR DS:[489CE8]
0046EFDA  |.  E8 A1FEFFFF   CALL QQ聊天记.0046EE80
0046EFDF  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
0046EFE2  |.  E8 055DFEFF   CALL QQ聊天记.00454CEC
0046EFE7  |.  EB 20         JMP SHORT QQ聊天记.0046F009
0046EFE9  |>  6A 00         PUSH 0
0046EFEB  |.  A1 E89C4800   MOV EAX,DWORD PTR DS:[489CE8]
0046EFF0  |.  E8 3757F9FF   CALL QQ聊天记.0040472C
0046EFF5  |.  50            PUSH EAX
0046EFF6  |.  68 38F04600   PUSH QQ聊天记.0046F038                      ;  注册号无效
0046EFFB  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
0046EFFE  |.  E8 D1FBFCFF   CALL QQ聊天记.0043EBD4
0046F003  |.  50            PUSH EAX                                 ; |hOwner
0046F004  |.  E8 9F7FF9FF   CALL <JMP.&user32.MessageBoxA>           ; \MessageBoxA
0046F009  |>  33C0          XOR EAX,EAX
0046F00B  |.  5A            POP EDX
0046F00C  |.  59            POP ECX
0046F00D  |.  59            POP ECX
0046F00E  |.  64:8910       MOV DWORD PTR FS:[EAX],EDX
0046F011  |.  68 26F04600   PUSH QQ聊天记.0046F026
0046F016  |>  8D45 F4       LEA EAX,DWORD PTR SS:[EBP-C]
0046F019  |.  E8 5E52F9FF   CALL QQ聊天记.0040427C
0046F01E  \.  C3            RETN
0046F01F   .^ E9 804CF9FF   JMP QQ聊天记.00403CA4
0046F024   .^ EB F0         JMP SHORT QQ聊天记.0046F016
0046F026   .  8BE5          MOV ESP,EBP
0046F028   .  5D            POP EBP
0046F029   .  C3            RETN

,这个关键比较那里我们可以看出,他把EAX的值赋予DWORD PTR DS:[489CEC],再把DWORD PTR DS:[489CEC]与0相比,因为此时EAX=0,所以就跳了,跳了之后就注册失败,所以我们进去关键CALL.

既然EAX=0就跳,我们就让EAX不等于0.
进去关键CALL之后,
0046EC64      55            PUSH EBP
0046EC65      8BEC          MOV EBP,ESP
0046EC67      83C4 C8       ADD ESP,-38
0046EC6A  |.  8945 FC       MOV DWORD PTR SS:[EBP-4],EAX

就在段首吧,写上mov eax,1
                        retn
改后变成
0046EC64      B8 01000000   MOV EAX,1
0046EC69      C3            RETN
0046EC6A  |.  8945 FC       MOV DWORD PTR SS:[EBP-4],EAX
0046EC6D  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]

保存下,直接可以运行,没有注册框了
2009-7-28 14:26
0
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
13
恰巧前两天我也破了这个软件,我是爆破 没追算法
如下:
将0048633B     /75 3B         jnz     short 00486378

改成 0048633B     /75 3B         jz     short 00486378
ok咯  不会弹出注册的对话框咯。。。
我是思路是先查字符串,很简单就找到了然后 修改其前后的跳转语句
试了下  成功了。。。前后不到2分钟。。不过我这样是运气,哈哈
2009-7-29 10:14
0
雪    币: 89
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
你是怎么找到0048633B这里的?我和lz都是找的0046xxxx,而且0046xxxx直接改关键跳的话会显示注册成功,但是重启后又得叫你注册而不是注册版。直接进去改call就可以让他成注册版了.但是0048633B 这里我还没找到过。难道是重启验证的关键地方??
2009-7-29 10:19
0
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
15
回复楼上:我刚才说错了  我不是分析字符串找到那个跳转的(这几天研究的crackme有点多  混了)  我F8单步  一直到选择目录,然后选择完目录 会有一个 跳转  就是我说的地址咯。。。
2009-7-29 10:22
0
雪    币: 89
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
看了你这个思路..我真的汗颜了..
居然可以直接把注册框直接给跳过..
新思路呵呵..
2009-7-29 19:20
0
游客
登录 | 注册 方可回帖
返回
//