我在使用C#做诛仙的外挂。
现在已经可以从游戏进程中读取游戏数据了。
但是如何用CALL调用游戏里的指令还不会。
我已经知道怎么使用MASM32编写DLL给C#调用了。
但是我不知道怎么把游戏进程这个参数告诉它。
我只会一点C#,对汇编一无所知,游戏指令CALL也是从网上搜到的。
比如汇编代码是这样的:
//==================根据怪物ID进行选择========================
  addr:=pointer($5785c0);  //7.3更新
  asm
    pushad
    mov esi,gwid//怪物ID
    push esi
    MOV ECX,DWORD PTR DS:[$900adc]
    MOV ECX,DWORD PTR DS:[ECX+$20]
    add ecx,$D4
    call addr
    popad
end;
他用的什么语言我也不清楚,
我想我大概要做的就是把asm和end;之间的汇编做成DLL
然后给C#调用。
但是这段汇编该在那个进程里使用,怎么告诉它?
也就是说,我想把游戏进程这个参数加进去,我该怎么做?

解决方案 »

  1.   

    http://www.codeproject.com/csharp/unmanage.asp看看吧,全英文:)是用VC把汇编嵌入写成dll,然后C#调用VC的dll这弯走的够长
      

  2.   

    The .NET Framework does not support this. Managed code has no concept of a consistent value for a function pointer because these function pointers are proxies that are built dynamically.
      

  3.   

    我只会一点C#,对汇编一无所知,游戏指令CALL也是从网上搜到的。
    ????????????????
    这样就开始写外挂了,佩服楼住的勇气!
      

  4.   

    直接用VC做不是很简单?干嘛要C#做这个?
      

  5.   

    我的问题解决了!
    实践证明:只有想不到,没有不可能!
    我用MASM把汇编编译成机器码.
    然后用c#,
    1,VirtualAllocEx在要注入的进程中申请空间,
    2,WriteProcessMemory写入机器码,
    3,CreateRemoteThread创建远程线程.
    4,收尾工作.
    搞定!
    散分了.另外,C#写外挂是有好处地,现在反外挂对32位程序起作用,但对.NET却没折,哈哈!