Reversing

[코드엔진] basic 19

BIGFROG 2020. 2. 24. 22:52

이 프로그램은 몇 밀리세컨드 후에 종료 되는가

 

UPX언패킹하고시작

 

 

timeGetTime함수 모두에 bp걸고 찾아보자.

 


timeGetTime함수?
윈도우가 부팅되어 지금까지 흐른 시간을
밀리세컨드 단위로 dword형을 반환함.

따라서 이 프로그램에서는 지금까지 흐른 시간 두 개의 차를 통해 프로그램이 실행된 시간을 구했다.


 

 

첫번째 호출의 리턴값 : 9713C

 

그 아래에 있는
cmp byte ptr ds:[4838d3], 0의 의미는 잘 모르겠다.. 다시 분석해봐야 할 부분임.

 

호출 값은 esi에 저장하고,

두번째 호출을 한다.
두번째 호출의 리턴값 : bb3e9

 

일단 반환된 두 값을 비교하는데,

timeGetTime 함수가 오류가 날 부분을 처리해준 것 같다.(두 값이 같은 값이라던지..)

 

두 값을 뺀 값을 특정 값(0x2b70)과 비교한다.
이는 10진수로 11120(dec)

해당 값 이상일 경우, ExitProcess가 있는 곳으로 분기하게 된다.

'Reversing' 카테고리의 다른 글

[코드엔진] Advance 1  (0) 2020.02.25
[코드엔진] basic 20  (0) 2020.02.24
[코드엔진] basic 18  (0) 2020.02.24
[코드엔진] basic 17  (0) 2020.02.19
[코드엔진] basic 16  (0) 2020.02.19