加密与解密(OD使用笔记&简单实践_①)
来源:互联网 发布:剑灵龙男捏脸数据 编辑:程序博客网 时间:2024/06/09 19:00
工欲善其事,必先利其器。OD被誉为逆向破解领域的倚天剑,武林至尊宝刀屠龙,号令天下莫敢不从,倚天不出谁与争锋····
本来想玩玩脱壳的,但是不会用OD,所以就先来熟悉一下OD的使用,顺便做一些简单的实践。
推荐视频教程:鱼C工作室_加密与解密系列_OD使用教程
OD的快捷键:
##################################华丽丽的栅栏分割##################################
实践1:用OD逆向修改该程序的标题。
1.打开OD载入该程序;
2.一路F8不回头;
3.弹出信息框时,在该地址下段点;
4.重新载入,Ctrl+F9直接到达段点,F7单步步入;
5.继续一路F8不回头,观察汇编指令;
F8之后观察OD中注释框,找到了两个字符串,一个是信息框的标题,另一个是信息框的内容。很有意思的是,这里的字符串的不是直接传给函数,而是把字符串放在内存中,用内存地址索引。因为字符串太常的话寄存器放不下,所以就放在内存,用地址间接索引。
Ctrl+G输入该字符串的地址,然后在下面的框修改该数据。(字符串是以0结尾)
##################################################################################
##################################华丽丽的栅栏分割##################################
实践2:用OD对下面的程序进行简单暴力破解。本来是程序是看雪写的那个动态分析小程序,但是教程有点模糊没看到最后搜的是哪个函数名,所以一直找不到位置,陷在消息队列死循环里,所以就自己写了一个。(原理都是一样的,修改ZF标志位直接绕过)
暂时不会写GUI程序用控制台程序也一样,莫吐槽↓
简单的来说,就是要输入符合的帐号密码才能显示出“正确!”,但是我们可以随便输入,然后用OD直接绕过;
1.载入程序,继续一路F8不回头(或者Ctrl+F8,遇到输入或者其他问题OD会自己停下);
2.OD停止之后,查看程序运行的地方是不是你要动手脚的地方,若是就下断点Ctrl+F2重新调试,若不是就按操作继续找断点;
3.找到要动手脚的地方,一般都是Call跳转到该函数的地址,F7单步步入继续一路F8;
4.看来找到位置了,接下来是新技巧,在0040DA9C除下断点,Ctrl+F2重新调试;解释一下为什么要在这个位置,因为一般返回值都是存在eax中的,也可以说绝大多数。在0040DAA4处test eax,eax(与操作,但不会改变eax的值)就是判断该返回值。ZF是汇编语言中的零标志位,记录指令执行结果是否为零。如果一条指令执行后结果为零,ZF的值为1,否则为0。
5.运行到这里,继续F8单步执行,观察右框ZF标志位的值,当它为1就改为0,直接实现简单的暴力破解;
6.抱歉,是运行到40DAA6处,才手动改变ZF的值,je是条件跳转指令,具体刷汇编语言。知其然知其所以然才是王道,这只是笔记,就不写那么多原理了,看着笔记我也能想到什么原理,加深印象。
##################################################################################
本来想玩玩脱壳的,但是不会用OD,所以就先来熟悉一下OD的使用,顺便做一些简单的实践。
推荐视频教程:鱼C工作室_加密与解密系列_OD使用教程
OD的快捷键:
##################################华丽丽的栅栏分割##################################
实践1:用OD逆向修改该程序的标题。
1.打开OD载入该程序;
2.一路F8不回头;
3.弹出信息框时,在该地址下段点;
4.重新载入,Ctrl+F9直接到达段点,F7单步步入;
5.继续一路F8不回头,观察汇编指令;
F8之后观察OD中注释框,找到了两个字符串,一个是信息框的标题,另一个是信息框的内容。很有意思的是,这里的字符串的不是直接传给函数,而是把字符串放在内存中,用内存地址索引。因为字符串太常的话寄存器放不下,所以就放在内存,用地址间接索引。
Ctrl+G输入该字符串的地址,然后在下面的框修改该数据。(字符串是以0结尾)
##################################################################################
##################################华丽丽的栅栏分割##################################
实践2:用OD对下面的程序进行简单暴力破解。本来是程序是看雪写的那个动态分析小程序,但是教程有点模糊没看到最后搜的是哪个函数名,所以一直找不到位置,陷在消息队列死循环里,所以就自己写了一个。(原理都是一样的,修改ZF标志位直接绕过)
暂时不会写GUI程序用控制台程序也一样,莫吐槽↓
简单的来说,就是要输入符合的帐号密码才能显示出“正确!”,但是我们可以随便输入,然后用OD直接绕过;
1.载入程序,继续一路F8不回头(或者Ctrl+F8,遇到输入或者其他问题OD会自己停下);
2.OD停止之后,查看程序运行的地方是不是你要动手脚的地方,若是就下断点Ctrl+F2重新调试,若不是就按操作继续找断点;
3.找到要动手脚的地方,一般都是Call跳转到该函数的地址,F7单步步入继续一路F8;
4.看来找到位置了,接下来是新技巧,在0040DA9C除下断点,Ctrl+F2重新调试;解释一下为什么要在这个位置,因为一般返回值都是存在eax中的,也可以说绝大多数。在0040DAA4处test eax,eax(与操作,但不会改变eax的值)就是判断该返回值。ZF是汇编语言中的零标志位,记录指令执行结果是否为零。如果一条指令执行后结果为零,ZF的值为1,否则为0。
5.运行到这里,继续F8单步执行,观察右框ZF标志位的值,当它为1就改为0,直接实现简单的暴力破解;
6.抱歉,是运行到40DAA6处,才手动改变ZF的值,je是条件跳转指令,具体刷汇编语言。知其然知其所以然才是王道,这只是笔记,就不写那么多原理了,看着笔记我也能想到什么原理,加深印象。
##################################################################################
0 0
- 加密与解密(OD使用笔记&简单实践_①)
- 加密与解密(OD使用笔记&简单实践_②)
- 加密与解密(OD使用笔记&简单实践_③)
- 加密与解密(PE结构笔记_概述)
- 加密与解密笔记
- 加密与解密(PE结构笔记①)
- 《加密与解密》笔记(一)
- 《加密与解密》笔记(二)
- 《加密与解密》笔记(三)
- 《加密与解密》笔记三(一)
- 《加密与解密》笔记三(二)
- 《加密与解密》笔记四(一)
- 《加密与解密》笔记四(二)
- 《加密与解密》笔记四(三)
- 《加密与解密》笔记四(四)
- 《加密与解密》笔记五(一)
- 《加密与解密》笔记五(二)
- 《加密与解密》笔记六(一)
- 从 xUtils 中发现的Android 6.0 版本更新问题
- 关于Android的EditText的部分属性
- 继承与多态(三):使用虚函数实现多态
- 【android_温故知新】第 3 组 UI 组件:ImageView 及其子类
- Socket编程——第三方类库 AsyncSocket
- 加密与解密(OD使用笔记&简单实践_①)
- 20个非常有用的Java程序片段
- nyoj 68三点顺序 【几何】
- IOS中Block小结
- Make系统变量
- 【STL】STL之顺序容器:vector、deque、list、forward_list、array、string
- Android数字游戏之数独(自动随机生成不同难度的数独)
- 加密与解密(OD使用笔记&简单实践_②)
- leetcode Add Digits