드림핵 rev-basic-3
__int64 __fastcall sub_140001000(__int64 a1) { int i; // [rsp+0h] [rbp-18h] for ( i = 0; (unsigned __int64)i < 0x18; ++i ) { if ( byte_140003000[i] != (i ^ *(unsigned __int8 *)(a1 + i)) + 2 * i ) return 0i64; } return 1i64; } 기본적인 분석방법에 의거해 위와 같은 함수가 나왔다 당연히 byte 부분이 핵심이 되는 부분이라는 것을 알 수 있었고 더블 클릭해서 .data:0000000140003000 byte_140003000 db 49h, 60h, 67h, 74h, 63h, 67h, 42h, 66h, 80h, 78h, 2 d..
드림핵 rev-basic-4
파이썬은 정말 신기한 언어다 보고 또 볼수록 정말 놀라운 점이 많다 우선 비트연산을 이렇게 깔끔하게 할 수 있다 import string raw =(0x24,0x27,0x13,0xc6,0xc6,0x13,0x16,0xe6,0x47,0xf5,0x26,0x96,0x47,0xf5,0x46,0x27,0x13,0x26,0x26,0xc6,0x56,0xf5,0xc3,0xc3,0xf5,0xe3,0xe3) for ch in raw: for i in string.printable: if ((16*ord(i))&0xf0 | ord(i)>>4 ) == ch: print(i, end='') break 블로그에 올려놓으니까 가독성이 많이 떨어지긴 한다 rev-basic-4를 보면 기본적으로 검증 함수가 ((16*ord(i)..