关于线程插入函数如何用的问题 Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiAPI/html/delphi_20061207182656107.html
我现在掌握了不用dll也能代码注入的技术  
   
  就是有一个inject函数   把要插入进程的句柄和要插入的函数名前加一个"@"  
  当作参数传递过去就行了,如下:  
  procedure   Inject(ProcessHandle:   longword;   EntryPoint:   pointer);  
   
  本来是很好用的  
   
  但是我这里有一份带窗体的程序的代码     想让它插到某个pid里  
  原来的dpr文件是这样的:  
   
  program   server;  
   
  uses  
        Forms,  
      mainserve   in   'mainserve.pas'   {ServerForm};  
   
  begin  
      Application.Initialize;  
      Application.CreateForm(TServerForm,   ServerForm);  
      Application.Run;  
  end.  
   
  我改成了:  
   
  program   server;  
   
  uses  
        Forms,windows,  
      mainserve   in   'mainserve.pas'   {ServerForm};  
   
  procedure   main();  
   
  begin  
      Application.Initialize;  
      Application.CreateForm(TServerForm,   ServerForm);  
      Application.Run;  
  end;  
   
   
  var  
  ProcessHandle,   PID:   longword;  
   
  begin  
   
  PID:=1252;//当前我运行的某个IE的PID  
  ProcessHandle   :=   OpenProcess(PROCESS_ALL_ACCESS,   False,   PID);//打开进程  
  Inject(ProcessHandle,   @Main);//插入代码  
  CloseHandle(ProcessHandle);//关闭线程句柄  
  end.  
   
   
   
  那个mainserve.pas没作改动  
   
  编译没错       一运行就出错说   某个内存引用的某个内存不能为writen   结果IE就关了  
   
   
  我的改动并没错呀??  
   
  我怀疑这个错误和程序里有窗体有关       但是用到了timer     是不是就不能去掉窗体??  
   
  我的怀疑正确吗????

说明一下       我修改时已把inject的定义加上了       只是上面的代码没体现出来

不用DLL   注入   的方法我也想知道哦..  
  aphex的不用DLL远程注入是  
  GetWindowThreadProcessId(FindWindow('Shell_TrayWnd',   nil),   @Pid);  
  //获取Exp进程的PID码,Shell_TrayWnd为类名,相关的需用SPY++来查看  
   
  ProcessHandle   :=   OpenProcess(PROCESS_ALL_ACCESS,   False,   Pid);   //打开进程  
   
  hModule   :=   Pointer(GetModuleHandle(nil));  
  //这里得到的值为一个返回一个指针型变量,指向内容包括自身映像的基址和长度  
   
  Extent   :=   PImageOptionalHeader(Pointer(integer(hModule)   +   PImageDosHeader(hModule)._lfanew   +   SizeOf(dword)   +   SizeOf(TImageFileHeader))).SizeOfImage;  
  //得到内存映像的长度  
   
  VirtualFreeEx(ProcessHandle,   hModule,   0,   MEM_RELEASE);  
  //在Exp进程的内存范围内分配一个足够长度的内存  
   
  hModule_News   :=   VirtualAllocEx(ProcessHandle,   hModule,   Extent,   MEM_COMMIT   or   MEM_RESERVE,   PAGE_EXECUTE_READWRITE);  
  //确定起始基址和内存映像基址的位置  
   
  WriteProcessMemory(ProcessHandle,   hModule_News,   hModule,   Extent,   Size);  
  //确定上面各项数据后,这里开始进行操作  
   
  CreateRemoteThread(ProcessHandle,   nil,   0,   @Download,   hModule,   0,   ThreadId);  
  //建立远程线程,至此注入过程完成  
   
  CloseHandle(ProcessHandle);  
   
   
  偶把我的程序定义成个过程   然后用他这样的方法去注入.   结果跟LX一样...    
  高手详细说下吧..

楼上的是同道中人  
   
  实际上我们插入一个小过程可以成功     哪怕这个过程调用其它自定义的过程  
   
  但是把一个程序的原代码里dpr文件里的主程序定义为过程   再插入这个过程就会报错  
   
  因为什么??

请高手现身

关注

请高手献身

请高手献身

人工置顶

还没有人来么?  
  我现在也有段代码   他定义的过程注入没问题..我自己写个过程   注入都出错.     郁闷

人工置顶

人工置顶

关于线程插入函数如何用的问题相关推荐

  1. 把C++类成员方法直接作为线程回调函数

    我以前写线程时要么老老实实照着声明写,要么使用C++类的静态成员函数来作为回调函数,经常会因为线程代码而破坏封装.之前虽然知道类成员函数的展开形式,但从没想过利用过它,昨天看深入ATL时无意中学会了这 ...

  2. Qt使用 std::thread 线程插入数据到 QTableWidget

    Qt使用 std::thread 线程插入数据到 QTableWidget中 一.实现效果 二.主要代码 1. ThreadTable.h 头文件 2. ThreadTable.cpp 源文件 3. ...

  3. 【 C 】简化双链表插入函数(对在双链表中插入一个新值的简明程序的简化)

    目录 背景 第一个技巧是语句提炼(statement factoring) 第二个简化技巧 最终简化版本 背景 上篇博文:[ C ]在双链表中插入一个新值的简明程序,讲了一个简明的双链表插入函数,那个 ...

  4. python 在主线程开线程_Python开启线程,在函数中开线程的实例

    逻辑处理上分成了多个模块,为了提高效率,前一个模块处理完调用后一个模块操作时使用多线程 我这里遇到的情形是前面取数据后面存到mysql,发现单线程效率很低,改为取数据后开线程存到mysql 开启线程之 ...

  5. 【Linux 内核】进程优先级与调度策略 ③ ( 设置、获取线程优先级的核心函数 | 修改线程调度策略函数 )

    文章目录 一.设置.获取线程优先级的核心函数 二.修改线程调度策略函数 一.设置.获取线程优先级的核心函数 设置.获取 线程 优先级的 核心 函数 : ① 设置 " 创建线程 " ...

  6. 【Linux 内核】进程管理 ( 内核线程概念 | 内核线程、普通进程、用户线程 | 内核线程与普通进程区别 | 内核线程主要用途 | 内核线程创建函数 kernel_thread 源码 )

    文章目录 一.内核线程概念 二.内核线程.普通进程.用户线程 三.内核线程.普通进程区别 四.内核线程主要用途 五.内核线程创建函数 kernel_thread 源码 一.内核线程概念 直接 由 Li ...

  7. 【Android NDK 开发】JNI 线程 ( JNI 线程创建 | 线程执行函数 | 非 JNI 方法获取 JNIEnv 与 Java 对象 | 线程获取 JNIEnv | 全局变量设置 )

    文章目录 I . JNI 线程创建 II . 线程执行函数 III . 线程方法获取 Java 对象 IV . 线程方法获取 JNIEnv V . JNI 线程 完整代码示例 I . JNI 线程创建 ...

  8. python可以开多少线程_Python开启线程,在函数中开线程的实例

    逻辑处理上分成了多个模块,为了提高效率,前一个模块处理完调用后一个模块操作时使用多线程 我这里遇到的情形是前面取数据后面存到mysql,发现单线程效率很低,改为取数据后开线程存到mysql 开启线程之 ...

  9. 插入函数c语言,线性表的插入函数

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 //SY2-2.CPP #include #define MAXSIZE 100 void Disp_A(int A[],int num) /*输出向量* ...

最新文章

  1. 南农沈其荣组Science子刊揭示番茄早期微生物组功能决定成年健康
  2. mysql 查询日志介绍
  3. java rest 调用_Java调用Restful之RestTemplate
  4. Linux使用ffmpeg合并视频
  5. 高扫后督解决方案 力助银行内部核查
  6. php文件夹重命名,PHP自动重命名文件实现方法
  7. 垂直布局的HTML表单
  8. 尴尬!微软的 PowerShell 竟是 Linux 用户最多!| 极客头条
  9. 这款折纸机器人玩具,可以帮助孩子学习编程和Robot知识
  10. 失范的数字货币量化市场:积弊成疾,洗牌将至 |链捕手
  11. 鸿蒙系统在哪里,“安卓系统”和“鸿蒙系统”区别在哪里?网友:根本就是一个天上一个地下...
  12. Visio2016安装
  13. 数组中常见的问题,索引越界和空指针异常
  14. OpenCV打开摄像头截图
  15. ffmpeg 常用命令总结:(avi转MP4、MP4转ts、视频压缩、去除视频声音、合并音频和视频)
  16. 保姆级教程:NobePay从注册到充值开卡全过程
  17. 合适学习人工智能的小白的一本书《极简AI入门:一本书读懂人工智能思维与应用》
  18. 物联网卡这样设置一下上网全程4G!建议收藏!
  19. VinsFusion中的MEI模型解析
  20. VB-Word添加页眉页脚

热门文章

  1. Apache Struts 和 Spring 开源漏洞状况的对比
  2. 详细分析谷歌紧急修复的 Chrome 0day(CVE-2021-21224)
  3. 苹果紧急修复远程漏洞,影响数十亿设备
  4. 推特安卓版漏洞可导致攻击者访问用户私信
  5. 这个严重的无补丁 UPnP 漏洞影响几乎所有的IoT设备:绕过安全系统、扫描LANs
  6. 《前端十年心路》书稿规划
  7. Spring - Netty (整合)
  8. 深入理解SpringBoot的过滤条件--AutoConfigure
  9. 初创企业如何实现2天快速上线?
  10. 状态(State)模式