-
-
[旧帖] [求助][求助]网上一个破解加密狗的教程贴子最后一段话,我怎么没法执行~~ 0.00雪花
-
发表于: 2011-12-29 14:49 1572
-
看了一个教程贴子,按照它的意思来学习,但最后一段话(标红)始终没看明白~~请大侠解释解释……
ps:加密狗的dll和调用函数已经我找到了,下面该如何做呢?
以下是教程贴子:
最近接触了一个行业软件,用vb写的。无壳无狗(不知道是什么狗,我这次破解的狗是调用dll的),我以前发的帖子也介绍过,它是有狗就是正版,无狗就是测试版的软件。测试版加了很多的限制,如果这些限制用下断点搞不定,依然会出现运行错误的话,这说明软件先调用某个dll后判断是不是正版还是测试版加了很多限制后运行,在运行过程中通过变量比较后,才触发1个限制,其他的由于这个被跳过而发生程序运行出错。
对这类的软件要可以通过资源工具getvbres修改关键的unicode为自己熟悉的记号(最好是英文)进行破解。我破解的软件改了也更新不进去,说明这软件不让进行资源修改。
于是od载入,vb的经典入口特征
68 8C794100 push EIAProA_.0041798C
E8 EEFFFFFF call <jmp.&MSVBVM60.#100>:msvbvm60.ThunRTMain f7跟进
找到了msvbvm60调用的函数列表,vb调用函数为msvbvm60.DllFunctionCall
内存地址 FF25 04124000 jmp dword ptr ds:[<&MSVBVM60.DllFunction>; msvbvm60.DllFunctionCall
我估计这个软件是调用某个dll来判断的,于是我在上面的地址下断点,断下后堆栈显示
0012FAB4 内存地址1 返回到 内存地址1
……
0012FABC 内存地址2 返回到 内存地址2 来自 内存地址3
内存地址1为内存地址运行后到达的地址
内存地址2上面的call就是调用这个函数
找到这个关键cal,下断点,ctrl+f2,点f9后,断下,f7,来到。
内存地址 A1 24DFD700 mov eax,dword ptr ds:[D7DF24]
内存地址 0BC0 or eax,eax
内存地址 74 02 je short *****.0045FC2B
内存地址 FFE0 jmp eax
内存地址 68 08FC4500 push *****.0045FC08
内存地址 B8 806A4100 mov eax,<jmp.&MSVBVM60.DllFunctionCall>
内存地址 FFD0 call eax
内存地址 FFE0 jmp eax
这是vb的写的反汇编后的调用某个的函数的,都一样的。
单步走,看寄存器。会出现调用的dll名称。然后大家根据这个名称在百度搜一下,一般这类的狗的dill动态链接库都是一个名字。
或单步走进入这个dll 把它复制出来看属性。一般都会有哪个公司的标记。
由此确定dll是不是调用狗的call,不是继续f9,直到找到调用狗的dll文件。以前的如果不是调用狗的dll文件,取消call的断点。保留
内存地址 FF25 04124000 jmp dword ptr ds:[<&MSVBVM60.DllFunction>; msvbvm60.DllFunctionCall
内存地址 A1 24DFD700 mov eax,dword ptr ds:[D7DF24]
内存地址 0BC0 or eax,eax
内存地址 74 02 je short *****.0045FC2B
内存地址 FFE0 jmp eax
内存地址 68 08FC4500 push *****.0045FC08
内存地址 B8 806A4100 mov eax,<jmp.&MSVBVM60.DllFunctionCall>
内存地址 FFD0 call eax
内存地址 FFE0 jmp eax
这个两个地址的断点。
找到狗的dll后重复以上的步骤,单步走,看寄存器,如果是狗的dll。找到的call就是关键call。一直f9所有的call都下断点。直到程序运行起来。
点击受限制的对话框时也调用了狗的dll进行判断,看看判断的几个call是不是在一个段内,如果是,找到段首下断点。ctrl+f2,这样就能看到call这段的所有地址了。找到这些地址,试试看把call 下面的je或jnz。单步走一下,试用版和正式版是不一样的。改成相反的就可以了。
这样试用版功能和正版功能就一样了。。
初次写这种破解文章,不知道大家看懂了没
ps:加密狗的dll和调用函数已经我找到了,下面该如何做呢?
以下是教程贴子:
最近接触了一个行业软件,用vb写的。无壳无狗(不知道是什么狗,我这次破解的狗是调用dll的),我以前发的帖子也介绍过,它是有狗就是正版,无狗就是测试版的软件。测试版加了很多的限制,如果这些限制用下断点搞不定,依然会出现运行错误的话,这说明软件先调用某个dll后判断是不是正版还是测试版加了很多限制后运行,在运行过程中通过变量比较后,才触发1个限制,其他的由于这个被跳过而发生程序运行出错。
对这类的软件要可以通过资源工具getvbres修改关键的unicode为自己熟悉的记号(最好是英文)进行破解。我破解的软件改了也更新不进去,说明这软件不让进行资源修改。
于是od载入,vb的经典入口特征
68 8C794100 push EIAProA_.0041798C
E8 EEFFFFFF call <jmp.&MSVBVM60.#100>:msvbvm60.ThunRTMain f7跟进
找到了msvbvm60调用的函数列表,vb调用函数为msvbvm60.DllFunctionCall
内存地址 FF25 04124000 jmp dword ptr ds:[<&MSVBVM60.DllFunction>; msvbvm60.DllFunctionCall
我估计这个软件是调用某个dll来判断的,于是我在上面的地址下断点,断下后堆栈显示
0012FAB4 内存地址1 返回到 内存地址1
……
0012FABC 内存地址2 返回到 内存地址2 来自 内存地址3
内存地址1为内存地址运行后到达的地址
内存地址2上面的call就是调用这个函数
找到这个关键cal,下断点,ctrl+f2,点f9后,断下,f7,来到。
内存地址 A1 24DFD700 mov eax,dword ptr ds:[D7DF24]
内存地址 0BC0 or eax,eax
内存地址 74 02 je short *****.0045FC2B
内存地址 FFE0 jmp eax
内存地址 68 08FC4500 push *****.0045FC08
内存地址 B8 806A4100 mov eax,<jmp.&MSVBVM60.DllFunctionCall>
内存地址 FFD0 call eax
内存地址 FFE0 jmp eax
这是vb的写的反汇编后的调用某个的函数的,都一样的。
单步走,看寄存器。会出现调用的dll名称。然后大家根据这个名称在百度搜一下,一般这类的狗的dill动态链接库都是一个名字。
或单步走进入这个dll 把它复制出来看属性。一般都会有哪个公司的标记。
由此确定dll是不是调用狗的call,不是继续f9,直到找到调用狗的dll文件。以前的如果不是调用狗的dll文件,取消call的断点。保留
内存地址 FF25 04124000 jmp dword ptr ds:[<&MSVBVM60.DllFunction>; msvbvm60.DllFunctionCall
内存地址 A1 24DFD700 mov eax,dword ptr ds:[D7DF24]
内存地址 0BC0 or eax,eax
内存地址 74 02 je short *****.0045FC2B
内存地址 FFE0 jmp eax
内存地址 68 08FC4500 push *****.0045FC08
内存地址 B8 806A4100 mov eax,<jmp.&MSVBVM60.DllFunctionCall>
内存地址 FFD0 call eax
内存地址 FFE0 jmp eax
这个两个地址的断点。
找到狗的dll后重复以上的步骤,单步走,看寄存器,如果是狗的dll。找到的call就是关键call。一直f9所有的call都下断点。直到程序运行起来。
点击受限制的对话框时也调用了狗的dll进行判断,看看判断的几个call是不是在一个段内,如果是,找到段首下断点。ctrl+f2,这样就能看到call这段的所有地址了。找到这些地址,试试看把call 下面的je或jnz。单步走一下,试用版和正式版是不一样的。改成相反的就可以了。
这样试用版功能和正版功能就一样了。。
初次写这种破解文章,不知道大家看懂了没
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
赞赏
赞赏
雪币:
留言: