올리디버거 레나 듀토리얼 -1

악성코드 및 포렌식|2021. 3. 6. 12:57

control + f2 로 재시작 해서 보면

 

 

오른쪽 레지스터 창을보면 

EIP 00401000 을 위치하고있는데 이것이 다음에 실행할 창이다.

 

이 명령어를 실행을 해보게되면

 

 

스탭 바이 스텝으로 진행하려면 F8 을 진행한다.

 

 

면 F8 을 진행한다.

 

 

create file 쪽을보면

 

파일 또는 I / O 장치를 만들거나 엽니 다. 가장 일반적으로 사용되는 I / O 장치는 파일, 파일 스트림, 디렉토리, 물리적 디스크, 볼륨, 콘솔 버퍼, 테이프 드라이브, 통신 자원, 메일 슬롯 및 파이프입니다. 이 함수는 파일 또는 장치와 지정된 플래그 및 속성에 따라 다양한 유형의 I / O에 대해 파일 또는 장치에 액세스하는 데 사용할 수있는 핸들을 반환합니다.

이 작업을 트랜잭션 된 작업으로 수행하여 트랜잭션 된 I / O에 사용할 수있는 핸들을 생성하려면 CreateFileTransacted 함수를 사용하십시오 .

 

 

file 을 만들뿐만아니라 오픈도 한다

 

create까지 실행을해보자

여기에 break point를 걸어보면

f2를 누르면됩니다

여기서 브레이크 포인트를 걸고 잘보게되면 

 

 

여기서 create파일은 열게되는것 입니다.

 

file이 있는 경우에만 열어라~~~~

 

그리고 다음것을 보려고 F8을 누르면

 

 

오른쪽 registers cpu 가

보니까 EAX FFFFFFFF가 있다 

근데 이게 -1과 같다

그이유는 16진수라서

 

이것은 -1이라는 의미입니다.

근데 CMP EAX, -1을  비교합니다.

 

 

compare하고

근데 cmp eax, -1 을 비교하게되는데

둘이 같지 않을떄 Z1 이됩니다

 

근데

Z 1이 제로가 아니라는게 옆에 나타나게되고

그냥 그대로 진행이되는데

 

 

만약 Z 0 이면

(더블클릭하면 0으로바뀐다)

JNZ 점프를 하게되는데 여기에 점프선이 나오게되는 것 입니다.

그래서여기서는 F8을 하면 점프를 하게되는데

 

 

원래 프로그램은 Z가1이니까 그냥 1로 다시만듭니다

 

 

 

그래서 넘어가면 CALL 메세지박스가 나오게되고

 프로세스를 종료하는 exitprocess를 하게됩니다.

 

 

 

 

 

여기서 Kyefile.dat가 없으면

결국에 점프를 하지 못하고 차근차근 진행을 하게되는데

 

 

점프를하게 위장을하면

결과값 아까 했던 Z 1 을 더블클릭해서 Z 0으로 만듭니다.

 

 

 

 

 

이렇게 Z1 -> Z0으로 만들어서 점프합니다.

 

 

다음 함수는 readFile인데 앞에있는 create file이 수행이되어야 readfile이 가능합니다

 

 

Test eax,eax 가 0인지를 테스트합니다.

 

 

아까는 EAX FFFFFFFFFF 이런식으로나왔는데

 

우리가 Z 값을 변경해서 점프를했으니까 

옆에 CPU 창에

EAX 000000000 으로 반환 값이 됩니다.

 

 

함수가 성공하면 반환 값은 0이 아닙니다 ( TRUE ).

함수가 실패하거나 비동기 적으로 완료되면 반환 값은 0 ( FALSE )입니다. 

 

 

우리의 read file이 0이란 의미인데

그래서 false로 실패를했고그래서

xor 로 점프를 하려면 0이 아니여야되는데

현재는 0이니까 

f8을 누르게되면 

 

점프를 따라가게되면 이쪽입니다.

 keyfile is not valid

 

exitprocess 와 messageboxa가 있고

 

key file is not valid. sorry. 라는 뜻이 나옵니다.

키파일이 정상적이지않다~~~

 

 

Z0 으로 다시속여서 위로올라가보면

 

 

여기에 키파일의 알고리즘을 검사하는 곳이고ㅓ

 

최종적으로 도착해야하는 곳이 JMP reverseM.00401205 로 도착해서 

 

엔터를 눌렀을때

 

 

 

나오는 youreally did it 이라는 의미가 출력되게 만드는것이 우리의 목표입니다.

 

 

 

그래서 이부분에서 시작을 하게할려고 new origin here을 누릅니다.

 

이방법과

 

 

 

 

===================================

 

 

 

 

다른방법

 

 

 

 

 

 

JMP 00401205

이것이 우리의 최종위치에 있는 곳이니까 그 함수를 복사해서 집어넣습니다.

 

 

 

그러면 NOP이 생성되고 위에 주소가 생성되는데

 

 

 

 

 

이 점프구간으로 바로 이동할수가있습니다!!!!

 

혹시 이것을 영구하게 나오게 바뀐 부분을 그대로 영구히 저장을 하고싶으면

 

 

 

 

 

 

 

->

 

->

 

 

 

이렇게 저장을 할수있습니다~

잘되게 영구히 레벨을 완료한 것을 알수가있습니다.

 

 

처음부터 진행을 해보면 좋습니다.

 

; 세미콜론을 하나 입력하면 메모를 할수도잇습니다.

 

영구히 저장을 할수있습니다.!!!!!

 

 

'악성코드 및 포렌식' 카테고리의 다른 글

패커  (0) 2021.03.06
PE 파일의 개요  (0) 2021.03.06
올리디버거  (0) 2021.03.06
리버싱 기초 - c 문법과 어셈블리어  (0) 2021.03.06
리버싱 기초 -함수 호출 규약  (0) 2021.03.06

댓글()