首页
社区
课程
招聘
[讨论]我想做一个这样的智能反汇编工具,不知想法对不对,请大家讨论一下!!
发表于: 2008-11-20 21:19 7342

[讨论]我想做一个这样的智能反汇编工具,不知想法对不对,请大家讨论一下!!

2008-11-20 21:19
7342
由于很多人不懂汇编,阅读汇编是一件很痛苦的事情,所以我想做一个将二进制程序自动逆成高级语言代码的工具。

我觉得逆成c语言很简单。因为一台计算机或者二进制代码对我而言只是这么几个东西:
寄存器---------只是对应高级语言的几个变量而已
字符串操作-----也有高级语言对应
push、pop----可以写一个push()、pop()栈操作函数
跳转-------------对应goto
各种取数据操作--高级语言里都有,取地址,地址取值,,等等
各种运算操作------高级语言里都有

基于上,所以我认为将二进制代码机械地翻译成高级语言是一件很简单的事情,当然翻译结果的代码量可能会很大,但这只是第一步,还需要第二步。这二步的工作是用人工智能优化翻译结果了,自动模块化,生成大小合理的函数。

我对第一步的工作(机械翻译)很恐惧,因为我不懂机器码汇编之类的。
我对第二部的工作(智能优化翻译结果)很有信心,因为我的人工智能功底还不错。

希望大家提出看法。

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

收藏
免费 0
支持
分享
最新回复 (18)
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
2
对,加油~~重在坚持
2008-11-20 21:25
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
3
翻出来的东西将很难看
2008-11-20 21:29
0
雪    币: 2368
活跃值: (81)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
4
楼主知道 Hex-Rays Decompiler ida的插件吧?

你可以和它的作者取得联系........
2008-11-20 21:30
0
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
5
if diasm
else try
fly
2008-11-20 21:34
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
6
如果本着学习原理的出发点,很好。

如果真要开发出一个实用的工具,恕我直言,真的,,,你想得太简单了。

可以看一下IDA的汇编结果。反汇编分析要处理的事远远超出了你的想象。

不仅要处理交叉引用,数据与代码的识别,还要面对各种anti的干扰。

而且,反汇编分析工具,比如IDA,也进行一定程度的语义分析,所以IDA甚至能对变量名和函数名进行猜测,但产生的结果距离真正的易于阅读的代码还是相去甚远。

虽然很难,不过我也想能够有这样的工具。有时间的话,我正在考虑写个虚拟机+反汇编引擎的东西。

如果真做了,也希望能够得到你的帮助。

但时间的问题,我也不知道这什么时候能开始做。
2008-11-20 21:39
0
雪    币: 723
活跃值: (81)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
7
汇编早就有另一种“高级语言”表示方法了,可以看看《高级汇编语言编程》一本,好象是这个名字吧
2008-11-20 21:40
0
雪    币: 463
活跃值: (116)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
想法不错,,你最好是能把VMP的东西都正确表达出来,,

那你就是中国的牛人了..
2008-11-20 22:10
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
原来这东西有人在做了,,,晕
2008-11-20 22:51
0
雪    币: 563
活跃值: (95)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
祝愿楼主早日梦想成真
2008-11-20 23:18
0
雪    币: 2368
活跃值: (81)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
11
我想楼主会给我们一个更称手的工具......
j加油...
2008-11-20 23:21
0
雪    币: 247
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
刘涛涛不是有个 反汇编成c 的软件吗
2008-11-21 09:19
0
雪    币: 101
活跃值: (88)
能力值: ( LV2,RANK:140 )
在线值:
发帖
回帖
粉丝
13
帮你澄清一下, 二进制代码 != 汇编

我的想法和你类似, 由于很多人不懂电脑, 用电脑是一件很痛苦的事, 所有我打算开发一个工具, 把电脑作的事转换成用人脑来完成.
2008-11-21 14:14
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
14
可惜LZ要面对一个图灵停机问题
2008-11-21 14:30
0
雪    币: 22
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
我也同意这个说法,机器码到汇编码只是第一步,之后,你首先需要将汇编进一步细化成RTL指令,容易让机器理解,然后,是控制流分析,由于二进制代码通常是经过编译器优化,因此,控制流通常都不是很规整,improper的循环很多,我们需要动用编译中的规约技术将控制流规整话,然后,对控制流进行数据流分析,从二进制逆向的数据流分析技术并不成熟。此外,由于二进制代码中的任何间接内存访问都可以看成是指针操作,而目前指针别名分析在国际上还是一个open的问题,而二进制级的分析技术就更是罕见(应该是这3、4年才刚又热起来的),我们必须改进相关的指针别名分析技术区分间接内存引用的内存别名,经过合适的内存别名分析后,我们才能准确的区分出各个变量。另外,Shape分析可以辅助分析内存堆中的数据结构。这些分析搞定之后,就可以通过这些分析的结果还原出高级语言的代码。当然这里面还有很多问题需要克服,如果你没有做过,可以建议看看Boomrange这个反编译系统。不过看样子这个项目好像进展放缓了,但是它的技术是我看到过的最规整的。另外,反编译技术中的控制流分析,数据流分析等各种技术都不成熟,很多技术都需要重新理解、变化。
2008-11-21 17:24
0
雪    币: 22
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
回:书呆彭

我也有想法改造XEN成为一个高级调试器的想法,技术准备应该都有。就是没有志同道合的人。最近VT-d技术已经有了,这给我们通过XEN设计调试器调试本机驱动带来了巨大的方便。我仔细研究过可行性,除了工程量外应该都没什么问题。
2008-11-21 17:33
0
雪    币: 221
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
......................
网上有直接到C的 工具
但是不是很理想
上传的附件:
2008-11-22 09:24
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
好咚咚的当然支持
2008-11-22 15:24
0
雪    币: 424
活跃值: (10)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
19
支持
现在已有强大的f5
2008-11-22 15:40
0
游客
登录 | 注册 方可回帖
返回
//