逆向中获取 Block 的参数和返回值


#21

很强势,学习了。 开源精神万岁!


#22

拿到block具体函数地址下断点后,如何直接打印回调回来的参数呢?po $r2 类似这样,不行


#23

自己解决了,感觉自己萌萌哒,原来参数是从 po $r1 开始的


#24

你好,郭总 . memory read --size 4 --format x 0x16fd8a958 中的 0x16fd8a958 是怎么算出来的.能教一下吗?


#25

这个应该是作者笔误的。不存在0x16fd8a958,只存在上面拿invoke函数指针时的0x16fd88f88

memory read --size 8 --format x 0x16fd88f88

换成每个单元4个字节输出:

memory read --size 4 --format x 0x16fd88f88

输出结果的第3个值0xc2000000就是flags的int值。

(lldb) expr -- ((0xc2000000 & (1 << 30)) != 0)
(bool) $28 = true

就说明block有签名。


#26

兄弟谢谢,解惑:grinning:


#27

我想hook一个block的返回值 怎么获取呢?? 没啥头绪


#28

保存原来block的函数指针,自己准备一个新的函数并用自己这个函数的指针替换原来block里的函数指针,自己的block里按需要调用原来的函数或直接修改返回值


#29

摸索了一上午 保存原来block的函数指针、替换原来block里的函数指针,这两步不晓得如何操作,整体逻辑很明白 就是hook函数 修改或查看参数。


#30

正向的block 也只是会简单得用起来 没太深入理解


#31

我是用MABlockClosure,可以在XM文件里复制一个,id cp = [arg1 copy] ,然后传给MABlockClosure,它会打印出block的函数参数信息,以及返回。


#32

MABlockClosure是啥 有相关解说 最好是demo么


#33

MABlockClosure


#34

感谢感谢🙏


#35

现在的版本编译不了 怎么办啊


#36

用MABlockClosure闪退 什么原因


#37

麻烦问一下 reserved这个字段为什么没有了呢? 按说实现函数的指针不应该是第4段也就是第24个字节后面吗? 实际操作也确实没有reserved。 但是Block_descriptor_1中的reserved还是有一个0x000000在。


#38

大佬,O(∩_∩)O谢谢分享


#39

libffi-ios 请教一下你是咋装上去的?

我的报错fatal error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo: can’t open input file: armv6-ios/.libs/libffi.a (No such file or directory)