-
-
crackerme22.exe破解_fileinfo_smartche
-
发表于: 2004-12-23 18:17 7594
-
crackerme22.exe破解_fileinfo_smartcheck_w32dasm_ultraedit_ollydbg我的第二次破解weblog
〖飘云破解学苑〗的小李传来crackerme22.exe让我练练手.
ok,一下是我的破解的基本过程.许多地方方法错误,理解不对,请一定要告诉我,促使我进步噢!
首先用fileinfo.exe在dos cmd下看文件是否加密和编程语言
一看vbasic6.0 PE
一阵切喜,俺别的不会就会vb编程.赫赫.
其实一运行程序注册不成功后居然弹出一个"重新来吧"的messagebox就知道是vb做的,因为窗口名为"工程1"
这个设计者也太粗心了,还是故意放水!
嘻嘻.
一定是用了api中的字符串比较函数,能看看到这个函数的参数就好了.
ok,运行hick_sys以前给我的smarkcheck(呵呵.专门对付vb6.0,太强了.不需要脱壳都能看到api函数中的参数).
打开crackerme2,然后start运行.姓名填入001jaye,注册码:abcdefgh,确定后当然是报错!
好点击确定后 stop程序.
倒!这个程序运行过程中的函数全小显示在events窗口中,在click下显示了运行注册后动用了
8个函数,其中一个为strcomp returns integer:-1,赫赫-1就一定是不成功了.细看这个函数,
有两个参数,YE0001和abcdefgh,赫赫,这个意思不是很明显吗??退出程序,重新输入注册号.姓名填入001jaye,注册码:
YE0001.成功.
好简单哦.连忙向小李汇报,小李说他用的是"暴".我倒.我不明白什么是暴.
小李说就是填什么都会正确,因为注册成功和不成功一定有个判断,我们只要改变他们的走向就可以了.
明白了,就是把通向不成功注册的道路堵住,改为成功的路径不就行了.
赫赫.看来我第一次破的leapftp不就是这么个方法.
简单.于是打开了w32dasm,按照破leapftp的方法先找串式数据.我倒!!!!
里面就一行字:"crackme002 "
倒.傻眼了,看来这个方法不行啊.呜呜.
于是找了个教程.看了下,原来我们只要在msvbvm60里面的vabstrcomp函数设个断点就行.
知道了就做.
函数菜单_输入,弹出个清单是这个程序所使用的所有函数,找到vbastrcomp.双击就会跳到程序中使用了这个函数的地方.
有两个地方,第一个是:
* Reference To: MSVBVM60.__vbaBoolVar, Ord:0000h
|
:004011B4 FF253C104000 Jmp dword ptr [0040103C]
* Reference To: MSVBVM60.__vbaStrComp, Ord:0000h
|
:004011BA FF2598104000 Jmp dword ptr [00401098]
* Reference To: MSVBVM60.__vbaFreeVar, Ord:0000h
一看就知道对我们没什么用的, 不知道是这些语句是干什么用的.好像是vb6.0里面的对api函数的申明.
第二个地方是:
* Reference To: MSVBVM60.__vbaStrComp, Ord:0000h
|
:0041305A FF1598104000 Call dword ptr [00401098]
:00413060 6685C0 test ax, ax
:00413063 0F8508010000 jne 00413171
:00413069 A110404100 mov eax, dword ptr [00414010]
:0041306E 85C0 test eax, eax
:00413070 7519 jne 0041308B
一看这样的结构就知道,就是这里了,
但是jne有两个改哪个呢:
(当时已经知道jne=75,je=74)
一个一个试吧.就三种情况
改第二个不成功.要改:00413063 0F8508010000 jne 00413171这句时,傻了.
没有75这样的数据啊.倒,于是去问别人,没人回答,因为当时小李不在.
(第二天通过用olly改,知道其实把85改称84就行了)
假设当时我就知道85改84的话,当时就成功了.
)用w32dasm发现一个问题,有的时候,改过数据后提示保存为另一个文件,但是那个文件经常是0字节根本打不开,请问高手是怎么回事?)
我怀疑是汉化的问题,所以我就用ultraedit改数据.他们的行数是不一致的,
在w32dasm中行数就是相对地址,在ultraedit中行数是文件偏移量.
当在w32dasm中选中相应行后,在状态栏就显示相对地址和文件偏移量
记下文件偏移量就可以在ultraedit中快速定位到相应的语句了.
如:00413063 0F8508010000 jne 00413171这句在状态栏显示为:
code data @:00413063 @offset 00013063h in file:crackme2.exe
记下00013063h,就可以找到相应行,这要比查找16进制代码要精确,因为0F8508010000这样的数据可能出现多次.
但是文件偏移量是唯一的,在定位到行时.程序提示如是16进制地址请前面加0x,不然会找错地方了.
用这种方法,发现改:00413063 0F8508010000 jne 00413171就行,:00413070 7519 jne 0041308B这句是不需要改的.
倒.写文字汇报怎么这么累,怪不得小李要用动画呢.哎.继续!
晚上没事干看看了pediy上的动态w32dasm,方法是这样的.
打开文件后,选择调试_加载进程,弹出一个对话框,要求输命令行,不要管它,点击载入!
弹出许多窗口主要是寄存器的状态.
此时再通过函数导入函数找vbastrcomp在的行.
* Reference To: MSVBVM60.__vbaStrComp, Ord:0000h
|
:0041305A FF1598104000 Call dword ptr [00401098]
:00413060 6685C0 test ax, ax
:00413063 0F8508010000 jne 00413171
:00413069 A110404100 mov eax, dword ptr [00414010]
:0041306E 85C0 test eax, eax
:00413070 7519 jne 0041308B
在0041305A按f2下个断点!然后再 调试_运行进程.
注册填入
姓名填入001jaye,注册码:abcdefgh
在堆栈esp+0处没有内容
esp+4处看到abcdefgh在esp+8处看到YE0001(和用smarkcheck的结果一致哦.后来用ollydbg也是一样的结果.)
但是小李的要求是'暴"而不是要简单地得到注册码哦.
(我的w32dasm真是的,不知怎么回事他调试的程序老是不弹到前面,总是w32dasm在前面不知怎么回事!高手指教!)
第二天好不容易等到小李.
说给我传个ollydbg的动画,看怎么破这个crackme2 的.其实就是怎么使用ollydbg哈哈.因为我当时就是不知道怎么改 jne 00413171,以为需要张ams和机器码的对照表.其实在ollydbg中好简单双击,就弹出个对话框让你可以改asm,超爽.从此也知道其实就是把85改称84就是jne改成je.
用ollydbg会弹出窗口,内容大致说是这个程序是加壳什么的,不要管它.因为我已经用fi看了没有壳,这里设断点的方法和win32dasm差不多:
按工具条中E按钮弹出可执行模块,双击msvbvm60.dll.因为vb6.0程序一般都是这里下断点的.
现在进入msvbvm60的窗口了. 因为c窗口的标题是模块-msvbvm60
右击该窗口的任一句,选择快捷菜单中的搜索_当前模块中的名称!弹出窗口N,在列表中找到vbastrcomp双击,
c窗口定位在了:
733B4825 > 837C24 04 02 CMP DWORD PTR SS:[ESP+4],2
再此用f2下个断点!然后调试_运行!
注册填入
姓名填入001jaye,注册码:abcdefgh 程序停在733B4825
一直按f8(单步跳过,)直到回到crackme2的领空. 赫赫.来到了
00413060 . 66:85C0 TEST AX,AX
00413063 . 0F85 08010000 JNZ crackme2.00413171
和前面一对照
:00413060 6685C0 test ax, ax
:00413063 0F8508010000 jne 00413171
没错,原来ollydbg这么好使.赫赫.lol
双击修改asm,保存一下,从中看到的确只要修改一处就可以了
那么下面的jna是干什么用的哪?(高手指教!)
0041306E . 85C0 TEST EAX,EAX
00413070 . 75 19 JNZ SHORT crackme2.0041308B
显然这次破解让我学了很多哦!
crackme2软件下载http://218.204.90.56/crackme22.exe
〖飘云破解学苑〗的小李传来crackerme22.exe让我练练手.
ok,一下是我的破解的基本过程.许多地方方法错误,理解不对,请一定要告诉我,促使我进步噢!
首先用fileinfo.exe在dos cmd下看文件是否加密和编程语言
一看vbasic6.0 PE
一阵切喜,俺别的不会就会vb编程.赫赫.
其实一运行程序注册不成功后居然弹出一个"重新来吧"的messagebox就知道是vb做的,因为窗口名为"工程1"
这个设计者也太粗心了,还是故意放水!
嘻嘻.
一定是用了api中的字符串比较函数,能看看到这个函数的参数就好了.
ok,运行hick_sys以前给我的smarkcheck(呵呵.专门对付vb6.0,太强了.不需要脱壳都能看到api函数中的参数).
打开crackerme2,然后start运行.姓名填入001jaye,注册码:abcdefgh,确定后当然是报错!
好点击确定后 stop程序.
倒!这个程序运行过程中的函数全小显示在events窗口中,在click下显示了运行注册后动用了
8个函数,其中一个为strcomp returns integer:-1,赫赫-1就一定是不成功了.细看这个函数,
有两个参数,YE0001和abcdefgh,赫赫,这个意思不是很明显吗??退出程序,重新输入注册号.姓名填入001jaye,注册码:
YE0001.成功.
好简单哦.连忙向小李汇报,小李说他用的是"暴".我倒.我不明白什么是暴.
小李说就是填什么都会正确,因为注册成功和不成功一定有个判断,我们只要改变他们的走向就可以了.
明白了,就是把通向不成功注册的道路堵住,改为成功的路径不就行了.
赫赫.看来我第一次破的leapftp不就是这么个方法.
简单.于是打开了w32dasm,按照破leapftp的方法先找串式数据.我倒!!!!
里面就一行字:"crackme002 "
倒.傻眼了,看来这个方法不行啊.呜呜.
于是找了个教程.看了下,原来我们只要在msvbvm60里面的vabstrcomp函数设个断点就行.
知道了就做.
函数菜单_输入,弹出个清单是这个程序所使用的所有函数,找到vbastrcomp.双击就会跳到程序中使用了这个函数的地方.
有两个地方,第一个是:
* Reference To: MSVBVM60.__vbaBoolVar, Ord:0000h
|
:004011B4 FF253C104000 Jmp dword ptr [0040103C]
* Reference To: MSVBVM60.__vbaStrComp, Ord:0000h
|
:004011BA FF2598104000 Jmp dword ptr [00401098]
* Reference To: MSVBVM60.__vbaFreeVar, Ord:0000h
一看就知道对我们没什么用的, 不知道是这些语句是干什么用的.好像是vb6.0里面的对api函数的申明.
第二个地方是:
* Reference To: MSVBVM60.__vbaStrComp, Ord:0000h
|
:0041305A FF1598104000 Call dword ptr [00401098]
:00413060 6685C0 test ax, ax
:00413063 0F8508010000 jne 00413171
:00413069 A110404100 mov eax, dword ptr [00414010]
:0041306E 85C0 test eax, eax
:00413070 7519 jne 0041308B
一看这样的结构就知道,就是这里了,
但是jne有两个改哪个呢:
(当时已经知道jne=75,je=74)
一个一个试吧.就三种情况
改第二个不成功.要改:00413063 0F8508010000 jne 00413171这句时,傻了.
没有75这样的数据啊.倒,于是去问别人,没人回答,因为当时小李不在.
(第二天通过用olly改,知道其实把85改称84就行了)
假设当时我就知道85改84的话,当时就成功了.
)用w32dasm发现一个问题,有的时候,改过数据后提示保存为另一个文件,但是那个文件经常是0字节根本打不开,请问高手是怎么回事?)
我怀疑是汉化的问题,所以我就用ultraedit改数据.他们的行数是不一致的,
在w32dasm中行数就是相对地址,在ultraedit中行数是文件偏移量.
当在w32dasm中选中相应行后,在状态栏就显示相对地址和文件偏移量
记下文件偏移量就可以在ultraedit中快速定位到相应的语句了.
如:00413063 0F8508010000 jne 00413171这句在状态栏显示为:
code data @:00413063 @offset 00013063h in file:crackme2.exe
记下00013063h,就可以找到相应行,这要比查找16进制代码要精确,因为0F8508010000这样的数据可能出现多次.
但是文件偏移量是唯一的,在定位到行时.程序提示如是16进制地址请前面加0x,不然会找错地方了.
用这种方法,发现改:00413063 0F8508010000 jne 00413171就行,:00413070 7519 jne 0041308B这句是不需要改的.
倒.写文字汇报怎么这么累,怪不得小李要用动画呢.哎.继续!
晚上没事干看看了pediy上的动态w32dasm,方法是这样的.
打开文件后,选择调试_加载进程,弹出一个对话框,要求输命令行,不要管它,点击载入!
弹出许多窗口主要是寄存器的状态.
此时再通过函数导入函数找vbastrcomp在的行.
* Reference To: MSVBVM60.__vbaStrComp, Ord:0000h
|
:0041305A FF1598104000 Call dword ptr [00401098]
:00413060 6685C0 test ax, ax
:00413063 0F8508010000 jne 00413171
:00413069 A110404100 mov eax, dword ptr [00414010]
:0041306E 85C0 test eax, eax
:00413070 7519 jne 0041308B
在0041305A按f2下个断点!然后再 调试_运行进程.
注册填入
姓名填入001jaye,注册码:abcdefgh
在堆栈esp+0处没有内容
esp+4处看到abcdefgh在esp+8处看到YE0001(和用smarkcheck的结果一致哦.后来用ollydbg也是一样的结果.)
但是小李的要求是'暴"而不是要简单地得到注册码哦.
(我的w32dasm真是的,不知怎么回事他调试的程序老是不弹到前面,总是w32dasm在前面不知怎么回事!高手指教!)
第二天好不容易等到小李.
说给我传个ollydbg的动画,看怎么破这个crackme2 的.其实就是怎么使用ollydbg哈哈.因为我当时就是不知道怎么改 jne 00413171,以为需要张ams和机器码的对照表.其实在ollydbg中好简单双击,就弹出个对话框让你可以改asm,超爽.从此也知道其实就是把85改称84就是jne改成je.
用ollydbg会弹出窗口,内容大致说是这个程序是加壳什么的,不要管它.因为我已经用fi看了没有壳,这里设断点的方法和win32dasm差不多:
按工具条中E按钮弹出可执行模块,双击msvbvm60.dll.因为vb6.0程序一般都是这里下断点的.
现在进入msvbvm60的窗口了. 因为c窗口的标题是模块-msvbvm60
右击该窗口的任一句,选择快捷菜单中的搜索_当前模块中的名称!弹出窗口N,在列表中找到vbastrcomp双击,
c窗口定位在了:
733B4825 > 837C24 04 02 CMP DWORD PTR SS:[ESP+4],2
再此用f2下个断点!然后调试_运行!
注册填入
姓名填入001jaye,注册码:abcdefgh 程序停在733B4825
一直按f8(单步跳过,)直到回到crackme2的领空. 赫赫.来到了
00413060 . 66:85C0 TEST AX,AX
00413063 . 0F85 08010000 JNZ crackme2.00413171
和前面一对照
:00413060 6685C0 test ax, ax
:00413063 0F8508010000 jne 00413171
没错,原来ollydbg这么好使.赫赫.lol
双击修改asm,保存一下,从中看到的确只要修改一处就可以了
那么下面的jna是干什么用的哪?(高手指教!)
0041306E . 85C0 TEST EAX,EAX
00413070 . 75 19 JNZ SHORT crackme2.0041308B
显然这次破解让我学了很多哦!
crackme2软件下载http://218.204.90.56/crackme22.exe
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
他的文章
看原图
赞赏
雪币:
留言: