리버싱 입문

[리버싱 입문](17)[Lena 3]

황올뱀 2025. 3. 11. 21:20

Lena 3

 

이번에는 Nag창을 없애면 register할 수 있다고 한다.

처음에 GetModuleHandleA로 핸들을 받고 0과 비교해서 맞다면 분기가 나눠진다.

https://learn.microsoft.com/ko-kr/windows/win32/api/libloaderapi/nf-libloaderapi-getmodulehandlea

에 따르면, 매개변수가 Null일 경우에는 이 함수를 부른 파일의 핸들을 반환한다고 한다. 따라서

파일 헤더의 주소인 400000을 반환한다. 따라서 항상 Nag창이 뜰 수밖에 없다.

EAX가 0이어야 첫번째 Nag창을 건너뛸 수 있으나, EAX엔 언제나 00400000이 저장된다.

따라서 그냥 점프하는 부분을 바꿔주겠다.

첫번째 Nag창은 점프로 해결하였다.

두번째 Nag창은 아예 띄우는 부분을 없애버리겠다.

이러면 Nag창 없이 클린하게 register 창만 띄울 수 있다.

 

다른 풀이:

처음 Nag창을 없앨 때 조건문 점프를 망가뜨릴 수도 있으나,

시작지점을 바꿔 저 코드들이 아예 실행 안되게 해보겠다.

메모리 맵의 PE 헤더 부분을 들어가면 시그니쳐인 MZ와 더불어 여러 PE파일 정보들이 적혀있다.

여기에 시작지점의 상대주소가 적혀있다. 이걸 Nag창 다음으로 바꿔주면 된다.
대충 39정도로 바꿨더니 풀렸다.

 

Lena 3 oops!

 

Lena 3와 똑같은 파일인 줄 알았으나, ollydbg로 열때 hex창이 정상적으로 뜨지 않는다.

hex code로 비교해보면 조금씩 다른 것을 알 수 있다.
실제로 pe파일을 분석해보면 sizeofcode, sizeofuninitalizeddata등이 다른 것을 알 수 있다.

따라서 다른 부분을 수정하면 괜찮아진다.

 

 

728x90
반응형

'리버싱 입문' 카테고리의 다른 글

[리버싱 입문](19)[Lena 6]  (0) 2025.03.13
[리버싱 입문](18)[Lena 4]  (0) 2025.03.12
[리버싱 입문](16)[Lena 2]  (0) 2025.03.10
[리버싱 입문](15)[Lena 1]  (0) 2025.03.07
[리버싱 입문](14)[abex crackme 12, 13]  (0) 2025.02.26