原文地址::http://blog.csdn.net/hgy413/article/details/50650232
相关文章
1、IDA学习笔记----http://wenku.baidu.com/link?url=8LEGhV6t5xQtGSJFk8CurjSVl8EgZ0zg6o1BztiZvIBlH2P-M22N8vRuWdjqpoSYopA2KI3epBGWIsV3DjJvELKLlWGKm8UTtblfjtiLDSm
1.功能选项
Edit▶Patch Program菜单是GUI版本的IDA的一项隐藏功能,用户需要编辑idagui.cfg配置文件才能激活该菜单
![这里写图片描述](https://img-blog.csdn.net/20160210203642536)
可用选项如图所示
![这里写图片描述](https://img-blog.csdn.net/20160210203811866)
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了
把改动更新到二进制文件中
![这里写图片描述](https://img-blog.csdn.net/20160210205835375)
2.DIF显示被修改的地方
Produce file▶Create DIF file
DIF文件是一个纯文本文件,其中列出了一个IDA数据库中所有被修改的字节。
这个文件的第一行是注释,第一行是最初的二进制文件的名称,随后则是文件中被修改的字节列表。每一行都指出被修改的字节的文件偏移量(而非虚拟地址)、字节的原始值以及字节在数据库中的当前值。
![这里写图片描述](https://img-blog.csdn.net/20160210210551440)