IDA載入程序,進入主函數。
可以看到關鍵的比較
將dword_6020C0和off_6050A0的數據提取出來,寫腳本。
s = 'L3t_ME_T3ll_Y0u_S0m3th1ng_1mp0rtant_A_{FL4G}_W0nt_b3_3X4ctly_th4t_345y_t0_c4ptur3_H0wev3r_1T_w1ll_b3_C00l_1F_Y0u_g0t_1t' d = [0x24, 0x0, 0x5, 0x36, 0x65, 0x7, 0x27, 0x26, 0x2d, 0x1, 0x3, 0x0, 0xd, 0x56, 0x1, 0x3, 0x65, 0x3, 0x2d, 0x16, 0x2, 0x15, 0x3, 0x65, 0x0, 0x29, 0x44, 0x44, 0x1, 0x44, 0x2b] tmp = '' for i in d: x = int(str(i)) y = s[x] tmp += y print(tmp)
ALIGN Num
其中:Num必須是2的冪,如:2、4、8和16等。
偽指令的作用是:告訴匯編程序,本偽指令下面的內存變量必須從下一個能被Num整除的地址開始分配。
如果下一個地址正好能被Num整除,那么,該偽指令不起作用,否則,匯編程序將空出若干個字節,直到下一個地址能被Num整除為止。