关于修改汇编代码跳转到注入后DLL文件函数的问题!(100)

  • 主题发起人 主题发起人 snopy
  • 开始时间 开始时间
S

snopy

Unregistered / Unconfirmed
GUEST, unregistred user!
DLL文件是注入到进程的! 已知要修改的地址:$00586804 已知要跳转到注入后DLL文件的函数名:pdazuf (不知道这个函数名的地址) 要修改地址的汇编代码是:mov ebx, dword ptr [$045560C8] 现在就要修改上面这行代码为: jmp pdazuf(这个“pdazuf”如何得到真正的地址) 请高手们指教指教,到底如何写才能跳转到指定的函数地址,最好能给出源码,谢谢! 下面是我的代码,帮我看看哪里出错了,下面代码修改后一会游戏就出错!procedure TForm1.Button22Click(Sender: TObject); // 修改游戏代码跳到我的代码Var addr11, addr22, addr2 : DWORD; dwOldProtect : DWORD; dwByteWrite : DWORD; addr : pointer;begin addr := @pdazuf111; addr2 := $E9; addr11 := $00586804; addr22 := $00586805; ProcessHandle := OpenProcess(PROCESS_ALL_ACCESS, false, ProcessID); VirtualProtectEx(ProcessHandle,Pointer(addr11),5,PAGE_EXECUTE_READWRITE, @dwOldProtect); WriteProcessMemory(ProcessHandle, Pointer(addr11), Pointer(addr2), 1, dwByteWrite); WriteProcessMemory(ProcessHandle, Pointer(addr22), addr, 4, dwByteWrite); VirtualProtectEx(ProcessHandle,Pointer(addr11), 5, dwOldProtect, @dwOldProtect); CloseHandle(ProcessHandle);end;procedure pdazuf111; stdcall ; //游戏自动CALL吃红蓝代码begin asm pushad push ebx mov ebx, dword ptr [$045560C8] mov dword ptr [ebx], eax pop ebx pushad call pdazuf222 popad jmp [$00586809] end;end;procedure pdazuf222; stdcall ; //判断红蓝量var hp, mp, maxhp, maxmp : DWORD ;begin asm pushad mov ecx, dword ptr [$04554670] mov hp, ecx mov ecx, dword ptr [$04554674] mov mp, ecx mov ecx, dword ptr [$0455467C] mov maxhp, ecx mov ecx, dword ptr [$04554680] mov maxmp, ecx popad end; if ((hp * 100) / maxhp ) < 80 then pdazuf2; if ((mp * 100) / maxmp ) < 50 then pdazuf1;end;procedure pdazuf1; stdcall ; //使用包包第一格物品的CALL 蓝放在包包第一格var address:pointer;begin Address:=pointer(pcall); asm pushad push 0 push 1 push 0 call Address popad end;end;procedure pdazuf2; stdcall ; //使用包包第二格物品的CALL 红药放在包包的第二格var address:pointer;begin Address:=pointer(pcall); asm pushad push 1 push 1 push 0 call Address popad end;end;
 
外挂问题没$没人鸟你的
 
后退
顶部