首页
社区
课程
招聘
[原创]一个基于x86的C/C++语言反编译c-decompiler
发表于: 2009-10-2 04:42 135417

[原创]一个基于x86的C/C++语言反编译c-decompiler

2009-10-2 04:42
135417
收藏
免费 7
支持
分享
最新回复 (220)
雪    币: 334
活跃值: (78)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
151
能反编译c++, 那真是近乎于神了

试了下, 好像只能反比较简单和程序
2009-11-6 21:45
0
雪    币: 69
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
152
楼主厉害。辛苦了
2009-11-7 17:57
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
153
关注in
楼主加油啊!
2009-11-9 13:38
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
154
能不能反编译其它处理器指令的可执行文件?
例如ARM, MIPS, SH?
2009-11-9 14:19
0
雪    币: 303
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
155
目前该版本只支持x86,等完善后会加入对其他处理器的支持。毕竟嵌入式方面有很大的应用。
2009-11-10 00:00
0
雪    币: 435
活跃值: (172)
能力值: ( LV13,RANK:280 )
在线值:
发帖
回帖
粉丝
156
我是来打酱油的, 顶发哥
2009-11-25 10:36
0
雪    币: 331
活跃值: (56)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
157
建议LZ多靠考虑下实用性
2009-11-25 10:36
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
158
什么时候能逆反编译器的主程序?
2009-11-25 10:43
0
雪    币: 303
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
159
该项目目前处于孵化阶段,正在招聘实习生:
http://bbs.pediy.com/showthread.php?t=101800

欢迎有兴趣的同学参加。
2009-11-25 10:55
0
雪    币: 1946
活跃值: (243)
能力值: (RANK:330 )
在线值:
发帖
回帖
粉丝
160
貌似还不如与IDA结合,做个局部反编译来得实在
2009-11-25 11:08
0
雪    币: 303
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
161
尽量去做,万一做出来了,以后就不用依附IDA 了。当然,难度会非常大。
2009-11-25 11:22
0
雪    币: 303
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
162
哪方面的实用性,比如?
2009-11-25 11:27
0
雪    币: 1946
活跃值: (243)
能力值: (RANK:330 )
在线值:
发帖
回帖
粉丝
163
如果能识别出pe文件中的数据和代码,就没难度了,不过这是不可能的。
2009-11-25 12:05
0
雪    币: 340
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
164
局部反汇编对C++无效
2009-11-25 12:48
0
雪    币: 303
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
165
数据不好识别。但可以确定哪些是代码,剩下的认为都是数据。
代码的确定可以这样做:从入口函数开始,递归处理每个被调用的函数,模拟CPU的行为,只要CPU是处理过的,都认为是代码。
当然,剩下的那些“数据”,有可能包含代码,比如C++ exception中的catch块代码,这可以通过其他方法解决。但一些可以自修改的代码,可以是数据也可以是代码,极难解决。
还有其他一些诡异的代码,但这些代码一般都不是由高级语言编译器编译而成的!可以无视它们,直接内嵌汇编处理。

一条重要的原则是:
c/c++反编译器是针对c/c++编译器的行为,逆其道而行,不是针对所有的pe文件。
简单的说,不是任意由汇编写的一段代码都可以被反编译成对应功能的C代码的。
2009-11-25 12:55
0
雪    币: 303
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
166
局部反汇编无效?
只要这"局部",不是从一条指令中间切割而来的或者从数据中间切割过来的,都是可以反汇编的。

你指的是反编译吧?
反编译要从整体上把握,局部反编译有太多局限性了。
2009-11-25 13:01
0
雪    币: 331
活跃值: (56)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
167
所谓实用就是.能实质提高与推动逆向效率.比如F5插件那种.就算你做的和IDA一样强大.离你的设计目标也太远了.再说就算山寨IDA也不是一个容易的事情.所以说最后这个项目的结局可能并不好看.
2009-11-25 14:32
0
雪    币: 303
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
168
谢谢大家的建议!难度很大,但总得有人去做吧,不能仅仅望洋兴叹,而不动手吧。
2009-11-25 14:51
0
雪    币: 331
活跃值: (56)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
169
如果你现在做的是探索性质的科研项目,那么你肯定能成为此领域的先驱
如果你现在做的事商业性质的软件工程,那么你肯定能成为此领域的先烈
2009-11-25 15:03
0
雪    币: 303
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
170
[QUOTE=Isaiah;717222]如果你现在做的是探索性质的科研项目,那么你肯定能成为此领域的先驱
如果你现在做的事商业性质的软件工程,那你你肯定能成为此领域的先烈[/QUOTE]

......
2009-11-25 15:12
0
雪    币: 328
活跃值: (34)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
171
不能下载了是吗?
2009-11-25 15:22
0
雪    币: 303
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
172
可以下载的。再试试看
2009-11-25 15:35
0
雪    币: 1946
活跃值: (243)
能力值: (RANK:330 )
在线值:
发帖
回帖
粉丝
173
[QUOTE=Isaiah;717222]如果你现在做的是探索性质的科研项目,那么你肯定能成为此领域的先驱
如果你现在做的事商业性质的软件工程,那么你肯定能成为此领域的先烈[/QUOTE]

我很赞同123456
2009-11-25 17:01
0
雪    币: 1946
活跃值: (243)
能力值: (RANK:330 )
在线值:
发帖
回帖
粉丝
174
不是打击LZ,想要做全局反编译,首先要做到比IDA更强,能识别更多地信息

代码的确定可以这样做:从入口函数开始,递归处理每个被调用的函数,模拟CPU的行为,只要CPU是处理过的,都认为是代码。


IDA所作的工作远不止这些,LZ可以去逆向IDA看看。我在处理VMP的时候,就是用了这种方法,但VMP的流程是完全可控的,不存在意外情况,但是全局反编译的话情况就不同了,会出现很多复杂麻烦的情况。

要超越IDA很难,超越站在IDA上的hexrays更难。

不过我还是很支持LZ的,无论先驱还是先烈,只要有人尝试就很不错了,我等只不过是在这里空口说白话罢了。
2009-11-25 17:11
0
雪    币: 303
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
175
谢谢!
大家各抒己见是好事。从不同的角度看问题,事情越辩也就越明了

另外,这项目刚刚起了个头,离真正完成还得一两年时间。现在正在招人一起干,争取半年后吸引到第二轮投资,项目才好继续开发下去。
不想超越IDA,IDA太强大了。只想集中在反编译这块。IDA的hexrays也是这两年才发展起来的,应该是07年初才发布的。大家起点差不多,不见得会输多少。
2009-11-25 17:25
0
游客
登录 | 注册 方可回帖
返回
//