0x01
拿到程式,直接IDA放進去看一下,結果如圖:
我們發現main中有四個函式,我們一個一個進去,經過分析之後,發現authenticate();是關鍵函式,所以,接下來我們進去看看。
void authenticate()
{
wchar_t ws[8192]; // [esp+1Ch] [ebp-800Ch]
wchar_t *s2; // [esp+801Ch] [ebp-Ch]
s2 = (wchar_t *)decrypt(&s, &dword_8048A90);
if ( fgetws(ws, 0x2000, stdin) )
{
ws[wcslen(ws) - 1] = 0;
if ( !wcscmp(ws, s2) )
wprintf(&unk_8048B44);
else
wprintf(&unk_8048BA4);
}
free(s2);
}
這裡可以看出,關鍵的地方在
decrypt(&s, &dword_8048A90);
所以我們在decrypt結束處下斷電,然後觀察暫存器的值,這裡我們使用gdb,因為這個程式是linux下執行的,所以我們使用gdb