解析編

解析して得られた結果のまとめ


 注:
  ()内のアドレスはRichardBurnsRally_NoSSE.exeの場合です。


関数

0x0040E000 (0x0040B350)

戻り値:LPDIRECT3DDEVICE9?
呼出し規約:__thiscall
引数:this

LPDIRECT3DDEVICE9 を返すと思われる関数だが、このままでは使えない。
そこで、0x0044A598, 0x0044A59D, 0x0044A5A6の命令を見ればわかるが、
DWORD  pointer;
LPDIRECT3DDEVICE9  d3ddev;
memmove( (void*)&pointer, (const void*)(0x007EA990), sizeof(void*) );
memmove( (void*)&pointer, (const void*)(pointer + 0x28), sizeof(void*) );
memmove( (void*)&d3ddev, (const void*)(pointer + 0xF4), sizeof(LPDIRECT3DDEVICE9) );
あるいは
*(DWORD*)( *(DWORD*)(*(DWORD*)0x007EA990 + 0x28) + 0xF4 )
のようにすれば取得できるはず。

 注:NoSSE の場合は 0x007EA990 を 0x007ECAD0 にすべし。


0x0040E850 (0x0040BBA0)

戻り値:HRESULT?
呼出し規約:__thiscall
引数:this, UINT, DWORD, D3DFORMAT, D3DPOOL, IDirect3DIndexBuffer9**, HANDLE* ?

IDirect3DDevice9::CreateIndexBuffer を呼び出しているらしい。


0x0040E880 (0x0040BBD0)

戻り値:HRESULT?
呼出し規約:__thiscall
引数:this

IDirect3DDevice9::BeginScene を呼び出している。


0x0040E890 (0x0040BBE0)

戻り値:HRESULT?
呼出し規約:__thiscall
引数:this

何かの初期化の後、IDirect3DDevice9::EndScene を呼び出している。


0x00473490 (0x004753D0)

戻り値:int
呼出し規約:__stdcall
引数:HINSTANCE, HINSTANCE, LPSTR, int ?

WinMainらしい。


0x00625C10 (0x00618C30)

戻り値:bool?
呼出し規約:__thiscall
引数:this, char* ?

プラグインの読み込みらしい。
LoadLibraryA、GetProcAddressが呼び出されている
(文字列"RBR_CreatePlugin"もここにある)ので、
プラグインはここでロードされると思われる。
RBR_CreatePlugin(IPlugin* RBR_CreatePlugin( IRBRGame* ))の
呼び出しも行なっているっぽい。



  • 最終更新:2010-08-09 22:20:00

このWIKIを編集するにはパスワード入力が必要です

認証パスワード