內容物
- 5get_it
分析
丟 DIE 發現是 x32 DLL
甚至沒有殼
在 IDA 翻一下 function
會發現有很多小 function
長這樣
const char *sub_10009530()
{
_cfltcvt_init();
return "7";
}但 return 的部分換成不同字元
猜測是某種鍵盤模擬
在 sub_10009EB0 找到 GetAsyncKeyState
確認是 Keylogger
但有些字元回傳的 function 有點問題
會作一些改值
舉例
const char *sub_10009D80()
{
if ( dword_10019484 <= 0 )
{
_cfltcvt_init();
}
else
{
dword_10019484 = 0;
dword_10019488 = 1;
}
return "u";
}雖然是 U 但是做了一些判斷
並且 _cfltcvt_init 會把所有 dword_xxxxxxx 還原
然後透過 xref 可以發現每個變數都對應到一個 cmp 以及所在的 keylog function
於是就可以快樂寫script
得到這一段
zeroggingdoturdotfivetrzerokefiveatflaredashondotcom
加上沒有排在一起的 l
就可以拿flag
flag
script
import ida_segment
import idc
import idautils
import ida_xref
seg = ida_segment.get_segm_by_name(".data")
start = seg.start_ea
end = seg.end_ea
for ea in idautils.Heads(start=start,end=end):
if ea >= 0x10019460 and ea <= 0x10019500 :
for xref in idautils.XrefsTo(ea):
if xref.type == ida_xref.dr_R:
funcname = idc.get_func_name(xref.frm)
print(funcname,end='')