小弟初学,发现HexRay对代码的分析能力相当了得,可对数据的处理略显欠缺,大家有没有遇到过这样的情况
例子一:得不到.data段中的初始值
int gData = 1;
int main()
{
if(gData)
MessageBox(NULL, "123", "123", MB_OK);
return 0;
}
逆向得
extern int dword_406030; // weak// 初始值呢???
int __cdecl main(int argc, const char **argv, const char **envp)
{
if ( dword_406030 )
MessageBoxA(0, "123", "123", 0);
return 0;
}
例子二:得不到数组长度
int main()
{
char buf[1024] = {0};
memset(buf, '1', 10);
MessageBox(NULL, buf, buf, MB_OK);
return 0;
}
逆向得
int __cdecl main(int argc, const char **argv, const char **envp)
{
const CHAR Dst; // [sp+4h] [bp-400h]@1// 数组长度都要我自己填吗?
char v5; // [sp+5h] [bp-3FFh]@1
__int16 v6; // [sp+401h] [bp-3h]@1
char v7; // [sp+403h] [bp-1h]@1
Dst = 0;
memset(&v5, 0, 0x3FCu);
v6 = 0;
v7 = 0;
memset((void *)&Dst, 49, 0xAu);
MessageBoxA(0, &Dst, &Dst, 0);
return 0;
}
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课