內容物

  • 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

[email protected]

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='')