首页
社区
课程
招聘
[原创]帐号密码保护神2005 3.0注册浅析
2005-1-27 18:30 7783

[原创]帐号密码保护神2005 3.0注册浅析

2005-1-27 18:30
7783
【破文作者】S.P.S.G

【作者邮箱】spsgeyro@hotmail.com

【所属组织】Winter[CZG]

【组织主页】http://www.5icrack.com

【使用工具】Fuckall,PEiD

【操作系统】Windows 2003

--------------------------------------------------------------------------------

【软件名称】帐号密码保护神2005      

【下载地址】http://www.bbse.net/home/forrich/ orhttp://www.newhua.com/soft/37634.htm

【软件大小】786KB

【破解难度】eAsY

【保护方式】无

【软件语言】Borland Delphi 6.0 - 7.0

【软件简介】帐号密码保护神2005是一款专门保护密码安全的智能化反木马软件。帐号密码保护神与传统的反木马软件不同,帐号密码保护神并不依赖于木马特征数据库来查杀木马,而是独创了一套密码盗窃行为检测与防范系统,能够防范各种已知或未知的密码盗窃木马及其变种。
帐号密码保护神能保护帐号、卡号等其它要在电脑上使用的重要私人信息,令您在上网、游戏、聊天等任何需要输入帐号和密码的时候确保安全万无一失!

【破解声明】曾经沧海难为水

【破解目的】我不喜欢有限制

--------------------------------------------------------------------------------

【爆破过程】

下载完软件,先运行,软件要求输入注册码,输入98765432,按确定,有出错提示,工作开始了。。。

PEiD检测,没有壳,显示Borland Delphi 6.0 - 7.0,Fuckall载入。

由于有出错提示,首先Fuckall的字符串插件打开查找一下,发现有成功和不成功的提示。

双击来到反汇编代码。

00462DF2  |.  B8 802E4600   MOV EAX,pbobily1.00462E80     ;  成功
00462DF7  |.  E8 FCE0FCFF   CALL pbobily1.00430EF8
00462DFC  |.  A1 64BA4700   MOV EAX,DWORD PTR DS:[47BA64]
00462E01  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
00462E03  |.  8B80 5C030000 MOV EAX,DWORD PTR DS:[EAX+35C>
00462E09  |.  B2 01         MOV DL,1
00462E0B  |.  8B08          MOV ECX,DWORD PTR DS:[EAX]
00462E0D  |.  FF51 64       CALL DWORD PTR DS:[ECX+64]
00462E10  |.  A1 CCCC4700   MOV EAX,DWORD PTR DS:[47CCCC]
00462E15  |.  E8 660CFFFF   CALL pbobily1.00453A80
00462E1A  |.  A1 64BA4700   MOV EAX,DWORD PTR DS:[47BA64]
00462E1F  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
00462E21  |.  E8 620CFFFF   CALL pbobily1.00453A88
00462E26  |.  EB 0A         JMP SHORT pbobily1.00462E32
00462E28  |>  B8 B02E4600   MOV EAX,pbobily1.00462EB0     ;  出错

有了提示信息就好办多了,顺着信息向上找,找到关键跳和关键call。

来到这里:
00462D95  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]         //序列号放入EAX中
00462D98  |.  E8 BB5BFAFF   CALL pbobily1.00408958               //将序列号转换成16进制放入EAX
00462D9D  |.  8BF0          MOV ESI,EAX                          //ESI=EAX
00462D9F  |.  8D55 F8       LEA EDX,DWORD PTR SS:[EBP-8]         
00462DA2  |.  8B83 F0020000 MOV EAX,DWORD PTR DS:[EBX+2F0>
00462DA8  |.  E8 4746FDFF   CALL pbobily1.004373F4
00462DAD  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]         //将机器码放入EAX
00462DB0  |.  E8 A35BFAFF   CALL pbobily1.00408958               //机器码转换成16进制放入EAX
00462DB5  |.  C1E0 03       SHL EAX,3                            //EAX乘以2的3次方
00462DB8  |.  83C0 08       ADD EAX,8                            //EAX+8
00462DBB  |.  3BF0          CMP ESI,EAX                          //比较ESI与EAX
00462DBD  |.  75 69         JNZ SHORT pbobily1.00462E28           //不相同则跳向出错

下面我们来看几个call
00462D98  |.  E8 BB5BFAFF   CALL pbobily1.00408958
00462DB0  |.  E8 A35BFAFF   CALL pbobily1.00408958
这两个CAll牵涉到同一个地方

00408958  /$  53            PUSH EBX
00408959  |.  56            PUSH ESI
0040895A  |.  83C4 F4       ADD ESP,-0C
0040895D  |.  8BD8          MOV EBX,EAX
0040895F  |.  8BD4          MOV EDX,ESP
00408961  |.  8BC3          MOV EAX,EBX
00408963  |.  E8 54A6FFFF   CALL pbobily1.00402FBC           //这个call里面是转换的关键,进去看看
00408968  |.  8BF0          MOV ESI,EAX
0040896A  |.  833C24 00     CMP DWORD PTR SS:[ESP],0
0040896E  |.  74 19         JE SHORT pbobily1.00408989
00408970  |.  895C24 04     MOV DWORD PTR SS:[ESP+4],EBX
00408974  |.  C64424 08 0B  MOV BYTE PTR SS:[ESP+8],0B
00408979  |.  8D5424 04     LEA EDX,DWORD PTR SS:[ESP+4]
0040897D  |.  A1 44B84700   MOV EAX,DWORD PTR DS:[47B844]
00408982  |.  33C9          XOR ECX,ECX
00408984  |.  E8 57FAFFFF   CALL pbobily1.004083E0
00408989  |>  8BC6          MOV EAX,ESI
0040898B  |.  83C4 0C       ADD ESP,0C
0040898E  |.  5E            POP ESI
0040898F  |.  5B            POP EBX
00408990  \.  C3            RETN

00402FBC  /$  53            PUSH EBX                        //来到这里
00402FBD  |.  56            PUSH ESI
00402FBE  |.  57            PUSH EDI                        //保存环境变量
00402FBF  |.  89C6          MOV ESI,EAX                     //ESI=EAX
00402FC1  |.  50            PUSH EAX                        //EAX入栈
00402FC2  |.  85C0          TEST EAX,EAX
00402FC4  |.  74 6C         JE SHORT pbobily1.00403032   
00402FC6  |.  31C0          XOR EAX,EAX                     //EAX清零
00402FC8  |.  31DB          XOR EBX,EBX                     //EBX清零
00402FCA  |.  BF CCCCCC0C   MOV EDI,0CCCCCCC                //EDI=0CCCCCCC
00402FCF  |>  8A1E          /MOV BL,BYTE PTR DS:[ESI]       //ESI中取一位放入BL
00402FD1  |.  46            |INC ESI                        //ESI减一位
00402FD2  |.  80FB 20       |CMP BL,20                      //如果第一位是空格则取下一位,不是则执行下去
00402FD5  |.^ 74 F8         \JE SHORT pbobily1.00402FCF
00402FD7  |.  B5 00         MOV CH,0
00402FD9  |.  80FB 2D       CMP BL,2D
00402FDC  |.  74 62         JE SHORT pbobily1.00403040      //是否为-
00402FDE  |.  80FB 2B       CMP BL,2B
00402FE1  |.  74 5F         JE SHORT pbobily1.00403042      //是否为+
00402FE3  |.  80FB 24       CMP BL,24
00402FE6  |.  74 5F         JE SHORT pbobily1.00403047      //是否为$
00402FE8  |.  80FB 78       CMP BL,78
00402FEB  |.  74 5A         JE SHORT pbobily1.00403047      //是否为x
00402FED  |.  80FB 58       CMP BL,58
00402FF0  |.  74 55         JE SHORT pbobily1.00403047      //是否为X
00402FF2  |.  80FB 30       CMP BL,30
00402FF5  |.  75 13         JNZ SHORT pbobily1.0040300A     //是否为0,都不是则跳
00402FF7  |.  8A1E          MOV BL,BYTE PTR DS:[ESI]        
00402FF9  |.  46            INC ESI
00402FFA  |.  80FB 78       CMP BL,78
00402FFD  |.  74 48         JE SHORT pbobily1.00403047
00402FFF  |.  80FB 58       CMP BL,58
00403002  |.  74 43         JE SHORT pbobily1.00403047
00403004  |.  84DB          TEST BL,BL                      //跳到这里
00403006  |.  74 20         JE SHORT pbobily1.00403028      
00403008  |.  EB 04         JMP SHORT pbobily1.0040300E     //跳  
0040300A  |>  84DB          TEST BL,BL
0040300C  |.  74 2D         JE SHORT pbobily1.0040303B
0040300E  |>  80EB 30       /SUB BL,30                      //BL-30
00403011  |.  80FB 09       |CMP BL,9                       //数字和9比较
00403014  |.  77 25         |JA SHORT pbobily1.0040303B     //>9则跳
00403016  |.  39F8          |CMP EAX,EDI                    
00403018  |.  77 21         |JA SHORT pbobily1.0040303B     //大于0CCCCCCC则跳
0040301A  |.  8D0480        |LEA EAX,DWORD PTR DS:[EAX+EAX*4>   //和下一句一起看
0040301D  |.  01C0          |ADD EAX,EAX                        //EAX*10,就是左移一位
0040301F  |.  01D8          |ADD EAX,EBX                        //EAX+EBX,就是转换成10进制然后相加
00403021  |.  8A1E          |MOV BL,BYTE PTR DS:[ESI]           //取下一位
00403023  |.  46            |INC ESI                            //ESI减一位
00403024  |.  84DB          |TEST BL,BL                         //BL是否为0,即是否还有数
00403026  |.^ 75 E6         \JNZ SHORT pbobily1.0040300E        //有的话则循环取序列号
00403028  |>  FECD          DEC CH
0040302A  |.  74 09         JE SHORT pbobily1.00403035
0040302C  |.  85C0          TEST EAX,EAX
0040302E  |.  7D 4E         JGE SHORT pbobily1.0040307E         //到这里跳
00403030  |.  EB 09         JMP SHORT pbobily1.0040303B
00403032  |>  46            INC ESI
00403033  |.  EB 06         JMP SHORT pbobily1.0040303B
00403035  |>  F7D8          NEG EAX
00403037  |.  7E 45         JLE SHORT pbobily1.0040307E
00403039  |.  78 43         JS SHORT pbobily1.0040307E
0040303B  |>  5B            POP EBX                          ;  Default case of switch 0040305B
0040303C  |.  29DE          SUB ESI,EBX
0040303E  |.  EB 41         JMP SHORT pbobily1.00403081
00403040  |>  FEC5          INC CH
00403042  |>  8A1E          MOV BL,BYTE PTR DS:[ESI]
00403044  |.  46            INC ESI
00403045  |.^ EB C3         JMP SHORT pbobily1.0040300A
00403047  |>  BF FFFFFF0F   MOV EDI,0FFFFFFF
0040304C  |.  8A1E          MOV BL,BYTE PTR DS:[ESI]
0040304E  |.  46            INC ESI
0040304F  |.  84DB          TEST BL,BL
00403051  |.^ 74 DF         JE SHORT pbobily1.00403032
00403053  |>  80FB 61       /CMP BL,61
00403056  |.  72 03         |JB SHORT pbobily1.0040305B
00403058  |.  80EB 20       |SUB BL,20
0040305B  |>  80EB 30       |SUB BL,30                       ;  Switch (cases 30..46)
0040305E  |.  80FB 09       |CMP BL,9
00403061  |.  76 0B         |JBE SHORT pbobily1.0040306E
00403063  |.  80EB 11       |SUB BL,11
00403066  |.  80FB 05       |CMP BL,5
00403069  |.^ 77 D0         |JA SHORT pbobily1.0040303B
0040306B  |.  80C3 0A       |ADD BL,0A                       ;  Cases 41 ('A'),42 ('B'),43 ('C'),44 ('D'),45 ('E'),46 ('F') of switch 0040305B
0040306E  |>  39F8          |CMP EAX,EDI                     ;  Cases 30 ('0'),31 ('1'),32 ('2'),33 ('3'),34 ('4'),35 ('5'),36 ('6'),37 ('7'),38 ('8'),39 ('9') of switch 0040305B
00403070  |.^ 77 C9         |JA SHORT pbobily1.0040303B
00403072  |.  C1E0 04       |SHL EAX,4
00403075  |.  01D8          |ADD EAX,EBX
00403077  |.  8A1E          |MOV BL,BYTE PTR DS:[ESI]
00403079  |.  46            |INC ESI
0040307A  |.  84DB          |TEST BL,BL
0040307C  |.^ 75 D5         \JNZ SHORT pbobily1.00403053
0040307E  |>  59            POP ECX                             //跳到这里
0040307F  |.  31F6          XOR ESI,ESI                         //ESI清零
00403081  |>  8932          MOV DWORD PTR DS:[EDX],ESI         
00403083  |.  5F            POP EDI
00403084  |.  5E            POP ESI
00403085  |.  5B            POP EBX
00403086  \.  C3            RETN                                //返回

由于机器码和序列号同样通过这段代码转换成16进制,因此不再赘述。

游侠已经作出了这个注册机,大家可以去http://www.5icrack.com/bbs/viewthread.php?tid=76063&extra=page%3D1下载,这里简单提一下
VB注册机:
Dim x, z, a, b, m As String
Private Sub Command1_Click()
x = Text1.Text
If x = "" Then
MsgBox "请输入序列号^_^", 64, "注意"
Else
b = x * 2 ^ 3
y = Val(b) + 8
Text2.Text = y
End If
End Sub

总结:序列号=机器码*8+8

注册成功生成 WINDOWS\system32\myini.ini 文件

本人属大菜鸟,到现在还只能分析简单算法,下次一定会努力的。

【版权声明】转载请注明作者以及确保文章完整性,谢谢

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞7
打赏
分享
最新回复 (6)
雪    币: 83295
活跃值: (198375)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
linhanshi 2005-1-27 21:21
2
0
支持你...
雪    币: 260
活跃值: (81)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
萝卜 1 2005-1-27 21:28
3
0
支持一下。
雪    币: 300
活跃值: (521)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
深海游侠 10 2005-1-28 02:55
4
0
哈,俺也来支持Winter
雪    币: 200
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
爱国人士 2005-1-28 10:09
5
0
支持原创.

小弟也破过这个,埋了个C4给爆破了,后来才分析了以下算法,不是很难,我用C#写了一个命令行的注册机,代码如下:

using System;

class ReturnTest

{
        static double CalculateCrack(int t)
            
{

        double Crack;
          
        Crack = t*8+8;
          
        return Crack;
}
public static void Main()

{
Console.WriteLine("请输入机器码:");
  
int cr=int.Parse(Console.ReadLine());
   
Console.WriteLine("该软件的注册码是{0:0}",CalculateCrack(cr));
}

}

哈哈:)
雪    币: 200
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
爱国人士 2005-1-28 11:04
6
0
晕呀~~~

怎么不能上传附件呀???

郁闷~~~~~~
雪    币: 272
活跃值: (460)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
sharpair 10 2005-1-28 11:22
7
0
支持!顶一个!
游客
登录 | 注册 方可回帖
返回