duelist crackme 4 破解 (下) (3千字)
duelist crackme 4 破解 (下) (希望转载的时候保持完整)作者 丁丁虾 ddxia/[CCG]
E_mail ddxia@263.net (如果Crackme教学文章中有错,请来信:))
Web http://go18.163.com/~ddxia
目标 duelist crackme 4
目标URL http://go18.163.com/~ddxia/crackme/DueList/Due-cm4.zip
工具 SoftIce4.01 for NT TOPO V1.2 Hiew winapi.hlp
下一步,如果按Crackme的要求是让我们写一个KEYGEN,俺天性就是懒懒懒.......于是
想出个馊主意,把增加代码把这个Crackme本身变成一个KEYGEN,孙悟空七十二变 呵呵~~~~~~~~
步骤如下:
1、先用TOPO软件定位我们加入代码的位置
2、用HIEW来修改程序。
用TOPO V1.2来玩一玩!首先在SCAN选项中选取 EXEC ONLY,是扫描代码段中有没有空
余的地方,增加我们要加入的代码。OPEN文件 due-cm4.exe 发现有285个字节可以利用。找个吉
利的数88,好!利用88个字节进行修改程序,程序定位在内存中位置为4014e3 物理位置为AE3。
我们想达到的目的是当程序判断我们的CODE是错误的时候,让程序本身跳出一个对话框
来告诉大家正确的CODE :)
首先,我们确定那里是合适加入代码的地方??很关键哦!我们找啊找,找到一个好
朋友 呵呵~~~~~
比较程序代码:
:u 401244 L20
001B:00401244 C8000000 ENTER 0000,00
001B:00401248 B801000000 MOV EAX,00000001
001B:0040124D 8B7D08 MOV EDI,[EBP+08]
001B:00401250 8B750C MOV ESI,[EBP+0C]
001B:00401253 8B4D10 MOV ECX,[EBP+10]
001B:00401256 F3A6 REPZ CMPSB
001B:00401258 67E305 JCXZ 00401260
001B:0040125B B800000000 MOV EAX,00000000
^^^^^^^^^^^^^^^^^^^^^^^^---->修改这句代码,
jmp 4014e3
而且非常的巧,代码长度一样
001B:00401260 C9 LEAVE
001B:00401261 C20C00 RET 000C
ok let's go goo! 运行HIEW(真是一个酷B的软件),打开due-cm4.exe.
按F4可以改变显示模式,选择DECODE。找到上面的代码
按F3可以修改代码,按F2为切换到ASM模式。输入 JMP 0AE3(注意了这里的跳转地址为
物理地址)
按F9存盘哦!
按F5 可以GOTO 输入AE3!!
在AE3处输入
内存地址 物理地址 代码
4014E3 AE3 mov esi,[ebp][0000C]
4014E6 AE6 push 0
4014E8 AE8 push 4014FF
4014ED AED push esi
4014EE AEE push 0
4014F0 AF0 call 966
4014F5 AF5 mov eax,0
4014FA AFA jmp 860
存盘
按F4切换到HEX模式下,输入
4014FF AFF Correct Code: (Edit by ddxia) 00
^^^-->注意在HEX方式下输入
赶紧去试一试:)
哎哟!差点忘了,再把以下这段消息
Your registration info is invalid... Note that most.....
改为:请输入小于等于8个字符的USER名(不能包括数字)CODE的长度要和USER的一样 00
终于修改完了,好累啊!懒人经常走弯路。
啊!小子,没有完呢?想丢笔去HAPPY 呵呵~~~~~
我们来弄明白这为什么要这样改???
内存地址 物理地址 代码
4014E3 AE3 mov esi,[ebp][0000C] ;把正确的CODE放入ESI
4014E6 AE6 push 0
4014E8 AE8 push 4014FF
4014ED AED push esi
4014EE AEE push 0
4014F0 AF0 call 966 ; CALL MESSAGEBOX
4014F5 AF5 mov eax,0 ; 恢复被我们修改的代码
4014FA AFA jmp 860 ; 跳回LEAVE的位置
看看WINAPI.HLP中的MESSAGEBOXa,需要什么参数
int MessageBox(
HWND hWnd, // 窗口句柄 0------>缺省
LPCTSTR lpText, // 内容的地址 ESI---->CODE
LPCTSTR lpCaption, // 标题的地址 4014FF->我们加进的一串字符
UINT uType // 对话框的类型 0------>普通类型,只有一个OK按钮
);
然后我们研究一下为什么是CALL 966 ??这个嘛!呵呵~~~~ Let's see
40122b call 401366 ---->当按F3 它就会变成call 966知道为什么了吧 :)
401366 jmp messageboxa
再来看一看 jmp 860 860又什么东东?:) 这个卖个关子了 呵呵!!
(提示:按F5 输入860,回车,你就明白了 哈哈~~)
终于写完了,怎么还没有人CALL我的,看来今天晚没有时间去HAPPY了,要整理整理我的
站点了 (遭到投诉了 呵呵~~~~~)
22:05
