히공

코드엔진 - basic 10 본문

reverse engineering/CodeEngn

코드엔진 - basic 10

heegong 2020. 9. 21. 23:04
728x90

10번을 풀어보겠습니다.

 

 

 

 

 

 

 

이러한 문제입니다.

 

 

 

 

 

 

실행했을때 이런 화면이 나옵니다.

 

 

 

 

 

 

 

 

 

 

 

peid로 확인해보니까 Aspack 패킹이였습니다.

 

 

 

 

Aspack은 압축해제 -> 압축해제 끝 -> 프로그램 실행

 

이 순서입니다.

 

 

 

pushad -> 압축해제 -> popad -> oep로 분기

방식으로 원본코드를 볼 수 있습니다.

 

 

 

 

 

 

pushad 발견

 

 

 

 

 

 

 

 

 

 

 

 

pushad 실행 후 esp값 변화 확인

 

 

 

 

 

 

 

 

esp우클릭 후 덤프에서 따라기기 클릭

 

 

 

 

 

 

 

 

 

 

이러한 것이 밑에 뜹니다.

 

 

 

 

 

 

여기서

 

우클릭 - 중단점 - 하드웨어, 엑세스 - Dword 클릭

 

 

이제 esp가 가르키는 메모리 주소에 접근할 때 bp를 걸어두고 실행시키게 되면, 메모리 상에 복구를 마친 뒤 OEP로 분기전 상태가 되며 F9누르면 bp전까지 실행됩니다.

 

 

 

 

 

 

 

 

 

 

 

f9로 실행하고 나서 jne구문 발견 이제 push 445834를 하는것을 보면

OEP는 445834이다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

oep

oep로 도착했습니다. 이제 등록성공 분기점 opcode만 찾으면 됩니다.

 

 

 

 

 

 

 

 

 

문자열로 찾아봅시다.

 

 

 

 

 

끝쪽까지 다 내리고 나서 보니 성공문이 보입니다.

 

 

 

 

 

 

 

 

저기서 enter을 누르면 이런식으로 오류가 뜹니다. (아마 코드 복구가 끝나고 x32dbg에서 새로고침을 안해서 그런가 봅니다.)

 

 

 

 

 

 

 

 

 

디스어셈블러에서 따라가기를 클릭해봅시다.

 

 

 

 

 

 

 

 

 

 

정상적으로 코드가 보입니다.

 

 

 

 

 

 

 

 

여기가 분기점 입니다.

opcode : 7555

 

 

 

 

 

oep + opcode = 004458347555

 

입니다.

 

 

 

 

 

 

 

 

 

 

 

처음 푸는 사람은 석세스가 출력됩니다.

 

 

답 : 004458347555

'reverse engineering > CodeEngn' 카테고리의 다른 글

코드엔진 - basic 12  (1) 2020.09.22
코드엔진 - basic 11  (0) 2020.09.22
코드엔진 - basic 09  (0) 2020.09.16
코드엔진 - basic 08  (0) 2020.09.16
코드엔진 - basic 07  (0) 2020.09.16
Comments