这个C ++二进制文件到处都有代码段和源代码文件的路径,这可能是某种调试信息。


这是标准吗? (这是RTTI)
如果这样,该怎么称呼?
是否有插件或工具可以帮助您解决此问题?



#1 楼

它具有assert的指纹:


它在测试后立即被调用;
它使用一个数字-可能是源行号-一个指向的字符串文件名-源文件-和描述错误情况的字符串;
它不返回。 (可以推断出来,因为如果返回调用的函数,检查的值将导致错误的情况。)

assert是大多数(如果不是全部都是!)标准库中的标准函数,如果反编译器可以识别使用了哪个编译器,它将为sub_6E0D40分配一个标准标签。既然没有,您可以跟踪该地址并查看(a)它是否立即跳转到诸如Windows的本机Assert之类的外部例程,或者(b)执行断言的操作:输出错误并立即退出。 />

增加:使用堆栈加寄存器ecx和edx似乎表明此子句被声明为“ Microsoft __fastcall”(维基百科)。

评论


sub_6E0D40是__fastcall,而不是__stdcall。参见en.wikipedia.org/wiki/…

–詹森·格夫纳(Jason Geffner)
13-10-9在20:48

@JasonGeffner:您是对的,我的(错误的)裁判说ecx和edx被“指定在函数内使用”,这恰恰相反。编辑。

–杂件
2013年10月9日23:56