IDA.修改程序_ZC收集

ZC: 现在(20171210)使用的IDA为:文件夹"IDA_Pro_v6.8_and_Hex-Rays_Decompiler_(ARM,x64,x86)_Green"(IDA_Pro_v6.8_and_Hex-Rays_Decompiler_(ARM,x64,x86)_Green.rar)

 

1、网上查到的方法:

  IDA安装目录 --> cfg 目录下-> idagui.cfg ,把DISPLAY_PATCH_SUBMENU    = NO  修改这个 NO 为 YES。

  这样在编辑菜单(Edit)下会多出一个 PATCH Program 的选项,然后就可以用里头的assemble来修改了

  ZC: 我的这个版本,"Patch program"默认已经存在于"Edit"下。

 

 

2、http://blog.csdn.net/hgy413/article/details/50650232

ZC: 下文中提到的 “Produce file --> Create DIF file” 在哪里?

20.IDA-修改二进制文件、显示修改点

1.功能选项

Edit▶Patch Program菜单是GUI版本的IDA的一项隐藏功能,用户需要编辑idagui.cfg配置文件才能激活该菜单 
这里写图片描述

可用选项如图所示 
这里写图片描述

1.1.Change byte

用于编辑IDA数据库中的字节值。相关的字节编辑对话框如图所示 
这里写图片描述 
这个对话框显示了从光标所在位置开始的16个字节的值。你可以更改显示的部分或全部字节。 
同时,Address表示了虚拟地址,File offset表示了文件偏移量。

实际上,Hex View可以直接改字节,右键Edit即可

1.2.Change word

功能更有限,感觉没必要介绍了

1.3.Assemble

利用“汇编”选项可以输入使用一个内部汇编器汇编的汇编语言语句。然后,IDA会将得到的指令字节写入当前的屏幕位置 
这里写图片描述 
但不如人愿: 
这里写图片描述 
点击最右边的Help,我们可以找到答案:

This command allows you to assemble instructions. Currently, only the IBM PC processors provide an assembler, nonetheless, plugin writers can extend or totally replace the built-in assembler by writing their own. 
The assembler requires to enclose all memory references into square brackets. For example: 

        mov ax, [counter]

Also, the keyword 'offset' must not be used. Instead of 
        mov eax, offset name

you must write 
        mov eax, name
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

所以写成push aQqres就OK了

1.4.Apply patches to input file

把改动更新到二进制文件中 
这里写图片描述

2.DIF显示被修改的地方

Produce file▶Create DIF file 
DIF文件是一个纯文本文件,其中列出了一个IDA数据库中所有被修改的字节。 
这个文件的第一行是注释,第一行是最初的二进制文件的名称,随后则是文件中被修改的字节列表。每一行都指出被修改的字节的文件偏移量(而非虚拟地址)、字节的原始值以及字节在数据库中的当前值。 
这里写图片描述

3、

4、

5、

 

posted @ 2017-12-10 13:35  DebugSkill  阅读(3811)  评论(0编辑  收藏  举报