首页
社区
课程
招聘
【OSG】OJTool - Putting the J into otool(1)
发表于: 2017-8-18 21:05 4128

【OSG】OJTool - Putting the J into otool(1)

2017-8-18 21:05
4128

你可能熟悉我的jtool,其中一个限制是我没有完全实现Intel的反汇编。那就是为何当你们坚持编写自己的反编译器而不使用radare/capstone等其他开源框架。

苹果的otool是不好用的(大多时候)。有时它会得到文字,有时它不会。截至10.12,后者比较多。是的,你能使用HOpper/IDA/etc,但是有时候用命令行(...|grep...)快速反编译没有什么能比上otool。不过它有个恼人的记号法——xxxx(%rip),所以还要自己算出ip相对地址是什么,对吧?

所以我为它写了一个简单的过滤器,它运行otool,然后缓存输出,查找xxx%(rip)和它下一行指令的IP值,然后执行简单的16进制加法。

依鄙人之见,有些东西应该已经通过一些开关实现了(免责 - 也许是吧?我没有费心去深入研究otool的-tV传参)。但后来我想,为什么不把它与jtool结合呢? 注意:

如果otool的文字检测每次都正常运行的话(你懂的,从文字池获取内容作为注释)这样做是没必要的。它只有时候起作用,并且到10.12为止大部分时没作用。因此比起修复这个问题它更适合用过滤器来做。

一图道千言 


我在一次MacOS应用逆向的培训中遇到了一个问题然后我引入了两个快速hack的重要方法到ojtool:


源地址: http://newosxbook.com/src.jl?tree=listings&file=otoolfilt.c


Zephyr:Work morpheus$ otool -tV /bin/ls | tail -10
00000001000043f1        pushq   %rbp
00000001000043f2        movq    %rsp, %rbp
00000001000043f5        movq    0xc14(%rip), %rax
00000001000043fc        movq    (%rax), %rcx
00000001000043ff        leaq    0xb20(%rip), %rdi
0000000100004406        movl    $0x3e, %esi
000000010000440b        movl    $0x1, %edx
0000000100004410        callq   0x1000044f2
0000000100004415        movl    $0x1, %edi
000000010000441a        callq   0x1000044b
Zephyr:Work morpheus$ ./otoolfilt /bin/ls | tail -10
00000001000043f1        pushq   %rbp
00000001000043f2        movq    %rsp, %rbp
00000001000043f5        movq    0x100005010, %rax
00000001000043fc        movq    (%rax), %rcx00000001000043ff        leaq    0x100004f26, %rdi ;  usage: ls [-ABCFGHLOPRSTUWabcdefghiklmnopqrstuwx1] [file ...]\r;0000000100004406        movl    $0x3e, %esi
000000010000440b        movl    $0x1, %edx
0000000100004410        callq   0x1000044f2
0000000100004415        movl    $0x1, %edi
000000010000441a        callq   0x1000044b6
  • 检查jtool -function_starts 提供函数边界显示
  • 将存根相关联jtool -lazy_bind以带回外部调用符号表
  • 更好的字符串支持
  • 基本颜色支持
  • Objective-C支持: 有/没有companion file,ojtool将获取所有__DATA.__objc* section和 __got数据。注意这是一个hack类别,它对ojtool性能有点影响,但是值得的。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//