欢迎光临散文网 会员登陆 & 注册

逆向动态调试工具简介

2023-04-26 15:36 作者:rkvir逆向工程学院  | 我要投稿

常用逆向工具简介:

二进制尽管属于底层知识,但是还是离不开一些相应工具的使用,今天简单介绍一下常用的逆向工具OD以及他的替代品x96dbg,这种工具网上很多,也可以加群找老满(184979281):

这俩款工具都是动态调试工具,使用方式也大致相同,唯一区别的OD属于经典款,各种功能插件及其全面好用,唯一不足就是没有64位版本,而x96dbg分x32dbg和x64dbg,支持64位,但是他的插件没有OD那么完善。我们用Visual Studio 2019编写一个demo,拖入OD中分析(32位):

#include
#include
char a[] = "https://www.vultop.com/";
int main(int argc, char* argv[])
{
    printf("%s", a);
    system("pause");
    return 0;
}



在这我们简单说一下OD主要使用的快捷键以及界面功能:



常用调试指令:

常用到的就是F7单步步入,比如走到一个call指令,F7会跟进call内部函数,F8单步步过则会跳过call内函数,执行到call下一行,F4是运行到当前光标位置,F9是让程序运行,Ctrl+F9是执行到当前call的返回地方ret指令。

断点类型:

int 3断点:F2键或者双击要下断点的代码的硬编码地方,当前代码会被暂时修改为int 3断点;

硬件断点:可以下四个硬件断点,DR0-DR3,记录四个地址;

内存断点:修改当前位置的内存属性,达到触发异常的目的。



接下来介绍一下主界面:



随后我们可以简单的通过俩种方式找到我们的主函数:

第一种,查找字符串:



可以看到我们打印的字符串,双击过去,到了我们的主函数中打印函数这里:



随后我们在这里F2下断点,然后F9就可以到我们的主函数这里:



单步走过printf函数,就可以看到控制台打印:



第二种找到主函数方法,根据VS编译器特征:

F8走过jmp,然后F7进入第一个call:



然后找到这一坨特征,进第二个call:



然后走第四个call:



走过一个jmp,就到了主函数这里:



接下来我们把demo改成64位,拖入x64dbg,大同小异,和OD用法基本一样:


逆向动态调试工具简介的评论 (共 条)

分享到微博请遵守国家法律