逆向-攻防世界-re2-cpp-is-awesome

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整除为止。

posted @ 2019-05-01 22:59  s1lenc3  阅读(1215)  评论(0编辑  收藏  举报