前面一章讲述了一个简单的 exe 智能反汇编引擎推导实现方法,但是实际操作要比上文要困难的多,
其中涉及很多烦琐的细节, 这里不进行进一步的讨论。
现在公认静态分析比较强的工具是
ida, 它有的智能反汇编和灵活的人工参与方式都是同类软件没法相比的。
这里讨论就是利用其强大的反汇编引擎,做一个把
ida 的汇编结果直接输出为可利用性极高的 obj 文件,
减轻逆向成本(
ida 的插件机制和很丰富的接口提供实现的可能)。
通常逆向代码的过程,首要找到感兴趣关键代码段,然后摸清其具体的意图(大多这个时候是不知道或不用知道其实现方法,
只要明白其最终的实现目的即可),然后一行一行的稍加修改引到自己的代码中(这个过程主要是汇编码), 更加有难度就是
将其还原为高级语言, 在把其引入自己代码中的时候,这个过程需要发很多时间进行修改和调试,此时也是了解其 Why 时候。
我先说一下,这个工具的主要就是免掉上面所述的第二步,只要结合
ida, 如果有必要,为你想要的函数或过程和全局数据
起个起意义的符号名即可。工具将根据
ida 提供的 name list 和 xref list, 来拆解所有你想要的“符号”(下面所说的符号,
即是函数也是数据,这也是连接器要使用的唯一概念)的关联关系。
按照 coff obj 文件格式,把符号按其属性归类,并且每个分配唯一的索引。
先把符号定义写到所属的节中,按照
ida 提供的引用关系,把每个符号的引用项清零(这里你可能听不太懂,有空想个更好的表达),
将其引用的符号的索引写到节的符号引用表中,最后把所有的符号名和其索引,所在节的索引,符号类型(extern or static ..)
写到全局符号定义表中(详细 coff 细节可以参看 slinker, obj2asm)
关于 obj 的使用,不用我在说了(可以直接链接,或用 lib.exe 转换为 lib 文件,这样别人的代码就和你骨肉不分了)。
突然想到一点,对有符号文件的可执行文件(比如 ms, 因为其符号名很有意义哦),那么转换出的 obj 可利用性将更高呵呵。
表达能力有限,xx 理论的东西就是这些下面将进行具体编码操作了。
希望出来后,有一点作用 -_-!!。
ida 反汇编 bios ida 反汇编objectc 插件
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
微信开发工具 显示console
(一) tabBar什么是tabBar 字段呢?先来看一下,官方定义 in other words,tabBar 字段就是负责创建一个标签页的效果。啥意思涅?我们打开某宝APP首页,首页下方的底部标签页面,我们使用全局配置文件中的tabBar (二)认识 tabBarlist 属性的描述和组成部分回到微信开发者工具 界面中,tabBar list 属性
微信开发工具 显示console swift tabbar点击的动画效果 两个list根据一个相同字段合并 将表中的一个字段和到list