自己写了一个游戏工具,一直运行的很好,但这次游戏更新后,
存放怪物列表动态地址的基地址不再使用全局变量,而是使用了一个线程局部变量存放,游戏内可以访问,但只能通过fs寄存器,象这样:
 mov     ecx, large fs:2Ch
 mov     edx, TlsIndex
 mov     eax, [ecx+edx*4]
 mov     edi, [eax+8]
edi里面存放的就是基地址现在想在游戏外部得到edi这个基地址的值,怎么写代码才能搞定啊
有哪位xdjm懂得怎么做啊,请不吝赐教
多谢多谢

解决方案 »

  1.   

    不懂,关注ing...
    顺便问一下,我使用的是VC++6.0,我想了解我的工作平台的汇编语言,请问有什么专门的书籍可以参考法。谢谢楼主借的沙发:)
      

  2.   

    大部分x86的32位汇编都可以在vc6.0里内嵌使用
    如果全汇编的话,去看看罗云彬的 win32汇编程序设计
      

  3.   

    DMA,内存补丁方式,动态转静态.资料可以google到很多
      

  4.   

    自己解决了
    方法如下:
    HANDLE hThread = 
    OpenThread(THREAD_GET_CONTEXT|THREAD_QUERY_INFORMATION | PROCESS_VM_OPERATION|PROCESS_VM_READ,FALSE, threadID);
    if (NULL != hThread)
    {
    CONTEXT context = {0};
    LDT_ENTRY sel;
    DWORD read,teb,tls; context.ContextFlags=CONTEXT_ALL;
    GetThreadContext(hThread,&context);
    GetThreadSelectorEntry(hThread,context.SegFs,&sel);
    teb = sel.BaseLow
                      |(sel.HighWord.Bytes.BaseMid<<16)
                      |(sel.HighWord.Bytes.BaseHi<<24); ReadProcessMemory(hProcess,(LPCVOID)(teb + 0x2c),&tls,sizeof(DWORD),&read);
             //TLS里就是线程的局部存贮地址
    ::CloseHandle(hWowMainThread);
    } 结贴