엔진정보포럼에 올리려고 했는데
글쓸 권한이 없다고 뜨길래 여기에 적습니다...
일단 이 내용은
제가 찾은 에스쿠드 코드들을 쭈욱 보며 공통점을 찾다가 나온것으로
신작에도 써먹힐지는 의문이지만,
아마 될겁니다. (무책임한...)
일단 대충 제가 메모장에 적은 공통점 내용은
===============================메모장 내용===================================
USER32.SetRect
kernel32.lstrcmpiA
kernel32.lstrcpyA
...
Superfluous prefix
Superfluous prefix
Superfluous prefix
ASCII "ZD"
USER32.wsprintfA
ASCII
kernel32.WritePrivateProfileString
ASCII
kernel32.WritePrivateProfileString
ASCII
kernel32.GetPrivateProfileIntA
ASCII "C:\Program Files\Escude\.....
kernel32.GetPrivateProfileStringA
USER32.DrawMenuBar
--------
-------- 코드
--------
kernel32.lstrcpyA
USER32.GetDC
Unknown command
GDI32.EnumFontFamliesExA <---- 얘는 아마 하나뿐이니까 얘를 찾아보면??
USER32.ReleaseDC
===========================================================================
이건데요. 이걸로 찾아도 되지만 여기 있는것중에서 게임에 따라선
없는것도 있을테니...
GDI32.EnumFontFamliesExA <-- 이부분을 찾아서 이게 한개 있다면 그 주소를 따라가서
위아래에 USER32. 씨리즈가 보이는지 확인해보면 되고
요게 없을수도 있으니 아래쪽도 참조하세요.
필요없는건 쫙쫙 줄이고
또 줄여보면.
============================= 이걸 참조해 찾아보자 =============================
USER32.DrawMenuBar
여기 어딘가에 코드
USER32.GetDC
USER32.ReleaseDC
===========================================================================
이렇게 되겠군요.
USER32 씨리즈는 아마 (역시 무책임한) 없어질일이 없으니 이걸 참조하면 되요.
(경우에 따라선 USER32.GetDC 는 서치창에선 안보일수도 있음..)
USER32.DrawMenuBar ~ USER32.GetDC
바로 이 사이에 범인은 있는 겁니다!!! 코드가 있어요~
저 둘 사이의 주소안에 있어요... 참고로 용의자가 꽤 많아요.
그치만 또 생각보다 엄청 많은건 아니라서
근성있는 분들에겐 충분히 해결 가능한 숫자 입니다.
스스로 이런 저런 서치 방법으로 의심가는 곳을 찾으셨다면,
저 자료를 참고로 저 사이에 의심가는 곳의 주소가 없으면
그부분은 과감히 버려도 되는겁니다...?? (아닌가?)
아무튼
저걸 이용해 찾는법은
위 스샷처럼 올리디버거에서 서치 포에 올 인터모듈러 콜스 를 눌러서 나온창을 보면서
찾으시면 됩니다.
좀 아는분들은 참조로 해서 나온 주소 범위 안에 있다는것을 참고로만 하시고,
노가다 용자분들은 그 범위안에 있는 PUSH 로 시작하는 스타트 부분을
(일부 게임의 경우 - PUSH로 시작전에 위에 한줄 다른게 있을수도 있음,
어쩃든 NOP로 되있거나 회색으로 되있는 부분 다음에 있는 스타트 부분을..)
닥치는대로 브렉먹이고 게임 대사를 진행해보시면 됩니다.
자 그럼 실 예를 들어봅시다~
아카토킷을 예를 들어볼게요.
찾아보면 저기 보이죠
찾기 쉬우라고 해당 부분에 브렉 먹여서 저렇게 빨간색으로 표시된거니까
그부분은 신경쓰지마세요. 원래는 올리디버거가 빨간색으로 표시 안해줍니다...
아무튼 기본적으로는 USER32.DrawMenuBar 를 기준으로 찾으시면 됩니다.
이녀석 밑에 저 위에 참조하라고 했던 부분들이 보이면 그 주소들 사이에 코드화용 주소는 있는겁니다.
근데 이 예를 든 게임의 경우 USER32.GetDC 가 저 창에선 안보이죠?
근데 아래 보이는 USER32.ReleaseDC 를 따라가서 살펴보면~~~
저 위에 빨간 네모친 부분처럼 USER32.GetDC 가 숨어있는게 보이죠.
그러니 여기 즈음이란게 맞는겁니다.
아무튼 이겜의 경우
USER32.DrawMenuBar 이거 밑에 kernel32.lstrcpyA 이것도 보이니까
485BC6 ~ 48637B 요 사이에 있는게 되는겁니다~
이걸 알았으니 이젠 뭐?
그냥 그 범위안을 닥치고 돌격 브렉~~
참 쉽죠잉~????????????????????
......
그럼 저는 이만 슈르릉~
콘트롤+w는 뭐가 변하는지 모르겠네요;;