【实验吧】Reverse400

在网上下载,pyinstxtractor.py,对Reverse400.exe进行反汇编

得到其源代码为

$ cat Revesre03
data = \
"\x1c\x7a\x16\x77\x10\x2a\x51\x1f\x4c\x0f\x5b\x1d\x42\x2f\x4b\x7e\x4a\x7a\x4a\x7b" +\
"\x49\x7f\x4a\x7f\x1e\x78\x4c\x75\x10\x28\x18\x2b\x48\x7e\x46\x23\x12\x24\x11\x72" +\
"\x4b\x2e\x1b\x7e\x4f\x2b\x12\x76\x0b"

'''
char buf[] = "flag:{NSCTF_md5098f6bcd4621d373cade4e832627b4f6}";

int _tmain(int argc, _TCHAR* argv[])
{
    printf("%d\n", strlen(buf));
    char key = '\x0b';
    buf[47] ^= key;
    for (int i = 1; i < 48; i++)
    {
        buf[48 - i - 1] ^= buf[48 - i];


}
return 0; } ''' print "Revese it?????????"

这是⼀段 Python 代码并嵌⼊了⼀段 C 的注释, buf ⾥的 flag 并不是真正的 flag。 将 C 语⾔提取出来编译运⾏发现 encode 之后的 buf 和上⾯的 data 很像,尤其 是⾸尾是完全⼀样的,既然 encode(buf) ≈ data ,那么 decode(data) ≈ buf ,所以猜测对 data 进⾏逆向解码就是真正的 flag。

于是写出解码脚本:

得到:

 

posted @ 2017-09-22 09:39  S_s_s  阅读(322)  评论(0编辑  收藏  举报