能力值:
( LV2,RANK:10 )
|
-
-
2 楼
貌似是招学生的
|
能力值:
(RANK:10 )
|
-
-
3 楼
一周要5个工作日,最高工资不超过2000,挺会算计的
|
能力值:
( LV13,RANK:280 )
|
-
-
4 楼
招募Leader, 工资X10, 可以考虑一下
或者给个免试博士也可以考虑一下
|
能力值:
( LV13,RANK:410 )
|
-
-
5 楼
this如何识别?
|
能力值:
( LV4,RANK:50 )
|
-
-
6 楼
神兵利器。但是我想不会特别准确把。
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
不同的编译器有不同的识别方法,微软系列编译器一般使用ecx来传递this指针。
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
在保证准确性的基础上,提高生成代码的可读性。无法保证准确性的情况下,使用内嵌汇编表示或者与用户交互进行反编译
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
算计说得太难听了吧。
上海地区实习补助基本就这个价位。还免费提供酒店式住宿。
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
[QUOTE='火翼[CCG];717076']招募Leader, 工资X10, 可以考虑一下
或者给个免试博士也可以考虑一下 [/QUOTE]
大牛请无视我这帖子
|
能力值:
( LV13,RANK:410 )
|
-
-
11 楼
我的意思是类的非虚函数.如何正确的归类?
这个做不到,谈何反编译
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
|
能力值:
( LV13,RANK:410 )
|
-
-
13 楼
关键问题是归类?如何实现?
class A
{
void AA(void);
void AAA(void);
}
class B
{
void BB(void);
void BBB(void);
}
你怎么能知道AA和AAA属于A类.BBB和BB属于B类.
在有RTTI信息情况下.尚能分析出一些有意义的信息.如果没有RTTI呢?
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
你写个小函数调用这两个类的成员函数。
class A
{
public:
void AA(void){};
void AAA(void){};
};
class B
{
public:
void BB(void){};
void BBB(void){};
};
main()
{
A a;
B b;
a.AA();
a.AAA();
b.BB();
b.BBB();
}
你看看这情况下AA, AAA, BB, BBB的汇编代码就清楚了。
都是未定义而直接使用ecx。
AA,AAA使用了相同值的ecx。因此它们属于相同的类
BB,BBB使用了另外一个值的ecx,属于相同的类。
ecx不同划分为两个不同的类。
当然,还得处理相同类,不同对象的调用情况。
如A a1, A a2;
a1.AA();
a2.AAA();
情况有点复杂,原理已讲。具体如何实现反倒不是最重要的了。
呵呵,不需要我在这里贴出代码吧。
|
能力值:
( LV13,RANK:410 )
|
-
-
15 楼
我没有问如何识别类的函数.楼主不用再反复强调这个了.
我问的是如何把不同类的函数正确的归类.
你怎么能得到ecx的值?把程序模拟执行一次?ecx不一样就一定是异类? ecx一样就一定是同类?实际程序中的代码怎么可能这么简单。
为什么编译成byte code类的语言都有实用的反编译工具而编译成native code类的语言则一直没有实用的反编译工具?
做项目是做工程,不是科学.如何实现才是最重要的。
你刻苦钻研造出一个电脑,运行5分钟后爆炸.然后你可以宣布你发明了电脑.这个是科学.
造出来一个5分钟后不爆炸的实用的电脑,这个才是工程.
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
Isaiah今天是要打破沙锅问到底了。前面只是简单介绍用ecx来判断,具体情况很复杂,不是在这里三言两语就可以讲清楚的。基本原理是从ecx入口。其中会涉及到很多方面,得综合起来考虑。
你怎么能得到ecx的值?把程序模拟执行一次?
根据使用定义链和定义使用链(常用的编译技术)。ecx来自不同的变量,认为ecx不一样。
ecx不一样就一定是异类?
这个未必,有可能是同个类的不同对象。 前面有提到,这情况有点复杂。得综合考虑。
得加入其他算法,检测是否同个类对象。
ecx一样就一定是同类?
可以这样说!(只针对VC系列编译器,你能举个反例?)
|
能力值:
( LV13,RANK:410 )
|
-
-
17 楼
ecx不一样就一定是异类?
这个未必,有可能是同个类的不同对象。 前面有提到,这情况有点复杂。得综合考虑。
得加入其他算法,检测是否同个类对象。
现在有这样的算法吗?
ecx一样就一定是同类?
可以这样说!(只针对VC系列编译器,你能举个反例?)
多重继承
你的目标定得太理想化。实际应用中太多问题还没有理论上的解决方案。
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
反编译这一块理论确实还不怎么成熟。尤其是C++反编译!
反编译C++基本都是靠揣摩特定编译器的行为来做的,实在识别不出来,只能有C来表达了。
如类模板和函数模板,至今尚未找到解决的办法。
针对检测是否同个类对象,目前没有现成的算法。我自己简单实现了一下,主要是检测类成员个数,类型,以及类成员函数个数,和类成员函数的返回值,参数等等信息。完全一样则认为是同个类对象。这算法在某些情况下会误识别,需要在加入其他条件。正在一步一步完善中。
ecx一样就一定是同类?
可以这样说!(只针对VC系列编译器,你能举个反例?)
多重继承
不仅仅是多继承,单继承也有这问题。这属于另外个话题了:如何识别类与类之间的关系。继承,组合等等情况。
识别它们可以从构造函数入手。构造函数调用其他构造函数,继承。
如何识别构造函数?构造函数返回thsi指针。
......
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
这个项目更像是社会工程学,而不是技术项目。
|
能力值:
( LV13,RANK:410 )
|
-
-
20 楼
关键问题就在归类上。目前的没有实用的理论。所以说不妨做人机交互的局部的反编译软件。无论实用价值和科研价值都比现在这个项目好
|
能力值:
( LV2,RANK:10 )
|
-
-
21 楼
该项目最终也是一个人机交互反编译软件。至于实用价值和科研价值,先做了再说
给你发了俏俏话了,看到了吗?
|
能力值:
( LV8,RANK:130 )
|
-
-
22 楼
祝楼主能够成功
支持一下
|
能力值:
(RANK:1060 )
|
-
-
23 楼
能反编译相信不假,但“该C/C++源代码在功能上与最初的源代码是一致的。”非常不靠谱。
|
能力值:
( LV2,RANK:10 )
|
-
-
24 楼
不靠谱?功能不一致又怎能说是反编译呢。
呵呵,forgot大牛是不是看成了"该C/C++源代码与最初的源代码是一致的。"?
反编译生成的代码与最初的源代码不可能是一样的,但至少得保证功能上是一致的。
|
能力值:
(RANK:1060 )
|
-
-
25 楼
看错了,忽略我
|
|
|