이 프로그램은 몇 밀리세컨드 후에 종료 되는가
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 |