首页
社区
课程
招聘
[旧帖] [邀请码已发][原创]申请邀请码-小菜搞破解 0.00雪花
发表于: 2010-11-5 19:35 1925

[旧帖] [邀请码已发][原创]申请邀请码-小菜搞破解 0.00雪花

2010-11-5 19:35
1925
文章标题:申请邀请码-小菜搞破解
文章作者: cnfixit
软件名称: Word文档图片转换工具 http://www.yuneach.com/soft/Doc2Pic11.exe
加壳方式: 无壳
编写语言: vb
使用工具: Ollydbg v1.1, IDA pro v5.5
操作平台: windows 2003 sp2
作者声明: 本文章只做学术交流,任何个人及组织不得用于商业目的,不得违背中国相关法律使用。

引子:
认识看雪也有好几年了,几年前无意中来到这里时,这个充斥着汇编代码的地方吓着我了,尽管小菜我多年前读过ibm 80x86汇编那本书,也还是被吓的不轻,基本就能看懂个mov啊jmp啊什么的,于是我退却了,把看雪当做神殿级论坛,小菜这样的人压根儿就没希望,如果当时能硬着头皮啃啃,今天也许又是另外一个样子,但是人生就是这样,谁知道呢,不是吗?多年以后的今天,首次在看雪发破文,尽管没什么技术含量,但至少可以这么安慰自己:

无论快还是慢,只要在前进就好。

关系拉完了,转入正题。

在各位高人的好文指导下,100kx巨大的压力下,小菜我终于按耐不住了,上某软件站随便下了个共享软件,安装完毕,顺手用peid看了看,没加壳,vb写的



运行之,就要注册,填入1234567890,注册,有提示,OD载入,搜索字符串,可惜,没找到……



于是乎,bp MessageBoxA,运行,没拦住,bp MessagxBoxExA,一样没拦住,小白嘴脸暴露无遗……

正当惆怅之际,发现OD的【断点】菜单里有个VB Api的子菜单,进去一看,噢,rtcMsgBox,试试看吧,断之,拦住了,来到了MSVBVM60.dll的领空,运行弹出对话框点掉以后,来到了这里

00413FC9   .  FF15 7C104000 CALL DWORD PTR DS:[<&MSVBVM60.#595>]     ;  MSVBVM60.rtcMsgBox

向前翻啊翻啊的来到了这个函数的入口:

00413B10   > \55            PUSH EBP
00413B11   .  8BEC          MOV EBP,ESP
00413B13   .  83EC 0C       SUB ESP,0C
00413B16   .  68 661B4000   PUSH <JMP.&MSVBVM60.__vbaExceptHandler>  ;  SE 处理程序安装

就从这里开始,小菜在那些迷宫般的代码里转来转去转来转去转来转去,基本上没有什么进展,直到小菜看到一个多次飘过眼前却熟视无睹的函数后,事情才有了转机,它就是__vbaStrCmp,下断后大约摁了40来下F9(有时候小菜我还是很有耐心的- -),寄存器和堆栈窗口都迫不及待的显示出来了

0012EC44   00414DA5  返回到 Doc2Pic1.00414DA5 来自 MSVBVM60.__vbaStrCmp
0012EC48   00183524  UNICODE "6654623958"
0012EC4C   049C3ABC  UNICODE "123456678" //我随便输入的注册码

EAX 00183524 UNICODE "6654623958"
ECX 0012EC9C
EDX 00183524 UNICODE "6654623958"

运行软件,在注册码填入6654623958,注册成功。

也许有人说,你这也叫破文啊,撞大运吧你,没错,如果来看雪的第一篇帖子就这么敷衍了事,版主怎么会给邀请码呢(做猥琐状)?怎么样也得把算法找出来注册机写出来吧,于是,为了像模像样的完成这篇破文,小菜我历经辛酸饱受困苦咬牙切齿泪流满面的反复调试,从序列号的计算方法开始一点点的调试,终于在让人蛋疼的__vba函数海里有了新发现,原来它是在硬盘上做的文章,bp GetVolumeInformationA,拦住后不久就计算出了序列号,篇幅限制就不多说序列号的计算方法了,看注册码,在上面那个爆出注册码的__vbaStrCmp调用附近,发现这么一个call:

00414A40   $  55            PUSH EBP //函数入口
00414A41   .  8BEC          MOV EBP,ESP
00414A43   .  83EC 0C       SUB ESP,0C

00414D8E   .  E8 ADFCFFFF   CALL Doc2Pic.00414A40                    ;  关键!注意
跟进去后发现大量的求字符串长度、字符串比较、连接的函数和循环以及和数字的比较,于是坚定了这就是注册码计算部分的信心,奈何小菜逆向分析算法的能力实在太差,只好请出ida了,载入程序,直接转到上面那个函数的入口,G,填入00414A40 ,F5,多么熟悉的if-else啊

if ( _vbaStrCmp(Doc_0, v18) ) //Doc_0, Doc_1是我自己改的名字,刚分析出来的时候他们
{                                       //是内存中的dword数据,实际就是0.1.2.3….9
      if ( _vbaStrCmp(Doc_1, v18) )
      {
        if ( _vbaStrCmp(Doc_2, v18) )
       ……         
       else
          {
            part1 = pResult;
            part4 = pResult;
            part3 = (int)Doc_3;
            }
         }
       else
       {
           part2 = pResult;
           part4 = pResult;
           part3 = (int)Doc_1;
        }
v10 = _vbaStrCat(part1, part2, part3, part4);
_vbaStrMove(&pResult, v10);

其实猛然看上去的时候,小菜我傻眼了,这什么玩意儿啊,后来改改变量名字仔细看看,噢,原来是一对一的映射关系,就是y=f(x),x=0,y=8,x=1,y=6….这就是算法……知道这个就容易了

注册机

至此,小菜的第一次完整的Crack算是完成了,没有什么技术含量,可以说耐心在这个过程中起了很大的作用,当小菜在msvbvm60.dll中迷失的时候、当找到计算序列号但是找不到计算注册码算法的时候、当找到算法却看不懂的时候,耐心就在跟自己说,再来一次(像不像爱迪生:))

最后,国际惯例,感谢各TV,各气象台,当然最要感谢的是看雪tv,版主啊,给个邀请码吧,100kx压力很大啊

[课程]Linux pwn 探索篇!

上传的附件:
  • 1.JPG (23.97kb,155次下载)
  • 2.JPG (44.10kb,154次下载)
  • 3.JPG (8.52kb,155次下载)
  • 4.JPG (11.82kb,154次下载)
收藏
免费 0
支持
分享
最新回复 (18)
雪    币: 21
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
学习一下!
2010-11-5 20:38
0
雪    币: 30
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
挺不错!呵呵
2010-11-5 22:00
0
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
厉害啊,学习
2010-11-5 22:22
0
雪    币: 24
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
貌似天草大哥的教程里有好多这样的例子
2010-11-5 22:33
0
雪    币: 45
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
恭喜楼主啦,呵呵,学习了
2010-11-5 22:40
0
雪    币: 270
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
新人,得多看看这样的贴子
2010-11-6 00:06
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
**啊小菜一次
2010-11-6 00:11
0
雪    币: 271
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
厉害哦,要加油啊
2010-11-6 00:42
0
雪    币: 26
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
来看雪有半年了,我也希望能转正
2010-11-6 00:53
0
雪    币: 6073
活跃值: (3205)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
噢,原来是一对一的映射关系,就是y=f(x),x=0,y=8,x=1,y=6….这就是算法……
知道这个就是10个映射关系了。
2010-11-6 11:16
0
雪    币: 60
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
hao
2010-11-6 12:10
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
学习好的理念与技术
2010-11-7 00:10
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
我到24点以后了怎么没加啊,在那刷,请给一个提示
2010-11-7 00:13
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
看不懂。。。诶。我。。凑热闹来的
2010-11-8 20:21
0
雪    币: 16
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
学习!我什么时候能学会!我会努力的!
2010-11-8 20:36
0
雪    币: 12
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
谢谢分享.....
2010-11-8 21:48
0
雪    币: 63
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
cfo
18
学习了,LZ算是高手了。
2010-11-8 22:06
0
雪    币: 433
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
路过,帮顶一下。其实,耐心在做破解的时候是很有帮助的。楼主加油哦。
2010-11-8 22:11
0
游客
登录 | 注册 方可回帖
返回
//