엔진정보포럼에 올리려고 했는데

글쓸 권한이 없다고 뜨길래 여기에 적습니다...

 

 

일단 이 내용은

제가 찾은 에스쿠드 코드들을 쭈욱 보며 공통점을 찾다가 나온것으로

신작에도 써먹힐지는 의문이지만,

아마 될겁니다. (무책임한...)

 

일단 대충 제가 메모장에 적은 공통점 내용은

===============================메모장 내용===================================

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

바로 이 사이에 범인은 있는 겁니다!!! 코드가 있어요~

저 둘 사이의 주소안에 있어요...  참고로 용의자가 꽤 많아요.

그치만 또 생각보다 엄청 많은건 아니라서

근성있는 분들에겐 충분히 해결 가능한 숫자 입니다.

 

스스로 이런 저런 서치 방법으로 의심가는 곳을 찾으셨다면,

저 자료를 참고로 저 사이에 의심가는 곳의 주소가 없으면

그부분은 과감히 버려도 되는겁니다...?? (아닌가?)

 

아무튼

저걸 이용해 찾는법은

1010.JPG

 

위 스샷처럼 올리디버거에서 서치 포에  올 인터모듈러 콜스 를 눌러서 나온창을 보면서

찾으시면 됩니다.

 

좀 아는분들은 참조로 해서 나온 주소 범위 안에 있다는것을 참고로만 하시고,

노가다 용자분들은 그 범위안에 있는 PUSH 로 시작하는 스타트 부분을

(일부 게임의 경우 - PUSH로 시작전에 위에 한줄 다른게 있을수도 있음,

 어쩃든 NOP로 되있거나 회색으로 되있는 부분 다음에 있는 스타트 부분을..)

닥치는대로 브렉먹이고 게임 대사를 진행해보시면 됩니다.

 

 

 

 

 

 

 

 

 

자 그럼 실 예를 들어봅시다~

아카토킷을 예를 들어볼게요.

 

1011.JPG

 

찾아보면 저기 보이죠

찾기 쉬우라고 해당 부분에 브렉 먹여서 저렇게 빨간색으로 표시된거니까

그부분은 신경쓰지마세요. 원래는 올리디버거가 빨간색으로 표시 안해줍니다...

 

아무튼 기본적으로는 USER32.DrawMenuBar 를 기준으로 찾으시면 됩니다.

이녀석 밑에 저 위에 참조하라고 했던 부분들이 보이면 그 주소들 사이에 코드화용 주소는 있는겁니다.

근데 이 예를 든 게임의 경우 USER32.GetDC 가 저 창에선 안보이죠?

근데 아래 보이는 USER32.ReleaseDC 를 따라가서 살펴보면~~~

 

1012.JPG

 

저 위에 빨간 네모친 부분처럼 USER32.GetDC 가 숨어있는게 보이죠.

그러니 여기 즈음이란게 맞는겁니다.

 

아무튼 이겜의 경우

USER32.DrawMenuBar    이거 밑에   kernel32.lstrcpyA  이것도 보이니까

485BC6 ~ 48637B   요 사이에  있는게 되는겁니다~

 

이걸 알았으니 이젠 뭐?

그냥 그 범위안을 닥치고 돌격 브렉~~

 

참 쉽죠잉~????????????????????

......

그럼 저는 이만 슈르릉~