TA的每日心情 | 开心 2018-3-29 07:24 |
---|
签到天数: 4 天 [LV.2]偶尔看看I
|
发表于 2008-8-14 13:36:47
|
显示全部楼层
凑个热闹!检测不出什么壳,当未知壳脱:
.......
00473EC0 pushad
00473EC1 mov esi, 0044D000
00473EC6 lea edi, dword ptr [esi+FFFB4000]
00473ECC mov dword ptr [edi+540A0], 9E48B7E4
00473ED6 push edi
00473ED7 or ebp, FFFFFFFF
00473EDA jmp 00473EEA
.......
00474019 or eax, eax
0047401B je short 00474024
0047401D mov dword ptr [ebx], eax
0047401F add ebx, 4
00474022 jmp short 00474005
00474024 call dword ptr [esi+7C27C]
0047402A popad ; 单步加F4,运行到这里
0047402B jmp 00454EB8 ; 跳往OEP?
00474030 dec eax
00474031 inc eax
如上所示,跳到00454EB8后,用OD的插件DUMP进程就OK了,不需修复直接可以运行
继续,OD载入脱壳后的进程,可以看到:
00454EB8 >push ebp
00454EB9 mov ebp, esp
00454EBB add esp, -10
00454EBE mov eax, 00454CD8
00454EC3 call 00405E00
00454EC8 call 00454C50 ; 将这个Call nop掉
00454ECD mov eax, dword ptr [456070]
00454ED2 mov eax, dword ptr [eax]
00454ED4 call 00452F08
00454ED9 mov eax, dword ptr [456070]
00454EDE mov eax, dword ptr [eax]
00454EE0 mov edx, 00454F1C ; ASCII "CrackMe #2"
00454EE5 call 00452B18
.......
将00454EC8的那句Call 00454C50给和谐掉,至于原由嘛,前面有XD说过,是产生另外一个进程的,不nop掉的话我们是断不下程序的!
其余的就很简单了,搜索串式参考,可以找到关键的跳转,然后下断运行,
......
004548C2 mov edx, dword ptr [ebp-28] 假码赋给EDX
004548C5 mov eax, dword ptr [ebp-8] 真码赋给EAX
004548C8 call 004043F8
004548CD je short 00454921 关键跳转
004548CF inc dword ptr [edi+308]
004548D5 cmp dword ptr [edi+308], 3
004548DC jnz short 004548E3
004548DE call 00403EFC
004548E3 mov eax, 3
004548E8 sub eax, dword ptr [edi+308]
004548EE cmp eax, 2
004548F1 jnz short 0045490A
004548F3 push 0
004548F5 mov cx, word ptr [454994]
004548FC xor edx, edx
004548FE mov eax, 004549A0 ; ASCII "Bad Code!",CR,"2 attempt(s) remaining..."
00454903 call 00427460
00454908 jmp short 00454942
0045490A push 0
0045490C mov cx, word ptr [454994]
00454913 xor edx, edx
00454915 mov eax, 004549CC ; ASCII "Bad Code!",CR,"1 attempt remaining..."
0045491A call 00427460
0045491F jmp short 00454942
00454921 push 0
00454923 mov cx, word ptr [454994]
0045492A mov dl, 2
0045492C mov eax, 004549F8 ; ASCII "Code is OK!",CR,"Thanks for solving this CrackMe..."
........
算法很简单,不说了,看下面的对比就知道了
注册码需为20位,不足的在后面加0,多的截取前20位
用户名: x 8 0 x 8 8
注册码: 058 038 030 058 038 038 00
如果用户名为X80X88那就是如下:
用户名: X 8 0 X 8 8
注册码: 158 038 030 158 038 038 00
X的ASCII码值为58,其余不用多说了吧/:014
贴个图
[ 本帖最后由 x80x88 于 2008-8-14 14:24 编辑 ] |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?加入我们
x
|