개별적으로 받은 dll 파일이고, 나는 이것을 분석할 것이다. 



우선 dll 파일은 처음분석해보고 아는대로 먼저 파일의 속성부터 분석하였다



보면 Kernel32.dll, User32.dll, d3dx9_43.dll, Msvcr100.dll 크게 이렇게 4개가 들어갔다.


이 4개중에서 d3dx9_43.dll을 보았는데. 이것은 DirectX와 관련이 있는 dll이였다


이왕된김에 DirectX에 대해 알아봤는데, DirectX란 1995년꽤 오래됐네..MS가 윈도95이후 플랫폼에 맞게 개발해서 클로즈소스형태로 발표한 멀티미디어 관련 종합 라이브러리라고 되어있다.


여튼 그래픽과 관련된(?) 라이브러리라고 대강 추측할 수 있다.


그럼 IDA로 열어보자



우선 IDA (32비트)로 열고 shift+F12를 눌러 String Windows를 본것이다.


대략적으로 보면 

-FPS보기

-스켈모델..

-해골모델 디버깅(?)

....등등 FPS게임과 관련된 용어들이 있었고


추측하면 캐릭터의 상태를 조작하고 값을 변조시키는 기능들이 있다는 것을 대략적으로 파악할 수있다.


이제 순차적으로 정적분석을 해보겠다.


시작하고 space를 눌러 그래프 뷰로 바꾸고 보면 아래와 같이 메시지창을 띄우고 Highlife 1.2에 인젝션이 성공적으로 되었다고 뜨면서



StartAddress를 인자로 갖는 쓰레드를 생성하는 걸로 보인다.

저 부분으로 들어가보자



    


그러면 위와 같이 나올텐데. 추가적으로 d3d9.dll , cshell.dll 등... dll들의 핸들을 검사하는듯하다. 만약 저 4개중 하나라도 없으면 계속해서 반복하는 것이다.


만약 다 마쳤다면 call sub_100022A0으로 가게되는데



들어와서 조금 내려가보면 위와 같이 10바이트만큼 동적할당하고 VirtualProtect라는 함수가 보인다

이 함수는

BOOL WINAPI VirtualProtect(LPVOID lpAddress, SIZE_T dwSize, DWORD flNewProtect, PDWORD lpflOldProtect );  

 

IpAddress : 변결할 시작 주소

dwSize : 변경할 크기

flNewProtect : 변경할 설정 값

IpflOldProtect : 변경 전 상태를 저장할 변수 포인터 


이렇게 사용법이 적혀있다.

즉 5만큼 크기를 설정하고 4로 설정값을 바꾼다는 것인데 이 부분은 좀더 확인이 필요할 것 같다.,


(추가예정)

+ Recent posts