x64dbg调试器使用
- x64dbg调试器
- x64dbg基本功能
- 控制软件运行
- 查看软件运行中信息
- 修改软件执行流程
- x64dbg调试器的使用
- 测试程序
- 使用步骤
- 打开软件
- 软件下载
x64dbg调试器
相信很多大学生学习写程序,都是通过编译器将写的程序经过编译之后生成可执行文件.exe(windows),博主当时也是这么一个经历,很少会想过如何通过.exe文件来查看以及了解自己写的程序是如何运行,之后了解到一款软件OD OD,是一个反汇编工具,又叫OllyDebug,一个新的动态追踪工具,将IDA与SoftICE结合起来的思想,Ring 3 级的调试器,己代替SoftICE成为当今最为流行的调试解密工具了。同时还支持插件扩展功能,是目前最强大的调试工具。基本上,调试自己的程序因为有源码,一般用vc,破解别人的程序用OllyDebug。博主之前本来想使用这款软件进行测试,后来由于下载的是32位的软件,之际电脑64位的,64的博主当时没找到,之后了解到x64dbg,与OD软件功能一样x64dbg是一个调试器,可全功能调试 dll 和 exe 文件。
x64dbg基本功能
控制软件运行
调试器的最基本功能就是将一个飞速运行的程序中断下来,并且使其按照用户的意愿执行。调试器是靠迫使目标程序触发一个精心构造的异常来完成这些工作的。
查看软件运行中信息
查看软件的当前信息,这些信息包含但不限于当前线程的寄存器信息,堆栈信息、内存信息、当前 EIP 附近的反汇编信息等。
修改软件执行流程
修改内存信息、反汇编信息、堆栈信息、寄存器信息等等。
x64dbg调试器的使用
测试程序
首先我们需要写一个测试程序,该测试程序,需要用户输入密码,测试程序如下,相信小伙伴肯定能看懂得:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | //#include "stdafx.h" #include <string.h> #include <stdio.h> #define PASSWARD "12345" int test(char *passward) { int ret_num; char buffer[17]; //strcpy (buffer,passward); ret_num =strcmp(passward,PASSWARD); strcpy (buffer,passward); return ret_num; } void main() { int flag=0; char passward[88]; while(1) { printf("please input passward: "); scanf("%s",passward); flag = test(passward); if(flag) { printf("incorrect passwor!\n\n"); } else { printf("Success! You are right !\n"); } } } |
博主通过gcc编译器生成.exe可执行程序,如图
使用步骤
首先假使我们仅仅有exe可执行文件,并且我们不知道正确的密码,当我们执行可执行文件,随便输入一个密码,会提示我们==incorrect passwor!==当然如果你运气爆棚,一次性输入正确的密码,另外博主还是要友情建议,为了这个测试,请输入错误的密码。(ps passwor应该为password)如图
打开软件
点击桌面x96dbg
博主的程序是64位的,其他小伙伴可以根据自己的程序选择合适的版本,博主并未选择安装,一方面博主不想随便在电脑上安装软件,毕竟windows系统不像linux系统稳定应高,能用就行。另一个原件就是博主比较懒,懒得装。
打开界面如下
将我们用gcc编译的exe可执行文件拖到软件,得到如下信息
上图我们可以得到软件的汇编代码,需要小伙伴对汇编代码有一定了解,能够看懂并了解。由于之前我们输入错误的代码会得到incorrect passwor! 因此我们需要在得到的汇编中找到这个提示字符,在汇编窗口点击鼠标右键,点击选择中的所有模块,并搜索该字符串,如下图
如上图,我们找到该字符串双击,进入到汇编代码处,如图
此处就需要用到小伙伴们从书本中学到的汇编知识了。此处我们可以了解,汇编用了je跳转指令,je 表示等于就跳转,由于我们想要跳过该处判断,因此可以用到汇编中jne,该跳转语句完全与je跳转相反,因此,我们将je该为jne双击该处如图
将je改为jne并保存。并在汇编窗口点鼠标右键,选择补丁,如图
选择修补文件,并设置保存名字,博主随便设置一个名字dbg.exe。最后找到该可执行文件,双击选择输入密码,博主随便输入一个数字,最后成功。(ps 正确密码是12345)如图所示
软件下载
最后博主将使用的软件供大家学习下载,省得去网上找。我已经上传到我的资源,小伙伴可以去下载。