首页
社区
课程
招聘
来个简单的,大家玩玩
发表于: 2005-1-10 18:56 7127

来个简单的,大家玩玩

2005-1-10 18:56
7127
收藏
免费 7
支持
分享
最新回复 (8)
雪    币: 31
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
2
啥意思,没输入窗口,暴掉?
2005-1-11 02:12
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ASM
3
建议把出错提示换中文,以免……:D
2005-1-11 07:36
0
雪    币: 209
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
爆掉就没意思了,这是一个注册文件检测的CrackMe,做出注册文件才算数.
2005-1-11 08:48
0
雪    币:
能力值: (RANK: )
在线值:
发帖
回帖
粉丝
5
论坛精华里面有不完全破解教程,这个好象不怎么简单,没搞定,但看过前辈写的教程。
2005-1-11 10:42
0
雪    币: 209
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
哈哈,如果大家想看我就写一篇吧!不过水平有限,不过最好自已试试!
2005-1-11 12:28
0
雪    币: 209
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
peid查壳ASPack 2.11 -> Alexey Solodovnikov这个壳很好脱,PEID就可搞定.
入口点为00401000,脱完后再查为MASM32 / TASM32所写!那一定有窗口了.资源工具上.Resource Hacker打

开脱壳后的文件,可以看到窗口.点击注册按钮看到
CONTROL "退出", 2, BUTTON, BS_PUSHBUTTON | BS_CENTER | BS_FLAT | WS_CHILD | WS_VISIBLE |

WS_TABSTOP, 160, 290, 75, 14
   CONTROL "关于", 1, BUTTON, BS_PUSHBUTTON | BS_CENTER | BS_FLAT | WS_CHILD | WS_VISIBLE |

WS_TABSTOP, 8
..
CONTROL "注册", 3, BUTTON, BS_PUSHBUTTON | BS_FLAT | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 84,

290, 75, 14 它的ID=3了.OK之前还有2和1所以一定有一个类似于CASE的语句来区分的.OD载入停在401000

处.00401000 >/$  6A 00         PUSH 0
00401002  |.  E8 91010000   CALL <JMP.&kernel32.GetModuleHandleA>
00401007  |.  A3 22204000   MOV DWORD PTR DS:[402022],EAX
0040100C  |.  68 0C214000   PUSH up_.0040210C
00401011  |.  68 04204000   PUSH up_.00402004
00401016  |.  E8 AD010000   CALL <JMP.&advapi32.GetUserNameA>
0040101B  |.  6A 00         PUSH 0
0040101D  |.  68 37104000   PUSH up_.00401037 这里就是处理消息的地方了.
00401022  |.  6A 00         PUSH 0
00401024  |.  6A 02         PUSH 2
00401026  |.  FF35 22204000 PUSH DWORD PTR DS:[402022]
0040102C  |.  E8 8B010000   CALL <JMP.&user32.DialogBoxParamA>
00401031  |.  50            PUSH EAX
00401032  \.  E8 55010000   CALL <JMP.&kernel32.ExitProcess>
这些就是主程序了,因为是汇编的特点嘛.
0040101D  |.  68 37104000   PUSH up_.00401037
这里就是处理消息的地方了我们来到00401037
00401037   .  C8 000000     ENTER 0,0
0040103B   .  817D 0C 11010>CMP DWORD PTR SS:[EBP+C],111  这就是COMMAND命令了,也就是我们按下

钮时触发的了.
00401042   .  74 2A         JE SHORT up_.0040106E 如果是按了就会来到040106E
00401044   .  817D 0C 10010>CMP DWORD PTR SS:[EBP+C],110
0040104B   .  74 0C         JE SHORT up_.00401059
0040104D   .  837D 0C 10    CMP DWORD PTR SS:[EBP+C],10
00401051   .  74 37         JE SHORT up_.0040108A
00401053   .  33C0          XOR EAX,EAX
00401055   .  C9            LEAVE
00401056   .  C2 1000       RETN 10
我们来到040106E

0040106E   > \837D 10 01    CMP DWORD PTR SS:[EBP+10],1 哈哈1.2.3这不正是我们在资源文件所看

到的ID号吗.注册按钮的ID为 3,
00401072   .  0F84 FA000000 JE up_.00401172
00401078   .  837D 10 02    CMP DWORD PTR SS:[EBP+10],2
0040107C   .  74 0C         JE SHORT up_.0040108A
0040107E   .  837D 10 03    CMP DWORD PTR SS:[EBP+10],3
00401082   .  74 14         JE SHORT up_.00401098 是点注册就走
00401084   .  33C0          XOR EAX,EAX
00401086   .  C9            LEAVE
00401087   .  C2 1000       RETN 10
我们来到
00401098   > \6A 00         PUSH 0
0040109A   .  68 EF204000   PUSH up_.004020EF
0040109F   .  6A 03         PUSH 3
004010A1   .  6A 00         PUSH 0                    没有注册输入窗口,那检测是否注册,很可能

就是用KeyFile来检测了.
004010A3   .  6A 03         PUSH 3
004010A5   .  68 000000C0   PUSH C0000000
004010AA   .  68 E5204000   PUSH up_.004020E5                        ;  ASCII "[BCG].Key"
004010AF   .  E8 DE000000   CALL <JMP.&kernel32.CreateFileA>这里可以看出文件名是[BCG].Key我

们就在对应的目录下弄一个这样的文件吧.新建一个文本文件输入123456789 另存为[BCG].Key记住扩展名

要改为.key哦.
004010B4   .  A3 00204000   MOV DWORD PTR DS:[402000],EAX
004010B9   .  833D 00204000>CMP DWORD PTR DS:[402000],-1
004010C0   .  0F84 92000000 JE up_.00401158 判断[BCG].Key文件是否存在
..
004010D4   .  FF35 00204000 PUSH DWORD PTR DS:[402000]
004010DA   .  E8 C5000000   CALL <JMP.&kernel32.ReadFile>读我们的注册文件呀
004010DF   .  85C0          TEST EAX,EAX
004010E1   .  74 75         JE SHORT up_.00401158
..
00401106   .  E8 93000000   CALL <JMP.&kernel32.CloseHandle>
0040110B   .  33C0          XOR EAX,EAX
0040110D   .  EB 04         JMP SHORT up_.00401113 直接跳到0401113
0040110F   .  C9            LEAVE
00401110   .  C2 1000       RETN 10
我们来到0401113
00401113   >  80B0 F3204000>XOR BYTE PTR DS:[EAX+4020F3],58    每一个字节都与58异或.
0040111A   . |40            INC EAX
0040111B   . |80B8 F3204000>CMP BYTE PTR DS:[EAX+4020F3],0
00401122   .^\75 EF         JNZ SHORT up_.00401113   直到为文件未尾
00401124   .  68 F3204000   PUSH up_.004020F3                       
00401129   .  68 FD204000   PUSH up_.004020FD                        
0040112E   .  E8 77000000   CALL <JMP.&kernel32.lstrcmp> 比较
00401133   .  83F8 00       CMP EAX,0 是否为0
00401136   .  74 06         JE SHORT up_.0040113E 为0就成功
00401138   .  EB 1E         JMP SHORT up_.00401158
0040113A   .  C9            LEAVE
0040113B   .  C2 1000       RETN 10
看了上面的,其实关键就是XOR BYTE PTR DS:[EAX+4020F3],58 这一句,只要文件中的ASCII为58就行了.哈

哈.查一查才知大写的"X"就是了.重新打开[BCG].Key输入XXXXXXX个数随你便了.保存再打开CrackMe成功

了.就这么简单.
2005-1-11 12:57
0
雪    币:
能力值: (RANK: )
在线值:
发帖
回帖
粉丝
8
楼上弄错了吧?!附件中可不是上面的答案,上面答案是BCG的一个考题的再看看吧。你看看 精华4/软件保护/KEYFILE/CRACKME中的第二篇文章,你给弄成第一篇的了。
2005-1-11 14:07
0
雪    币: 209
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
哦,放在同一目录下给弄错了.
2005-1-11 18:43
0
游客
登录 | 注册 方可回帖
返回
//