C300_041
C300_소스코드
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 | #include <stdio.h> #define true 1 #define false 0 typedef int bool; typedef struct { int kor; int eng; int math; } SungJuk; typedef union { char ch; int point; } Variant; main() { bool bCondition; SungJuk SJ; Variant V; bCondition = true; if (bCondition == true) { printf("조건식은 true입니다."); } SJ.kor = 50; V.ch = 5; } | cs |
IDA - Layout Graph
IDA - Text View
모든 변수가 사용되지 않으면, 디스어셈블된 코드로만은 정확한 의사코드를 작성할 수 없다.
우선 SJ 변수가 12byte를 할당받아 이용하고 있다. SJ.kor와 12byte 자료형이 없다는것으로 미루어보아, 구조체임을 추측하였다.
V 또한 본 소스코드는 공용체로 사용하였지만, 정확히 이를 유추할 수 없었다.
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 | #include <stdio.h> struct sj { int kor; int ... int ... } main() { int bCondition; int V; struct sj Sj; bCondition = 1; if( bCondition == 1) printf(_Format); SJ.kor = 50; V = 5; return 0; } | cs |
'Reversing > ASM to C' 카테고리의 다른 글
ASM to C with IDA - 043 (0) | 2018.07.08 |
---|---|
ASM to C with IDA - 042 (0) | 2018.07.08 |
ASM to C with IDA - 040 (0) | 2018.07.06 |
ASM to C with IDA - 039 (2) | 2018.07.06 |
ASM to C with IDA - 038 (0) | 2018.07.06 |