浅谈屏幕取词划词与API HOOK、远程注入的关系以及技术原理
来源:互联网 发布:linux解包boot.img 编辑:程序博客网 时间:2024/06/17 04:38
说到屏幕取词,就是通过拦截windows的显示API,获取输出的文本,然后提取出自己想要的信息的一个技术手段。windows有这么几个常用的,TextOutA,TextOutW,ExtTextOutA,ExtTextOutW以及Diretc3D的一些绘制函数(nopad,IE的输入框使用的是ExtTextOut, chrome使用的D3D的绘制函数,一些UI库的静态文本框基本是使用textOut),只要HOOK住这个这些函数,就可以完成我们相应的功能了。目前我使用的是detours库:
该方法使用比较简单,比如;
static BOOL(WINAPI *OLD_DrawTextExW)(HDC hdc, LPWSTR lpchText, int cchText, LPRECT lprc, UINT dwDTFormat, LPDRAWTEXTPARAMS lpDTParams) = DrawTextExW;
int WINAPI MyDrawTextExW(HDC hdc, LPWSTR lpchText, int cchText, LPRECT lprc, UINT dwDTFormat, LPDRAWTEXTPARAMS lpDTParams);
然后在初始化那里调用下面代码,
DetourAttach(&(PVOID&)OLD_DrawTextExW, MyDrawTextExW);
当系统每次调用DrawTextExW的时候就会进入我们写的函数MyDrawTextExW。该方法只能对本进程有效,不能HOOK住其它进程里面的东西,如果想HOOK住其它进程里面的函数,那么我们需要进行远程注入,需要调用CreateRemoteThreadEx或者CreateRemoteThread进行远程注入,只要注入到其它进程里面就可以拦截我们想要的API了。最后我们通过管道或者一些通信手段将我们想要的信息发出来即可
远程注入的方法参考 http://blog.csdn.net/xiaocaiju/article/details/7668473
至于屏幕取词,原理更加简单,首先先注册一个粘贴板事件,调用 SetClipboardViewer (参加MSDN),然后再通过鼠标钩子拦截鼠标按下以及鼠标弹起时的位置,模拟CTRL + C的按键,发出去就可以了,
keyAction(VK_CONTROL, 1);keyAction('C', 1);keyAction('C', 0);keyAction(VK_CONTROL, 0);
当收到粘贴板事件后,通过处理粘贴板里面的数据进行相关操作即可
阅读全文
0 0
- 浅谈屏幕取词划词与API HOOK、远程注入的关系以及技术原理
- 浅谈API HOOK技术
- 浅谈API HOOK技术
- EasyHook远程进程注入并hook api的实现
- Hook API相关技术以及例子,Hook API的原理其实是通过核心函数强制修改原API的头部指针
- 浅谈API HOOK技术(一)
- API hook 原理与Windows hook 应用
- API hook 原理与Windows hook 应用
- API hook 原理与Windows hook 应用
- 注入进程 远程线程注入 与 hook注入
- Windows Dll注入与API HOOK
- API HOOK的实现原理
- 详谈HOOK API的技术
- 详谈HOOK API的技术
- 详谈HOOK API的技术
- 详谈HOOK API的技术
- 详谈HOOK API的技术
- 详谈HOOK API的技术
- spring,mybatis事务管理配置与@Transactional注解使用[转]
- scala中spark错误 Error initializing SparkContext
- 为什么Git 比 SVN 好
- OpenGL-渲染管线的流程(有图有真相)
- 聊聊全栈
- 浅谈屏幕取词划词与API HOOK、远程注入的关系以及技术原理
- sublime3 汉化
- leetcode-Add Tow Numbers
- 09:整型与布尔型的转换
- Hololens的世界坐标理解
- iOS10 权限以及相关设置
- Combinations 乘法逆元
- 欢迎使用CSDN-markdown编辑器
- Git常用命令