Reversing.kr HateIntel (150pt)
Reversing.kr 문제들은 지금 너무 어려워서 놓고 있다가 친구가 올클못했냐고 놀려서 바로 잡게되었다.
포인트 점수대로 풀고 있는데 autohotkey2 130pt.. 에서 막혀가지고 HateIntel 로 건너뛰었다.
해당 문제 Readme 를 읽어보면 password 를 찾으라고 나온다.
파일 종류를 보면 HateIntel: Mach-O arm executable 로 나오는데 arm 이길래 IDA로 분석하였다.
봐야할 함수는 총 3개로 처음에 입력을 받고 암호화 후 byte_3004[28] 의 값들과 비교하면 된다.
[pseudo code]
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 | #pragma warning(disable: 4996) #include <stdio.h> #include <string.h> int byte_3004[] = { 0x44, 0xF6, 0xF5, 0x57, 0xF5, 0xC6, 0x96, 0xB6, 0x56, 0xF5, 0x14, 0x25, 0xD4, 0xF5, 0x96, 0xE6, 0x37, 0x47, 0x27, 0x57, 0x36, 0x47, 0x96, 3, 0xE6, 0xF3, 0xA3, 0x92}; int sub_2494(int v1) { v1 *= 2; if (v1 & 0x100) v1 |= 1; return v1; } void sub_232C(char v1[], int v2) { int result = 0; for (int i = 0; i < v2; i++) { for (int j = 0; ; j++) { result = strlen(v1); if (result <= j) break; v1[j] = sub_2494(v1[j]); } } } int main() { unsigned char v1[30] = { 0, }; int v2 = 4; printf("Input key : "); scanf("%s", v1); int v3 = strlen(v1); sub_232C(v1, v2); for (int i = 0; i < v3; i++) { if (v1[i] != byte_3004[i]) { puts("Wrong Key!"); return 0; } } puts("Correct Key!"); return 0; } | cs |
[HateIntel_Solve.c]
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 | #include <stdio.h> int sub_2494(int v1) { v1 *= 2; if (v1 & 0x100) v1 |= 1; return (unsigned __int8)v1; } int main() { int byte_3004[] = { 0x44, 0xF6, 0xF5, 0x57, 0xF5, 0xC6, 0x96, 0xB6, 0x56, 0xF5, 0x14, 0x25, 0xD4, 0xF5, 0x96, 0xE6, 0x37, 0x47, 0x27, 0x57, 0x36, 0x47, 0x96, 3, 0xE6, 0xF3, 0xA3, 0x92}; int v1[30] = { 0, }; int c = 0; for (int i = 0; i < 29; i++) { for (int brute = 0; brute <= 127; brute++) { c = brute; for (int j = 0; j < 4; j++) { c = sub_2494(c); } if (c == byte_3004[i]) { printf("%c", brute); break; } } } puts(""); return 0; } | cs |
'Wargame > ▷ Reversing.kr' 카테고리의 다른 글
[Reversing.kr] Multiplicative (0) | 2018.01.12 |
---|---|
[Reversing.kr] WindowsKernel (0) | 2018.01.12 |
[Reversing.kr] Twist1 (0) | 2018.01.08 |
[Reversing.kr] Flash Encrypt (0) | 2018.01.08 |
[Reversing.kr] Position (2) | 2017.05.17 |