【破文作者】S.P.S.G
【作者邮箱】spsgeyro@hotmail.com
【所属组织】Winter[CZG]
【组织主页】http://www.5icrack.com
【使用工具】Fuckall,PEiD
【操作系统】Windows 2003
--------------------------------------------------------------------------------
【软件名称】帐号密码保护神2005
【下载地址】http://www.bbse.net/home/forrich/ or
http://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 文件
本人属大菜鸟,到现在还只能分析简单算法,下次一定会努力的。
【版权声明】转载请注明作者以及确保文章完整性,谢谢
[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界