-
-
[旧帖]
[原创]Crack me 0.1入门教程
0.00雪花
-
发表于:
2013-4-22 23:11
3504
-
[旧帖] [原创]Crack me 0.1入门教程
0.00雪花
标题:【原创】Crack me 0.1入门教程
作者:Never、C
时间:2013年4月22日
链接:http://bbs.pediy.com/showthread.php?p=1169600
工具:OD、PEiD
所做的例子是易语言。为确保安全,呵呵。源码和程序都会放上来。
首先运行软件。随便输入一个数字,提示信息为:口令错误
然后PEiD看一下程序为Microsoft Visual C++ 6.0。EP区段为:.text。
然后OD载入软件。入口为:
00448E6D > 55 push ebp
00448E6E 8BEC mov ebp,esp
00448E70 6A FF push -1
00448E72 68 48FA4600 push 1.0046FA48
00448E77 68 9CD64400 push 1.0044D69C
00448E7C 64:A1 00000000 mov eax,dword ptr fs:[0]
00448E82 50 push eax
00448E83 64:8925 0000000>mov dword ptr fs:[0],esp
很明显为:Microsoft Visual C++ 6.0 [Overlay]的E语言OEP入口。
OEP入口不清楚的可以看一下我发的另一个帖子【8种常见语言OEP入口的特征】
开始:
方法一:直接查看
直接查找所有参考字符串,然后字符串最上面就能直接看到密文
方法二:巧方法
如果不是固定的密文,比如设置每次启动,显示一个随机数之类的,直接查看肯定不行的。
这时候,就得利用口令错误这条信息。
查找ASCII码,有2个口令错误和1个口令正确。为什么是2个,看下源码就明白了。
可以判断出,如果输入正确的话,会提示 口令正确。
双击口令正确,来到:
00401165 68 669B4600 push 12.00469B66 ; 口令正确
0040116A 68 03000000 push 3
0040116F BB 80134000 mov ebx,12.00401380
00401174 E8 BE000000 call 12.00401237 ; 这个是信息框的call
00401179 83C4 28 add esp,28
0040117C E9 30000000 jmp 12.004011B1
00401181 6A 00 push 0
00401183 6A 00 push 0
00401185 6A 00 push 0
00401187 68 01030080 push 80000301
0040118C 6A 00 push 0
0040118E 68 00000000 push 0
00401193 68 04000080 push 80000004
00401198 6A 00 push 0
0040119A 68 6F9B4600 push 12.00469B6F ; 口令错误
0040119F 68 03000000 push 3
004011A4 BB 80134000 mov ebx,12.00401380
004011A9 E8 89000000 call 12.00401237 ; 这个是信息框的call
将
00401165 68 669B4600 push 12.00469B66 ; 口令正确
中的代码push 12.00469B66复制一下
将口令错误的代码:push 12.00469B6F 改为 push 12.00469B66
因为有2个,再下面还有1个一样改下就ok。
这个比找跳要简单吧。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)