리버싱

6일차,

컴공 2013. 4. 15. 14:18
반응형

## 3-5 소스 수정없이 success가 나오도록 하라!!!

나는 계산기로 값으로 예상되는 D8을 넣었다가 3정도 크게나오자 -3을 하여 D5를 사입하여 해결하였다.
그러나 실제로는 EDX에 담기는 문자형을 이용하여 연산하여야 했다.
[윗부분은 ECX에 담긴 문자의 크기를 계산하는 항목이다]



EBP+X 는 아래와 같은 특징을 가지는데 외워두는게 좋다.

[EBP+8] = hInst
[EBP+C] = hPrev
[EBP+10] = lpCmd (캐릭터형 포인터, 주소를 가리킴)
[EBP+14] = nCmdShow

 





MOV EAX,DWORD PTR SS:[EBP+10] ->lpCmd 를 EAX에 넣는다.

## while , for 문.
while과 for은 둘다 CMP(compare)~JMP로 이루어져 있다. 그러나 for문은 어셈블리어코드 옆에 화살표 모양이 나타난다.

## 메모리 빈영역
DB 00 00 부분은 프로그램 상에 있는 빈 영역이다.
1. 오버로드(overload)된 데이터를 처리하기 위한 영역이다.
2. 호환성을 위해 남겨두었다.

## DB 00 00 의 빈 영역으로 할 수 있는 것
1. 프로그램의 해킹이 용이해진다.(이 영역에 jmp를 하여 설정할 수 있다)
2. 프로그램의 방어소스를 입힐 수 있다.(더미다, 코드가상화)

## Argument
인자값을 넘겨주는 것은 리버싱 중 1회만 가능하다.

## 재영쌤 추천 자료(리버싱)
http://codeengn.com/security-archive/

http://junche4.com/120185860446
Code_Virtualized.pdf

반응형