前言:
准备高考,结果考砸,很长时间没有发布技术类文章了。尼玛,我给大家带来了OD破解基础教程,大神绕过不要喷我,基本没有接触过破解的,看了(如果智商可以)基本能学会的嘎。 重在基础 附有素材。
这一节我们来学习破解原理(基础)
提取码为:7c0e点击下载素材
注意:请事先开启影子系统,并尽量在裸机中进行调试,360报毒且会影响调试进程。本文件也报毒(估计易语言写的)
打开软件如图:
分析:此程序包含用户认证 账号 密码 部分 先随意填写账号密码点击登录
提示下图:
提示信息:登录失败 OK 字符串已经确定 当我们输入错误信息时候出现提示 信息内容为 (登录失败) 当我们输入正确 提示登陆成功 。破解目标为:输入错误 提示成功。
二话不说载入OD(因为是基础教程所以没有加壳,大胆载入)载入结果如下
好了,我们右键开启菜单搜索字符串 (编码是ASCII或者UNICODE)实在不知道就单击自动搜索吧。
搜索结果如图所示:
搜索:登录失败 注意 不是登陆失败。语文怎么学的!为了防止前后有符号限定,我们可以通量话搜索,找到最无干扰的。单击找到的字符串来到图下位置:
看没看到那个红色钩子 它从jmp一直贯穿CALL(一般call是重要指令如调动其他…) 我先科普下。
jmp ;无条件跳转 指哪飞哪 一些杂志中说的直飞光明顶,指的就是它了~ 光明顶一般指爆破地址
根据条件跳转的指令:
JE ;等于则跳转
JNE ;不等于则跳转
JZ ;为 0 则跳转
JNZ ;不为 0 则跳转
但我们实际用到的一般只有 jmp je jne jz jnz而已 所以大家只要清楚这5个跳转的条件即可,别的那些了解下就好了
———-
根据条件跳转的指令:
JE ;等于则跳转
JNE ;不等于则跳转
JZ ;为 0 则跳转
JNZ ;不为 0 则跳转
但我们实际用到的一般只有 jmp je jne jz jnz而已 所以大家只要清楚这5个跳转的条件即可,别的那些了解下就好了
———-
那么继续这个图的逻辑如下:jmp是无条件跳转,也就是说程序运行到这里跳过了“登录失败”这个判断,前面我们看到注释“登陆成功” 大概意思是:前面判断密码正确=“登陆成功”条件达成 后面jmp过登录失败。可知我们输入错误信息应该是其他跳转指向这个“登录失败”的CALL 调用对话框。
我们往上找,找到指向“失败”的箭头:
好了,事情瞬间明朗了。这个构造很简单,现在JE等于则跳转到“登陆失败”可见这里是于真实算法进行比较,我们让他这里的je不跳转不就成功了? 方法有:1.NOP填充 NOP就是空的意思让je这个区域的跳转失效(没有判断条件) 2.让他成为JNE (改变了它的判别方程式)。
我们用方法1 单击je哪一行 右键 ——二进制——用NOP填充 效果如图下:
修改完成我们按快捷键 F9 进行修改后的软件调试 。
OK,破解完成。(程序载入较慢,越大越慢,别F8按个不停)调试完成,但此时的修改只是基于OD,没有修改到程序,word还要整个另存为呢。。。右键——复制到可执行文件 ——选择 弹出M1框 在M1框右键—全选 (选定所有代码)——保存到文件
至此,破解过程结束,本教程也结束了。累死我的说。。。。 你们学会了么?
后记:
破解属于反汇编的一种,软件OD 属于动态内存编译程序 ,这个教程只是很肤浅的谈谈基础。现在的软件有壳(一种指引CPU绕代码防止破译的东东)复杂的花指令 ,混淆进程等反调试破解方法。so。后面教程还很多。