初次尝试使用IDAPro修改程序控制流程

Posted bcbobo21cn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初次尝试使用IDAPro修改程序控制流程相关的知识,希望对你有一定的参考价值。

先用VC6写一个简单程序;

如果在输入框输入 ABCdef ,单击按钮则弹出“密码正确”,否则弹出“密码错误”;

用IDAPro打开此exe;打开时有一些打开选项,例如选择处理器类型,因为不同的处理器指令集不同,按二进制打开文件时选择不同的指令集识别出的内容会不一样;先都默认;

进到反汇编窗口,可以在文本模式和图形模式之间切换;

切到文本模式;

从选项菜单调出如下对话框;把线框处改为16,这样会显示指令的机器码;

看一下机器码显示了;

jnz指令的机器码为75,如果改为74,就变为jz指令;

jnz,结果不为零(或不相等)则转移; jz即零标志为1就跳转;

这是最基本的破解原理,可以学习一下;干坏事是不好的;把75改为74,看一下是否产生输入任何内容都弹出 密码正确 的效果;

用文本搜索功能,搜到一个 75 ;

选择如下菜单,Edit - Patch program - Change byte...;

在弹出对话框把75改为74;

看一下改了;

然后选择如下菜单,应用改变到输入文件;

OK,保存;

然后运行程序;并没有改过来,还是要输入正确的密码才弹出 密码正确;

改的可能不是地方;

看一下IDA Pro的函数窗口;这是识别出的MFC函数;双击AfxMessageBox,

定位到对应反汇编代码处;看一下,这个if-else,应该是编译为jmp,并没有编译为jnz;下回继续;

 

以上是关于初次尝试使用IDAPro修改程序控制流程的主要内容,如果未能解决你的问题,请参考以下文章

汇编语言入门:流程控制

四,程序流程控制之函数

四,程序流程控制之函数

Java_程序流程控制和数组

近期处理多个Highcharts图标时,碰到重复操作,所以编写了一个流程控制器

程序流程控制1