keypatch基本使用

Edit -> Keypatch -> Patcher

选中一行指令patch

可以输入汇编代码 nop啥的

Edit -> Keypatch -> Fill Range

选中一定范围的指令一起patch

可以输入汇编代码

也可以输入16进制 “90” “0x90” “90,91” “AAh”等。

Edit -> Patch program -> Apply patches to input file

撤消上一个操作,而且可以撤销多次(好像是无限制?亲测20次还是能继续撤销(好哎

Edit -> Patch program -> Apply patches to input file

将修改保存到一个新的二进制文件(这是ida原本就有的功能

可以搜索汇编指令,不能直接搜索16进制

多条指令用 ; 分隔

备注

keypatch怕你忘了patch前的指令是啥,还加了个备注提醒。太贴心了

打patch方法

UAF

增加置0的环节

off by one

改读的字节数

栈溢出

改读的字节数

堆溢出

改读的字节数

格式化字符串

增加合适的参数

不太优雅的方法

nop 掉 free

nop 掉 malloc

在读的字节中过滤一些特殊的字符

打乱got表

Keystone库 安装踩坑

环境:macOS
python:2.7

python终端报错信息如下,网上说少so库,我没在系统里找到。

1
2
3
4
5
6
7
8
>>> import keystone
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/site-packages/keystone/__init__.py", line 4, in <module>
from .keystone import Ks, ks_version, ks_arch_supported, version_bind, debug, KsError, __version__
File "/usr/local/lib/python2.7/site-packages/keystone/keystone.py", line 75, in <module>
raise ImportError("ERROR: fail to load the dynamic library.")
ImportError: ERROR: fail to load the dynamic library.

解决方法:

1
2
//下载
https://pypi.python.org/packages/9a/fc/ed0d3f46921bfaa612d9e8ce8313f99f4149ecf6635659510220c994cb72/keystone-engine-0.9.1-3.tar.gz
1
2
3
//安装
cd keystone-engine-0.9.1-3
sudo python setup.py install

这下终端不报错了,ida还是报错


解决方法:

1
2
3
4
5
6
7
8
9
//查看keystone在哪
Python 2.7.16 (default, Jun 19 2019, 07:41:28)
[GCC 4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.11.45.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import keystone
>>> print keystone
<module 'keystone' from '/usr/local/lib/python2.7/site-packages/keystone/__init__.pyc'>
>>> print keystone.arm_const
<module 'keystone.arm_const' from '/usr/local/lib/python2.7/site-packages/keystone/arm_const.pyc'>
1
2
3
4
5
//将其复制到ida.app里
$ sudo cp -r ./keystone /Applications/IDA\ Pro\ 7.0/ida.app/Contents/MacOS/python
$ sudo cp -r ./keystone /Applications/IDA\ Pro\ 7.0/ida64.app/Contents/MacOS/python
$ pwd
/usr/local/lib/python2.7/site-packages

最后重启ida

成功!