加密与解密(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是条件跳转指令,具体刷汇编语言。知其然知其所以然才是王道,这只是笔记,就不写那么多原理了,看着笔记我也能想到什么原理,加深印象。
    ##################################################################################
0 0
原创粉丝点击