当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 需要一个用来注入的dll(inject.dll)及一个调用程序
 

 

 ·性能vs结构    »显示摘要«
    摘要: 前两天简单实现了一个delphi下的mvc模式,没想到真的就遇到问题了,想想就在不久前和人争论用不用mvc的时候还暗自认为遇到麻烦是功力不够的表现,呵呵,汗啊,报应来得真快。 其实说起来都不是什么大问题,先是重复触发更新的问题。ta有3个属性,每个改动都会change,tb里包含2个属性,每个改动都会它更新内部的一个ta的3个属性,结果我在外面一次改了tb的两个属性,change了6次。这个通......
 ·tstringgrid多选的复制与拷贝    »显示摘要«
    摘要: uses clipbrd; function stringgridselecttext(mstringgrid: tstringgrid): string; var i, j: integer; s: string; begin result := ; if not assigned(mstringgrid) then exit; for j := mstringg......


用hook实现dll注入详解

需要一个用来注入的dll(inject.dll)及一个调用程序(caller.exe)

流程: 【程序编程相关:报名机器人

【推荐阅读:自己编写树(Tree)的封装类

  【扩展信息:DFM文件与XML文件互转

caller.exe

procedure testhook;

var pwnd,hchild, hwndinject :hwnd;

    msg:tmsg;

begin

   //通过窗口标题用findwindow找到要注入的程序的主窗口句柄pwnd

   pwnd := findwindow(progman,nil);

   //用findwindowex(hmain,0,nil,nil)找到要处理的子窗口句柄hchild

   hchild := findwindowex(pwnd,0,nil,nil);

   //用getwindowthreadprocessid(hchild,nil)找到要注入的线程

   dwthreadid := getwindowthreadprocessid(hchild,nil);

   //调用 inject.dll的setinjecthook方法

   setinjecthook(dwthreadid);

   //等待消息返回

   getmessage(msg,0,0,0);

   //找到注入的窗口

   hwndinject:= findwindow(nil,injectform);

   //发送控制消息,将目标窗体的句柄作为wparam,控制参数以lparam传入

   sendmessage( hwndinject, wm_app,hchild,integer(true));

   //关闭注入的窗口

   sendmessage( hwndinject,wm_close,0,0);

   //等待窗口关闭

   sleep(500);

   //检查是否成功关闭


...   下一页
    摘要: 给大家个链接了: http://www.marcocantu.com/development/borcon2004/default.htm http://www.chuckscorner.com/ 看起来很酷啊 ! ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE