
이번 포스팅은 윈도우 xp 지뢰 찾기 시간 고정하는 것을 해보도록 하겠습니다.
해당 과정은 다음과 같이 진행 할 것입니다.
1.IDA를 통해서 시간을 생성하는 함수를 찾는다.
2.시간을 생성하는 함수의 파라미터를 검색 한다.
3.검색된 결과에 따라 값을 바꾼다.
4.(추후 예정) 해당 기능을 코드 인젝션을 통해서 프로그램화 시킴
1.IDA를 통해서 시간을 생성하는 함수를 찾는다.

IDA에서 Import 탭에서 SetTimer (시간 설정)하는 함수를 찾아서 클릭합니다.

클릭하시면 SetTimer의 파리미터를 보실 수 있습니다.
SetTimer 부분에 커서를 두고 크로스리스펀스 기능을 사용하여서 해당 함수가 어디에서 콜이 되었는지 확인 해보겠습니다.

2개가 나오는데 둘다 똑같은 주소입니다. 아무 부분이나 클릭 해주시고

코드가 보이는 부분에서 SPACE 키를 눌러주시면

SetTimer를 콜하는 주소가 나오게됩니다. 0100384F입니다.
이뮤니티 디버거를 통해서 0100384F 주소가 진짜 시간값을 설정하는 함수인지 0100384F주소에 브레이크 포인트를 걸고 실행시켜 보면 한번 클릭하면 그 부분에서 멈추는 것을 확인 할 수 있습니다.
2.시간을 생성하는 함수의 파라미터를 검색 한다.
저희는 SetTimer라는 함수를 지금 처음 봐서 그런지 각각의 파라미터가 무슨 역할을 하는지 모릅니다.
검색해보면


hwnd 파라미터는 핸들 값이므로 시간 값을 고정시킬때는 바꿀 필요가 없습니다.
nIDEvent 파라미터는 hwnd 값에 따라 타이머를 재설정 할 수 있는 값입니다.

uElaspe 파라미터는 실제로 흘러가는 시간 지뢰찾기에서는 1초 입니다.
lpTimerFunc 파라미터는 시간이 흘러갈때 마다 알림을 받을 함수의 포인터 입니다.
3. 검색된 결과에 따라 값을 바꾼다.
파라미터 검색한 결과를 따라서 저희는 uElaspe의 값만 바꾸면 됩니다.

이뮤니티 디버거에서 아까 찾은 SetTimer를 찾아서 PUSH 3E8 이 1000m/s 즉 1초인데 그 값을
-1로 변경하면 시간이 더 이상 증가 하지 않습니다.
'Information Security > Reversing' 카테고리의 다른 글
[Code injection] 지뢰 찾기 핵 만들기 - 바로 승리 (7) | 2022.01.04 |
---|---|
[Code injection] 지뢰 찾기 핵 만들기 - 무적 (1) | 2022.01.03 |
[Code injection] 지뢰 찾기 핵 만들기 - 지뢰 보이기 (0) | 2021.12.30 |
[리버싱 핵심원리] 실행 파일에서 .reloc 섹션 제거 하기 (3) | 2021.12.24 |
[리버싱 핵심 원리] 실행 압축 및 UPX 툴 설명 (2) | 2021.12.21 |
댓글