20.IDA-修改二进制文件、显示修改点
2016-08-01 11:46
274 查看
原文地址::http://blog.csdn.net/hgy413/article/details/50650232
相关文章
1、IDA学习笔记----http://wenku.baidu.com/link?url=8LEGhV6t5xQtGSJFk8CurjSVl8EgZ0zg6o1BztiZvIBlH2P-M22N8vRuWdjqpoSYopA2KI3epBGWIsV3DjJvELKLlWGKm8UTtblfjtiLDSm
Edit▶Patch Program菜单是GUI版本的IDA的一项隐藏功能,用户需要编辑idagui.cfg配置文件才能激活该菜单
可用选项如图所示
用于编辑IDA数据库中的字节值。相关的字节编辑对话框如图所示
这个对话框显示了从光标所在位置开始的16个字节的值。你可以更改显示的部分或全部字节。
同时,Address表示了虚拟地址,File offset表示了文件偏移量。
实际上,Hex View可以直接改字节,右键Edit即可
功能更有限,感觉没必要介绍了
利用“汇编”选项可以输入使用一个内部汇编器汇编的汇编语言语句。然后,IDA会将得到的指令字节写入当前的屏幕位置
但不如人愿:
点击最右边的Help,我们可以找到答案:
所以写成push aQqres就OK了
把改动更新到二进制文件中
Produce file▶Create DIF file
DIF文件是一个纯文本文件,其中列出了一个IDA数据库中所有被修改的字节。
这个文件的第一行是注释,第一行是最初的二进制文件的名称,随后则是文件中被修改的字节列表。每一行都指出被修改的字节的文件偏移量(而非虚拟地址)、字节的原始值以及字节在数据库中的当前值。
相关文章
1、IDA学习笔记----http://wenku.baidu.com/link?url=8LEGhV6t5xQtGSJFk8CurjSVl8EgZ0zg6o1BztiZvIBlH2P-M22N8vRuWdjqpoSYopA2KI3epBGWIsV3DjJvELKLlWGKm8UTtblfjtiLDSm
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,我们可以找到答案:
<code class="hljs applescript has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">This command allows you <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">to</span> assemble instructions. Currently, only <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">the</span> IBM PC processors provide an assembler, nonetheless, plugin writers can extend <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">or</span> totally replace <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">the</span> built-<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> assembler <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">by</span> writing their own. The assembler requires <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">to</span> enclose all memory references <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">into</span> square brackets. For example: mov ax, [counter] Also, <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">the</span> keyword '<span class="hljs-command" style="box-sizing: border-box;">offset</span>' must <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">not</span> be used. Instead <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">of</span> mov eax, <span class="hljs-command" style="box-sizing: border-box;">offset</span> <span class="hljs-property" style="box-sizing: border-box;">name</span> you must <span class="hljs-command" style="box-sizing: border-box;">write</span> mov eax, <span class="hljs-property" style="box-sizing: border-box;">name</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li></ul>
所以写成push aQqres就OK了
1.4.Apply patches to input file
把改动更新到二进制文件中
2.DIF显示被修改的地方
Produce file▶Create DIF file DIF文件是一个纯文本文件,其中列出了一个IDA数据库中所有被修改的字节。
这个文件的第一行是注释,第一行是最初的二进制文件的名称,随后则是文件中被修改的字节列表。每一行都指出被修改的字节的文件偏移量(而非虚拟地址)、字节的原始值以及字节在数据库中的当前值。
相关文章推荐
- 20.IDA-修改二进制文件、显示修改点
- 20.IDA-修改二进制文件、显示修改点
- 20.IDA-修改二进制文件、显示修改点
- 20.IDA-修改二进制文件、显示修改点
- 修改Listctrl的显示Style
- 直接修改TWebBrowser显示内容
- *.cpl文件的妙用(随意修改cpu显示数据,内存显示随意修改等等)
- 05-01-14 关键字高亮显示的算法进行修改
- 通过修改视图来修改首页显示标题字体过小的问题
- 在VC中调用WORD(显示,修改,存盘,运行宏)之二去掉word的常用,格式工具栏
- 从MapX到MapXtreme2004[10]-根据zoom值修改显示范围
- 针对这一段时间ASP.NET版中比较集中突出的问题,我写了一个完整的页面,包含显示/修改/删除/添加/排序/合并/写文件/显示图片或文档,有详细代码注释
- 用户控件(显示用户信息,修改用户名密码)的WebPart预览版
- XML文件显示、修改、查找
- 修改phpmyadmin的默认显示字体
- 带客户端脚本的图片控件,可利用后台代码修改图片显示(C#代码)
- 修改XPMenu让ToolButton在Down=True时正确显示
- 写了一个将VxWorks的shell打印输出到指定内存中的接口,可广泛用于CLI下的调试函数显示以及故障自动捕获等功能,稍作修改可以适合其它嵌入式OS
- 修改Firefox的Adblock,屏蔽其状态栏的显示文字
- 修改CCS首页显示的论坛帖子和Blog日志的数量