能力值:
( LV3,RANK:20 )
|
-
-
76 楼
看过这篇文章后觉得自己把困难估计得过低了。尤其是在循环的识别和高级数据结构的恢复上。
http://www.fish888.com/-t171937
http://bbs.pediy.com/showthread.php?t=77108
但是用反汇编记录来帮助调试,用数据流来分开壳和可执行程序,这个思路也是对的,只是现在理论不成熟的情况下,要靠污点传播,凭经验,靠人肉,肯定是免不了的。
呵呵,接下来方向不变,目标可以降低一点。当个小助手用。
|
能力值:
( LV3,RANK:20 )
|
-
-
77 楼
哇,我知道了!原来问题要这么去解决。
|
能力值:
( LV3,RANK:20 )
|
-
-
78 楼
我的方法和他有不同,但原理是一样的。
http://www.paper.edu.cn/index.php/default/journal/downCount/1671-5497(2009)01-0143-05
一定要用到统计哦:
http://dm.thss.tsinghua.edu.cn/publication/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%B7%A5%E7%A8%8B05--%E5%9C%A8%E5%A4%A7%E5%9E%8B%E6%95%B0%E6%8D%AE%E9%9B%86%E4%B8%8A%E6%8F%90%E9%AB%98%E5%BA%8F%E5%88%97%E6%8C%96%E6%8E%98%E6%95%88%E7%8E%87%E7%9A%84%E7%BB%9F%E8%AE%A1%E6%96%B9%E6%B3%95.PDF
一样的想法,不一样的用途
http://www.ibm.com/developerworks/cn/websphere/library/techarticles/1002_frank/1002_frank.html
一个ARM的实现
利用RealView Profiler工具进行软件代码优化
http://www.realview.com.cn/shoppic/iq-07/%E5%88%A9%E7%94%A8RealView_Profiler%E6%89%BE%E5%AF%BB%E4%BB%A3%E7%A0%81%E4%BC%98%E5%8C%96%E8%89%AF%E6%9C%BA.pdf
相关理论的最新进展
基于命题演算的高级控制结构恢复
http://www.ecice06.com/EN/article/downloadArticleFile.do?attachType=PDF&id=19058
我的程序中可以获得的信息要比以上的论文的前提条件更丰富,我们有一个完整的动态调试记录,虽然没有遍历分支,但是可以用符号计算来遍历,我们不仅可以命题演算,还可以用扫描和统计来了解实际到底是怎样的流程。因此,程序的理论基础虽然很薄弱,但还是有希望的。
找到的资料真不少,又是一篇简介,他们要是能结合动态调试的结果调整对控制流的分析,那么结果就更精确了
面向二进制代码安全分析的反编译关键技术研究(二进制,代码分)
http://www.jijinzu.com/gx/9261960.html
|
能力值:
( LV3,RANK:20 )
|
-
-
79 楼
经过今天一天的思考,我得到了一个很好的主意,表面上看混淆代码拉长了分析的线路,隐藏了真正的信息。
但实际上从另一方面来看,它们同时正在把更多的信息暴露出来。关键是如何去解读了。今天完成了对解读控制流的基本思路,明天搞数据流在控制流上的映射了。
|
能力值:
( LV6,RANK:90 )
|
-
-
80 楼
,.....不懂。只想知道代码已经写了多少了,能切张图, 让我开心一下么。
|
能力值:
( LV9,RANK:180 )
|
-
-
81 楼
如果我打这么多字
我一定没力气写代码
|
能力值:
( LV2,RANK:10 )
|
-
-
82 楼
文是好文,但是看得头大,收获有一点,表示感谢!
|
能力值:
( LV4,RANK:50 )
|
-
-
83 楼
都是很深奥的东西..看着很有希望的感觉..
但是就是实现起来...还是很漫长的道路.
顶
|
能力值:
( LV3,RANK:20 )
|
-
-
84 楼
这几天我试了很多调试器和反编译器,最后发现都不是很理想,目前的决定是要用 gdb ,然后通过 gdb/mi 的接口让被调试的程序运行,然后读取一段内存,送到 beaengine 的引擎进行反汇编,当反汇编遇到跳转时,就停止,通知 gdb 在跳转指令处下断,然后执行到断点处,再反汇编下一段。还可以在执行中对我们感兴趣的地方下断,获取指令执行后的结果,这样就避免了单步执行的低效率,同时也不会遗漏任何真正有价值的信息。
那么,为什么不使用调试器本身的反汇编功能呢?
因为 beaengine 的反汇编有个很有用的特点,它可以输出反汇编的中间结果,就是一个描述指令具体细节的数据结构,这比给出一条指令的助记符格式更好,省得先把指令翻译到助记符,再从助记符翻译到数据结构了。
为了支持更多的调试器后端,这个分析引擎和调试器要做到模块上的分离。
数据库我选 postgresql。
对于循环,我只反汇编第一次,然后在出口语句和关键信息处理语句上下断,这样又可以节省时间了。争取到循环结束时,是提供这个循环处理的结构化数据视图和处理框架。
图形界面的话,我想了想,还是用 gtk 来做,比 QT 更开源,比 wxwidget 更有自由度。
欢迎更多的建议。
|
能力值:
( LV3,RANK:20 )
|
-
-
85 楼
测试一下回帖
|
能力值:
( LV3,RANK:30 )
|
-
-
86 楼
我一直默默等待神器的出现
|
能力值:
( LV2,RANK:10 )
|
-
-
87 楼
搞得火热,大牛们
|
能力值:
( LV2,RANK:10 )
|
-
-
88 楼
很强大的说,谢谢楼主分享
|
能力值:
( LV2,RANK:10 )
|
-
-
89 楼
想法是美好,现实是惨酷的。
我也在想:如果能有一位顶级的调试大师来回答下这一命题,就好了。
|
能力值:
( LV2,RANK:10 )
|
-
-
90 楼
拜读,楼主的想法相当学术,期待更多的好点子
|
能力值:
( LV2,RANK:10 )
|
-
-
91 楼
很多东西 都很模糊 看的头大
|
能力值:
( LV2,RANK:10 )
|
-
-
92 楼
刚学混淆,楼主给了一个好的思路,支持下!
|
能力值:
( LV2,RANK:10 )
|
-
-
93 楼
这个难度有点大。
|
能力值:
( LV2,RANK:10 )
|
-
-
94 楼
这是一个很大的工程,以一个人的力量要做完真的是很难
|
能力值:
( LV2,RANK:10 )
|
-
-
95 楼
何时能看到楼主的大作......期待中
|
能力值:
( LV13,RANK:530 )
|
-
-
96 楼
膜拜fg, 那么早就知道BitBlaze了,不愧为是博览群书啊。
Symbolic Execution 可以解决大部分问题。
另外metasm 里面用到的backtrace,也比较有意思,实际上这也是Symbolic Execution的一种形式。
Optimization能够帮助理解虚拟机,但是最终要化整为零,要花很多工夫,而且最后也要特化处理。这两种形式网上都有相关论文和例子(我记得是http://www.openrce.org/blog/view/1238/VMProtect,_Part_0:__Basics). 熟练用Ocaml的人就不多,熟练操作编译器技术的那就更是寥寥无几。
期待fg分享其他宝贵的信息。
|
能力值:
( LV9,RANK:200 )
|
-
-
97 楼
膜拜forgot,foxabu
今天才知道BitBlaze,下了src看了下。受益匪浅,好好学习
|
能力值:
( LV3,RANK:25 )
|
-
-
98 楼
膜拜 fg 和 BitBlaze, 这帖子历史真久
|
能力值:
( LV8,RANK:120 )
|
-
-
99 楼
和我的想法不谋而和
|
能力值:
( LV2,RANK:10 )
|
-
-
100 楼
嗯 看了看 获益
|
|
|