好的,感谢大大,代码是读了,但某些原理的操作还是不太明白,我还是先去补逆向的知识吧
请问MachOStaticPatcher支持短函数吗?
还有回调原函数时,原函数的前5个指令直接没了
这个短函数是几条指令?
3个,少于5个指令应该就很难操作了吧
请问一下,回写被覆盖的原函数的前几条指令是不是还没写完整?
某些函数crash了,像_sqlite3VdbeFreeCursor开头指令是cbz、ldrb
回写是什么意思, 写什么东西
想调回原函数,要把原函数被覆盖的前几条指令写好
抱歉,是我没搞清楚,把偏移量算错了,上面的提问请忽略哈
不需要多次使用,一次使用就够了
./MachOStaticPatcher [macho] [地址1] [地址2] ····
0x10046EE4C 0x10046EDC0,这两个函数长什么样,来自于什么段?
这两个函数地址需要是在macho中的物理地址喔
这个MachOStaticPatcher是inline hook,是patch函数的,写参数和返回值避免污染寄存器
指针的话不太合适
1、可信,因为是读二进制里面的指令解析的
2、写不写都行,看你想不想拿参数做事,但返回值最好给,这两个函数还是比较鲁棒
2、 ZzReplace( void *function_address, void *replace_call, void **origin_call)用这个的话你填的是运行时地址
3、运行时hook和Staticpatcher的inline hook不同
3、用Staticpatcher最好写参数,因为怕操作污染寄存器,所以用参数保存
抱歉,不知道我有没有说清楚
我是开源的, 兄弟, 看一下代码.
lipo提取为单架构尝试下,可以自己写个demo测下嘛,
找dSYM就是物理地址了或者我是用hopper看的
如果有符号直接nm都能看到了
如果自己写的demo都不行那再聊
大佬们,问下 monkeyDev里面怎么使用这个libRuntimeSupport.dylib动态库,monkeyDev本身生成的动态库里面用不了这个动态库,有没有办法
MachOStaticPatcher是什么静态Patch吗,可以实现非越狱环境下hook c函数?
被移除了?我运行有问题 segmentation fault