首页
社区
课程
招聘
[原创]闲暇时对COM Explorer 2.0进行算法分析
发表于: 2013-5-31 22:04 9048

[原创]闲暇时对COM Explorer 2.0进行算法分析

2013-5-31 22:04
9048

【文章标题】: 闲暇时对COM Explorer 2.0进行算法分析
【文章作者】: 星晨缘
【使用工具】: OD
【写作时间】: 2013-05-31
【分析难度】: 定位于跟我一样的入门朋友们,高手.前辈们就跳过吧
【文章说明】: 如转载,请保持原文,谢谢!
【作者声明】: 今天闲暇时在看雪里逛了下,看到一位朋友发了个爆破的文章,我就去下载过来看了下,发现安装后里边是有个Key的,但是并不完美,没有对字母大小写进行处理,用大写的话就算不出注册码来,对于好奇,就拿了OD分析了下...不周到或者那里写错之类还请指正,谢谢!本人只是个菜鸟,希望能得到大侠们的指点,谢过!

发了贴子之后才知道这个软件原先已经有人发过了(论坛帖子下方所提示的相似帖子看到的),
地址:http://bbs.pediy.com/showthread.php?t=72984
但我之前并没看过原先的那位大侠的作品,这也太巧了点了吧,人家的还是(时 间: 2008-09-17,21:52:33)的呢!


1.查壳,PEiD查到的是>>Microsoft Visual C++ 6.0 [Overlay],既然没壳就好办多了

2.打开软件,跳出注册窗体,试着注册个试试,
输入用户名:星晨缘,注册码:123456,弹出个MessageBox对话框,这样可以用bp MessageBoxA来下断

3.OD载入,F9运行,下MessageBox断点会断在注册码生成(或说比较)的之后,往回找注册码的算法可能会比较远,所以我在这是下:bp GetWindowTextA断点(比较好找注册码算法),

再次输入注册信息,点一下解锁,让OD给断下来了

760670ED >  6A 08           push    8		//断在这里,注意取消一下断点哦
760670EF    68 58710676     push    76067158
760670F4    E8 07150100     call    76078600
760670F9    8B7D 0C         mov     edi, dword ptr [ebp+C]
760670FC    33DB            xor     ebx, ebx
760670FE    3BFB            cmp     edi, ebx
004328C2  |.  FF7424 08     push    dword ptr [esp+8]                ; /Count
004328C6  |.  FF7424 08     push    dword ptr [esp+8]                ; |Buffer
004328CA  |.  FF71 1C       push    dword ptr [ecx+1C]               ; |hWnd
004328CD  |.  FF15 D0044500 call    dword ptr [<&USER32.GetWindowTex>; \GetWindowTextA
004328D3  |.  EB 12         jmp     short 004328E7                   ;  //执行后返回到这里,这里可以看到堆栈里有注册用户的信息
004328D5  |>  FF7424 08     push    dword ptr [esp+8]
004328D9  |.  8B10          mov     edx, dword ptr [eax]
004328DB  |.  8BC8          mov     ecx, eax
004328DD  |.  FF7424 08     push    dword ptr [esp+8]
004328E1  |.  FF92 84000000 call    dword ptr [edx+84]
004328E7  \>  C2 0800       retn    8
00408F07   .  68 FF000000   push    0FF
00408F0C   .  68 68994600   push    00469968                         ;  ASCII "星晨缘"
00408F11   .  8D8E A8040000 lea     ecx, dword ptr [esi+4A8]
00408F17   .  E8 9F990200   call    004328BB                         ;  获取用户名
00408F1C   .  68 FF000000   push    0FF                              ;  //执行单步返回到这里
00408F21   .  68 689A4600   push    00469A68                         ;  ASCII "123456"
00408F26   .  8D8E 6C040000 lea     ecx, dword ptr [esi+46C]
00408F2C   .  E8 8A990200   call    004328BB                         ;  获取注册码
00408F31   .  68 68994600   push    00469968                         ;  ASCII "星晨缘"
00408F36   .  8D4C24 0C     lea     ecx, dword ptr [esp+C]
00408F3A   .  E8 12600200   call    0042EF51                         ;  //有点可疑,F7跟进去看看,结果一场空
00408F3F   .  8B00          mov     eax, dword ptr [eax]
00408F41   .  68 98414600   push    00464198
00408F46   .  50            push    eax
00408F47   .  E8 33330100   call    0041C27F
00408F4C   .  83C4 08       add     esp, 8
00408F4F   .  8D4C24 08     lea     ecx, dword ptr [esp+8]
00408F53   .  85C0          test    eax, eax
00408F55   .  0F94C3        sete    bl
00408F58   .  E8 865F0200   call    0042EEE3
00408F5D   .  84DB          test    bl, bl
00408F5F   .  74 0F         je      short 00408F70                   ;  //这里跳了,既然跳了就让它跳吧,前边几个CALL都没什么收获
00408F61   .  6A 01         push    1
00408F63   .  8BCE          mov     ecx, esi
00408F65   .  E8 93A70200   call    004336FD
00408F6A   .  5E            pop     esi
00408F6B   .  5B            pop     ebx
00408F6C   .  83C4 08       add     esp, 8
00408F6F   .  C3            retn
00408F70   >  E8 1BFCFFFF   call    00408B90                         ;  //也跟进去看看,即上边的JE跳到这个CALL的
00408F75   .  85C0          test    eax, eax

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 5
支持
分享
最新回复 (13)
雪    币: 340
活跃值: (51)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
哎呀,就这样被石沉大海了呀.......

费了我一天时间的分析的写文章呢...

2013-6-1 20:47
0
雪    币: 89
活跃值: (185)
能力值: ( LV9,RANK:270 )
在线值:
发帖
回帖
粉丝
3
加油加油
2013-6-1 22:37
0
雪    币: 102
活跃值: (462)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
支持一下
2013-6-1 22:46
0
雪    币: 309
活跃值: (88)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
这个不错,顺道下载
2013-6-2 00:23
0
雪    币: 87
活跃值: (205)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
原创的??抄袭的吧???
2013-6-2 15:55
0
雪    币: 340
活跃值: (51)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
7
是吗,如果你要是这样想的话我确实也没啥话可说的,的确是在我发完这贴子之后在相似贴子里有提示,确实有几篇关于这个软件的文章...

不管你怎么想的,反正我已经获得了我自己的经验!其它的随它了,你说抄就抄的吧...
2013-6-2 17:53
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
新手学习了,楼主继续加油啊
2013-6-2 19:46
0
雪    币: 85
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
顶楼主,不错.
2013-6-2 21:31
0
雪    币: 45
活跃值: (55)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
10
好文章啊,先下个分析下
2013-6-3 08:11
0
雪    币: 45
活跃值: (55)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
11
为什么好像有很多call都没用的?
2013-6-3 20:16
0
雪    币: 340
活跃值: (51)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
12
不是没用,只是我们所要找的算法进不在哪些CALL里,你说的哪些CALL可能是软件作者用来处理其它的一些事物,或许是专门用到误导Cracker用的...

破解重点是找算法的地方,其它的代码看上去没用,估计只是针对算法而言!
2013-6-4 08:14
0
雪    币: 45
活跃值: (55)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
13
我刚才大概分析了一下知道了,有些call前面不知道干了什么,后面是创建了一个字符串的拷贝后面会用到的
另外的一些没用的call都是在用户名或者序列号错误的那个分支上,所以也没有什么迷惑Cracker的代码吧
2013-6-4 11:31
0
雪    币: 437
活跃值: (78)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
很不错,顶一个
2013-6-4 11:43
0
游客
登录 | 注册 方可回帖
返回
//