2017. 9. 20. 16:09
Hack/리버싱
입력 받은 문자열을 get_tbl_entry() 함수로 변환 시킨다. 변환 시킨 문자열이 주어진 문자열과 일치하면 성공한다.
get_tbl_entry() 함수는 매개변수로 넘어온 문자가 table[2*i]와 같으면 table[2*i + 1]을 반환한다.
table 자료는 위와 같이 data 영역에 있다.
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 | #include <stdio.h> void main() { char map[510] = { 0, }, ans[37]; char buffer[38] = {0, }; int i, j; // Read File FILE *file = fopen("map", "rb"); fread(map, sizeof(char), 510, file); fclose(file); file = fopen("target", "rb"); fread(ans, sizeof(char), 37, file); fclose(file); // Compare for (i = 0; i < 37; i++) { for (j = 0; j <= 0xFE; j++) { if (map[j * 2 + 1] == ans[i]) { buffer[i] = map[j * 2]; break; } } } printf("%s\n", buffer); } | cs |
table 자료(map 파일)와 목적 문자열(target 파일)을 가져온다음, 역으로 추적하는 프로그램을 만들었다.
후기.
trans_tbl과 byte_201281 사이에 있는 1byte랑 끝에 있는 1byte를 빼고 map 파일을 만들어서 고생했다..
'Hack > 리버싱' 카테고리의 다른 글
Codegate2020 Preliminary: Halffeed (0) | 2020.02.22 |
---|---|
Windows Exception (0) | 2020.01.18 |
[Codegate 2016] compress (0) | 2017.05.20 |
[CodeEngn] Challenges : Basic 01 (0) | 2016.12.20 |
[Reversing.kr] imagePrc (0) | 2016.05.30 |