Delphi call调用例子
在群里看到有人发了个别人发给他的
我看了写的比较生动 在这转给大家看看
好的 拾取物体函数写好了 下步是如何将代码注入到游戏进程中执行??
1) 小偷开门
PHND:= OpenProcess (PROCESS_ALL_ACCESS, False, PID);得到游戏窗口句柄获得权限
2)小偷在房间搞个放作案方案的地方
TAdd := VirtualAllocEx(PHND, nil, 4096, MEM_COMMIT, PAGE_EXECUTE_READWRITE)
在游戏进程中申请4096字节的空间用来存放函数代码
3)小偷把作案方案放入作案空间
WriteProcessMemory(TPHND, TAdd,PickCall,4096 , WriteCount);
把代码写到游戏进程中 开始的地址是第二步得到的位置
4)小偷在房间中搞个放作案工具的地方
PAdd := VirtualAllocEx(PHND, nil, 128, MEM_COMMIT, PAGE_EXECUTE_READWRITE)
在游戏进程中申请128字节的空间用来存放参数
5)小偷把作案工具放入房间
WriteProcessMemory(TPHND, TAdd,param,128 , WriteCount);
写入参数
6)一起就就绪 开始作案
TmpHandle := CreateRemoteThread(TPHND, nil, 0, TAdd, padd, 0, WriteCount);
WaitForSingleObject(TmpHandle, INFINITE);//等待作案完成
CloseHandle(TmpHandle); //关闭远程的句柄 作案完成后关门闪人
到这里 基本都搞清楚注入代码的用法了,学习重点是
1)理解CreateRemoteThread函数各个参数的意义
2)数据结构的用法
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
procedure runCall;stdcall; // 走路call
var
Address:Pointer;
begin
Address:=Pointer($004537E4); //函数入口地址
asm
pushad //保存寄存器环境
mov eax,47 //参考上面的反汇编
call Address //正式调用函数
popad //恢复寄存器环境
end;
end;
//-------------------------注入代码的函数----------------------------
//参数说明:
//InHWND:被注入的窗口句柄
//Func:注入的函数的指针
//Param:参数的指针
//ParamSize:参数的大小
//
procedure InjectFunc(InHWND: HWND; Func: Pointer; Param: Pointer; ParamSize: DWORD);
var
hProcess_N: T
相关文档:
在设计数据库应用程序的时候,经常需要将一些信息从程序中独立出来,以保证程序的可移植性。其中最重要的信息就是数据库的连接参数。
在Delphi中,获得正确的数据库连接参数的方法十分简单,你只需要建立一个数据模块,在其中添加一个ADO Connection,双击之,然后在弹出的窗口中选“Use Connection String”,单 ......
函数一:
view plaincopy to clipboardprint?
uses
Windows,
SysUtils,
Classes,
ShellAPI;
function RunAndWait(FileName: string; Visibility: Integer): THandle;&nbs ......
1.防止刷新时闪烁的终极解决办法
{ 防止刷新时闪烁的终极解决办法(对付双缓冲无效时) }
Perform($000B, 0, 0); //锁屏幕 防止闪烁
// 做一些会发生严重闪烁的事情..
//解锁屏幕并重画
Perform($000B, 1, 0);
& ......