【发布时间】:2013-12-12 12:08:57
【问题描述】:
我需要理解和重现(用另一种语言) 以下功能的逻辑(C代码) 我真的不明白,它在做什么
double __thiscall sub_1(int this) {
return * (double *) (this + 12);
}
编译正常,但运行.exe文件时崩溃
我对 C 一点儿都不强,也查不出来, 这组操作数在做什么实际操作 * (双倍的 *) 这不是取消引用,因为没有声明指针。
无论如何,谁能告诉我 - 函数的输出是什么
对于 sub_1(2),为什么?
【问题讨论】:
-
你确定这是确切的功能吗?这没有意义。
-
这个问题最好ReverseEngineering.SE。你那里是对原始代码的粗略反编译,是不正确的。
-
@DCoder 好一个;我没有看到那个。所以
this可能是一个包含 12 个字节的东西和一个双精度的结构的地址。 -
输入 this = 2 >> SIGSEGV
-
@MrLister: 是的,它可能是一个通过
ecx获取结构指针的函数,但__thiscall通常意味着它是一个C++ 成员函数(它是由 Visual C++ 编译)。