能力值:
( LV3,RANK:20 )
|
-
-
76 楼
看过这篇文章后觉得自己把困难估计得过低了。尤其是在循环的识别和高级数据结构的恢复上。
65eK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3k6A6M7$3R3^5z5o6S2Q4x3X3g2U0L8$3#2Q4x3V1k6Q4x3X3c8@1x3e0M7I4z5e0x3%4
http://bbs.pediy.com/showthread.php?t=77108
但是用反汇编记录来帮助调试,用数据流来分开壳和可执行程序,这个思路也是对的,只是现在理论不成熟的情况下,要靠污点传播,凭经验,靠人肉,肯定是免不了的。
呵呵,接下来方向不变,目标可以降低一点。当个小助手用。
|
能力值:
( LV3,RANK:20 )
|
-
-
77 楼
哇,我知道了!原来问题要这么去解决。
|
能力值:
( LV3,RANK:20 )
|
-
-
78 楼
我的方法和他有不同,但原理是一样的。
6deK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4m8S2M7r3g2J5i4K6u0W2k6h3c8#2i4K6u0W2j5$3&6Q4x3V1k6A6L8X3c8W2P5q4)9J5k6i4m8Z5M7q4)9J5c8X3c8W2k6X3q4#2L8s2c8Q4x3V1k6B7L8%4g2J5L8X3q4D9i4K6u0r3k6r3!0%4L8V1y4G2N6h3&6@1i4K6u0r3x3e0j5%4x3g2)9J5k6o6f1@1z5e0N6Q4x3U0R3J5x3o6l9&6i4K6t1&6x3o6q4Q4x3X3b7H3x3e0b7K6i4K6u0V1x3o6f1`.
一定要用到统计哦:
ea4K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3c8E0i4K6u0W2N6r3S2K6M7#2)9J5k6i4c8K6K9h3&6Y4K9s2g2S2i4K6u0W2k6h3c8#2i4K6u0W2j5$3&6Q4x3V1k6H3N6h3u0D9K9h3y4S2N6r3W2G2L8W2)9J5c8W2)9J5y4f1f1^5i4K6t1#2b7f1g2Q4x3U0g2m8x3g2)9J5y4f1f1%4i4K6t1#2b7f1g2Q4x3U0f1&6y4#2)9J5y4f1f1$3i4K6t1#2z5f1y4Q4x3U0g2n7b7g2)9J5y4f1f1#2i4K6t1#2b7U0N6Q4x3U0g2m8y4g2)9J5y4f1f1%4i4K6t1#2b7e0S2Q4x3U0f1^5b7U0l9#2i4K6u0V1i4K6u0V1i4K6t1#2c8e0g2Q4x3U0f1&6b7#2)9J5y4f1p5^5i4K6t1#2c8e0g2Q4x3U0g2m8y4q4)9J5y4f1p5%4i4K6t1#2c8e0g2Q4x3U0f1&6c8g2)9J5y4e0S2n7i4K6t1#2c8e0k6Q4x3U0f1&6y4g2)9J5y4f1t1H3i4K6t1#2c8e0k6Q4x3U0f1^5c8q4)9J5y4f1q4q4i4K6t1#2c8e0W2Q4x3U0f1&6b7W2)9J5y4e0R3$3i4K6t1#2c8e0c8Q4x3U0g2n7z5q4)9J5y4e0S2m8i4K6t1#2c8e0k6Q4x3U0f1^5c8W2)9J5y4e0V1H3i4K6t1#2c8e0W2Q4x3U0g2m8b7W2)9J5y4e0V1^5i4K6t1#2c8e0g2Q4x3U0g2n7b7g2)9J5y4e0S2r3i4K6t1#2c8e0g2Q4x3U0f1^5z5q4)9J5y4e0V1%4i4K6t1#2c8e0k6Q4x3U0f1^5b7#2)9J5y4e0V1$3i4K6t1#2c8e0k6Q4x3U0f1^5c8g2)9J5y4e0V1^5i4K6t1#2c8e0k6Q4x3U0f1&6y4g2)9J5y4e0R3^5i4K6t1#2c8e0N6Q4x3U0f1^5c8g2)9J5y4e0R3%4i4K6t1#2c8e0N6Q4x3U0f1&6b7g2)9J5y4e0R3@1i4K6t1#2c8e0N6Q4x3U0g2n7b7W2)9J5y4e0W2r3i4K6t1#2c8e0S2Q4x3U0g2m8c8g2)9J5y4f1p5I4i4K6t1#2c8e0k6Q4x3U0f1&6y4W2)9J5y4f1t1&6i4K6t1#2c8e0k6Q4x3U0g2n7x3#2)9J5y4e0V1#2i4K6u0W2f1p5c8r3
一样的想法,不一样的用途
b3aK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3W2T1L8g2)9J5k6h3y4G2L8g2)9J5c8X3c8W2N6X3g2D9L8%4m8W2M7Y4N6G2M7X3E0K6i4K6u0r3j5$3&6Q4x3V1k6%4k6h3u0K6M7r3S2W2M7X3g2Q4x3V1k6D9K9h3u0J5j5i4u0&6i4K6u0r3N6r3g2U0K9r3q4J5N6r3W2U0L8r3g2K6i4K6u0r3x3e0l9H3x3W2)9#2k6X3k6J5j5h3&6C8i4K6u0r3x3e0l9H3x3W2)9#2k6X3k6J5j5h3&6C8i4K6u0W2K9s2c8E0L8l9`.`.
一个ARM的实现
利用RealView Profiler工具进行软件代码优化
b85K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4u0W2j5h3I4$3K9h3g2%4i4K6u0W2j5$3!0E0i4K6u0W2j5$3&6Q4x3V1k6K6K9r3!0H3M7r3W2U0i4K6u0r3K9i4q4Q4x3X3b7H3y4#2)9J5c8W2)9J5y4f1f1#2i4K6t1#2z5o6S2Q4x3U0g2m8z5g2)9J5y4f1f1%4i4K6t1#2z5e0c8Q4x3U0g2m8z5q4u0W2j5h3I4h3K9h3g2%4i4K6g2X3f1s2u0G2k6X3W2D9k6i4u0Q4x3U0g2q4y4W2)9J5y4e0R3&6i4K6t1#2b7V1g2Q4x3U0g2q4y4g2)9J5y4f1q4r3i4K6t1#2b7V1u0Q4x3U0g2q4y4q4)9J5y4f1u0n7i4K6t1#2b7e0y4Q4x3U0g2q4y4#2)9J5y4f1p5H3i4K6t1#2z5o6q4Q4x3U0g2q4y4q4)9J5y4f1u0o6i4K6t1#2z5e0S2Q4x3U0g2q4y4g2)9J5y4e0S2o6i4K6t1#2z5e0k6Q4x3U0g2q4z5q4)9J5y4e0R3&6i4K6t1#2b7f1k6Q4x3U0g2q4y4W2)9J5y4e0W2o6i4K6t1#2b7V1q4Q4x3X3g2H3k6r3j5`.
相关理论的最新进展
基于命题演算的高级控制结构恢复
903K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3g2U0K9h3y4W2x3o6k6Q4x3X3g2U0L8$3#2Q4x3V1k6q4e0W2)9J5c8X3q4J5N6r3W2U0L8r3g2Q4x3V1k6V1L8%4N6F1L8r3!0S2k6p5q4J5N6r3W2U0L8r3g2r3K9h3I4W2i4K6u0W2k6r3!0Q4x3@1k6S2N6s2c8S2j5$3S2f1P5i4m8W2i4K6y4p5f1p5c8r3i4K6t1$3K9h3c8Q4x3@1b7I4z5e0l9#2z5l9`.`.
我的程序中可以获得的信息要比以上的论文的前提条件更丰富,我们有一个完整的动态调试记录,虽然没有遍历分支,但是可以用符号计算来遍历,我们不仅可以命题演算,还可以用扫描和统计来了解实际到底是怎样的流程。因此,程序的理论基础虽然很薄弱,但还是有希望的。
找到的资料真不少,又是一篇简介,他们要是能结合动态调试的结果调整对控制流的分析,那么结果就更精确了
面向二进制代码安全分析的反编译关键技术研究(二进制,代码分)
6b7K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3A6A6K9X3W2F1P5Y4g2Q4x3X3g2U0L8$3#2Q4x3V1k6Y4P5q4)9J5c8U0V1J5y4U0p5&6y4U0m8Q4x3X3g2Z5N6r3#2D9
|
能力值:
( 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能够帮助理解虚拟机,但是最终要化整为零,要花很多工夫,而且最后也要特化处理。这两种形式网上都有相关论文和例子(我记得是7bbK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3!0H3k6h3&6J5j5$3g2Q4x3X3g2G2M7X3N6Q4x3V1k6T1L8r3!0Y4i4K6u0r3N6X3W2W2N6#2)9J5c8U0p5J5x3K6S2Q4x3V1k6h3e0g2m8J5L8%4c8W2j5%4c8Q4x3V1y4Q4y4h3k6b7j5i4u0@1i4K6g2X3x3q4)9K6b7g2)9#2k6W2)9#2k6V1u0S2M7$3W2U0M7#2)9J5z5g2)9J5k6g2)9J5y4X3&6T1M7%4m8Q4x3@1u0Q4x3U0k6F1j5Y4y4H3i4K6y4n7i4@1f1%4i4K6R3$3i4K6W2r3i4@1f1%4i4@1u0n7i4K6R3K6i4@1f1%4i4K6V1@1i4@1p5^5e0$3y4S2L8h3I4Q4c8e0N6Q4z5f1q4Q4z5o6c8Q4c8e0c8Q4b7V1q4Q4b7V1q4Q4c8e0g2Q4b7U0m8Q4b7U0q4Q4c8e0c8Q4b7U0S2Q4z5p5c8Q4c8e0g2Q4b7e0c8Q4z5f1q4Q4c8f1k6Q4b7V1y4Q4z5p5y4Q4c8e0N6Q4z5o6k6Q4z5f1k6Q4c8e0N6Q4b7V1u0Q4z5o6y4Q4c8e0k6Q4z5e0y4Q4z5p5c8Q4c8e0c8Q4b7V1c8Q4z5f1y4Q4c8e0N6Q4b7V1y4Q4z5e0k6Q4c8e0S2Q4b7f1k6Q4z5e0q4Q4c8e0g2Q4z5e0W2Q4b7e0S2Q4c8e0k6Q4z5p5q4Q4z5o6m8Q4c8e0k6Q4z5f1y4Q4b7f1k6Q4c8e0N6Q4z5f1q4Q4z5o6c8Q4c8e0W2Q4z5o6u0Q4b7e0y4Q4c8e0g2Q4b7U0m8Q4b7U0q4Q4c8e0k6Q4z5f1u0Q4b7U0c8Q4c8e0k6Q4z5e0S2Q4b7f1k6Q4c8e0g2Q4b7f1k6Q4b7e0g2Q4c8e0g2Q4b7f1k6Q4b7e0g2Q4c8e0k6Q4z5e0N6Q4b7e0m8Q4c8e0g2Q4z5o6N6Q4b7e0m8Q4c8e0y4Q4z5o6m8Q4z5o6t1`.
期待fg分享其他宝贵的信息。
|
能力值:
( LV9,RANK:200 )
|
-
-
97 楼
膜拜forgot,foxabu
今天才知道BitBlaze,下了src看了下。受益匪浅,好好学习
|
能力值:
( LV3,RANK:25 )
|
-
-
98 楼
膜拜 fg 和 BitBlaze, 这帖子历史真久
|
能力值:
( LV8,RANK:120 )
|
-
-
99 楼
和我的想法不谋而和
|
能力值:
( LV2,RANK:10 )
|
-
-
100 楼
嗯 看了看 获益
|
|
|