C300_021
C300_소스코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #include <stdio.h> main() { int x = 1; int y = 2; int z = 3; if (x == y) printf("x는 y와 같습니다. \n"); if (x != y) printf("x는 y와 같지 않습니다. \n"); if (x > y) printf("x는 y보다 큽니다. \n"); if (x < y) printf("x는 y보다 작습니다. \n"); if (y >= z) printf("y는 z보다 크거나 같습니다. \n"); if (y <= z) printf("y는 z보다 작거나 같습니다. \n"); } | cs |
IDA - Layout Graph
IDA - Text View
jnz(jump not zero) : 결과 값이 0이 아니거나, 같지 않을 때 점프 (ZF=0)
jz(jump zero) : 결과 값이 0이거나, 같을 때 점프 (ZF=1)
jle(zump less or equal) : 결과 값이 같거나 작을 때 점프 (ZF=1, or SF != OF)
jge(jump greater or equal) : 결과 값이 같거나 클 때 점프 (ZF =1, or SF == OF)
jl(jump less) : 결과 값이 작을 때 점프 (ZF=1);
jg(jump greater) : 결과 값이 클 때 점프 (ZF=1);
IDA에서 나오는 조건을 보면(cmp), 사용자가 실제 소스에서 사용한 조건과 정확히 반대되는 조건으로 사용한다.
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 | #include <stdio.h> main() { int x; int y; int z; x = 1; y = 2; z = 3; eax = x; if(eax != y) else printf(_Format); ecx = x if(ecx == y) else printf(asc_403034); edx = x; if(edx <= y) else printf(asc_403050); eax = x; if(eax >= y) else printf(asc_403064); ecx = y; if(ecx < z) else printf(aY); edx = y; if(edx > z); else printf(aY_0); eax = 0; } | cs |
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 | #include <stdio.h> main() { int x; int y; int z; x = 1; y = 2; z = 3; if(x == y) printf(_Format); if(x != y) printf(asc_403034); if(x > y) printf(asc_403050); if(x < y) printf(asc_403064); if(y >= z) printf(aY); if(y <= z); printf(aY_0); } | cs |
'Reversing > ASM to C' 카테고리의 다른 글
ASM to C with IDA - 023 (0) | 2018.05.31 |
---|---|
ASM to C with IDA - 022 (0) | 2018.05.30 |
ASM to C with IDA - 020 (0) | 2018.05.30 |
ASM to C with IDA - 019 (0) | 2018.05.29 |
ASM to C with IDA - 018 (0) | 2018.05.29 |