2010년 5월 25일 화요일
401025 부분이 반복되는 부분
다음 구문은 무한 루프의 while을 나타낸다. (while(1))
아래 처음 cmp부분은 if문을 나타낸다. 이어서 아래에 또다시 cmp가 나오는데 else if 일까 아니면
새로 시작하는 if 일까?, 새로시작하는 if 구문이다. 이유는 만약 else if 또는 else 라면 jmp 되는 곳이
같아야 한다. 하지만 위에선 401020으로 jmp를 하고 아래에선 401050으로 jmp를 수행한다.
다음과 같이 위의 if문에서 jmp되는 곳과 아래의 조건의 jmp되는 곳이 같으므로 401050부분은
Else if 문을 의미한다.
여기서 조건이 두개라는 것은 if 문 안의 if 이거나 and(&&), or(||) 연산자를 이용한 조건이라는 의미이다.
Jmp 되는 곳이 같으므로 이것은 &&연산을 수행한 if문을 말한다.
아래 코드는 for문의 형태, for문의 동작원리를 파악하면 된다.
초기 값은 구문 밖에 존재, 증감식이 조건식 위에 존재 하므로 초기값 후 jmp를 한다.
반복은 body수행 후 증감식으로 jmp를 함으로써 반복이 이루어진다.
For문에 초기값과 증감 부분이 없으며 while과 같은 방식으로 동작한다.
▶ 코드
'Programming > Hacking & Security' 카테고리의 다른 글
[Reversing] Struct (구조체) by 용호 (0) | 2010.05.31 |
---|---|
[Reversing] 반복문 문제 by 용호 (0) | 2010.05.26 |
[Reversing] switch, if, while, do~while 동작원리 by 용호 (0) | 2010.05.25 |
[Reversing] C언어로 작성된 코드 분석 By 용호 (0) | 2010.05.21 |
[Reversing] Call, Jmp By 용호 (0) | 2010.05.21 |
댓글