# Reverse
# 快来签到
打开 ida 之后报错,提示 The graph is too big,我们在 general 里面把 Max number of nodes 改成 999999 就就可以看到了
NepCTF{welc0me_t0_nepctf}
# We_can_go
直接看关键函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
| int sub_719630() { int i; int result; _DWORD *v2; _BYTE *v3; int v4; char v5[32]; _DWORD *v6; int v7[2]; int v8[2]; int v9[2]; int v10[2]; void *retaddr;
if ( &retaddr <= *(*NtCurrentTeb()->NtTib.ArbitraryUserPointer + 8) ) sub_6D82C0(); sub_68AC70(&unk_7233C0); v6 = v2; v2[1] = 0; *v2 = 0; v10[0] = &unk_7200A0; v10[1] = v2; sub_713D80(&off_7525B8, dword_7CB200, v10, 1, 1); sub_6C79B0(v5, *v6, v6[1]); if ( v4 == '\x17' && *v3 == 'N' && v3[1] == 'e' && v3[2] == 'p' && v3[3] == 'C' && v3[4] == 'T' && v3[5] == 'F' && v3[6] == '{' && v3[22] == '}' ) { for ( i = 0; i < 15; ++i ) { if ( i >= dword_7CB6E4 ) sub_6D9750(); if ( i + 7 >= '\x17' ) sub_6D9750(); if ( v3[i + 7] != *(dword_7CB6E0 + i) ) { v8[0] = &unk_7233C0; v8[1] = &off_752334; return sub_70D8C0(&off_7525CC, dword_7CB204, v8, 1, 1); } } v7[0] = &unk_7233C0; v7[1] = &off_75233C; result = sub_70D8C0(&off_7525CC, dword_7CB204, v7, 1, 1); } else { v9[0] = &unk_7233C0; v9[1] = &off_752334; result = sub_70D8C0(&off_7525CC, dword_7CB204, v9, 1, 1); } return result; }
|
42 行的判断是关键语句,dword_7CB6E0 就是我们需要的数据,在这里下一个断点,动调一下就可以看到
NepCTF{U9eT_t0_th3TRUE}