我的HexRays反编译器输出通常如下所示:

  v0 = LoadLibraryW(L"wininet.dll");
  v1 = v0;
  if ( !v0 )
    goto LABEL_1;
  v2 = GetProcAddress(v0, "InternetOpenW");
  v3 = GetProcAddress(v1, "InternetConnectW");
  v4 = v2;
  v5 = v4;


对我来说,这里只有几个变量。 v0,v2和v3。其余的完全重复。是否可以清理我的反编译器输出以消除这些无关的变量?

#1 楼

将光标定位在v1处,然后按=。如果从IDA 6.6起我没记错的话,它将允许您定义某些变量实际上与其他变量相同。

#2 楼

从v6.6开始,IDA支持反编译器API。文档很差,几乎不存在。但是,从理论上讲,应该可以编写一个插件来对反编译器生成的抽象语法树(AST)进行静态分析,从而消除无用的单元分配。