社区
进程/线程/DLL
帖子详情
如何在其他进程中安装Hook钩子的问题(已经将dll注入其他进程)
chelp
2012-06-10 10:38:59
问题讲解:【如何在一个远程进程的安装局部钩子】
1.A进程注入DLL到进程B中
2.然后在DLL中安置钩子
3。通过钩子截获发往B中的线程
自认为问题出在DLLMain()
...全文
294
9
打赏
收藏
如何在其他进程中安装Hook钩子的问题(已经将dll注入其他进程)
问题讲解:【如何在一个远程进程的安装局部钩子】 1.A进程注入DLL到进程B中 2.然后在DLL中安置钩子 3。通过钩子截获发往B中的线程 自认为问题出在DLLMain()
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
chelp
2012-06-15
打赏
举报
回复
谢谢大家的关注
chelp
2012-06-14
打赏
举报
回复
跪求啊?
chelp
2012-06-11
打赏
举报
回复
我就是想:用钩子截获其他特定进程窗口的消息
远程注入DLL已成功
想在DLL中设置钩子,实现截获
sj720618
2012-06-11
打赏
举报
回复
你是想hook PeekMessage吗?
chelp
2012-06-11
打赏
举报
回复
整体思路:远程注入DLL (CreateRemoteThread())到其他进程
我要的是如何在DLL MAIN()所在线程中设置HOOK
截获消息
chelp
2012-06-11
打赏
举报
回复
WH_GETMESSAGE钩子,现在是安装钩子不起作用。
BOOL APIENTRY DllMain(HINSTANCE hModule, DWORD reason, LPVOID lpReserved)
{ char * szProcessId = (char *)malloc(10*sizeof(char));
char *szThreadId=(char *)malloc(10*sizeof(char));
DWORD ProcessId=GetCurrentProcessId();
DWORD ThreadId=-1;
THREADENTRY32 pe32;
pe32.dwSize=sizeof(pe32);
HANDLE hsnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);
if(hsnapshot==NULL)
{
MessageBox(NULL,"WWW0",NULL,0);
}
BOOL isThread =Thread32First(hsnapshot,&pe32);
if(isThread==FALSE)
{
MessageBox(NULL,"WWW1",NULL,0);
return 0;
}
do
{
if(ProcessId==pe32.th32OwnerProcessID)
{
ThreadId=pe32.th32ThreadID;
break;
}
}
while(Thread32Next(hsnapshot,&pe32));
switch (reason){
case DLL_PROCESS_ATTACH:{
//获取并显示当前进程ID
_itoa(GetCurrentProcessId(), szProcessId, 16);
_itoa(ThreadId,szThreadId,16);
m_GetM=SetWindowsHookEx(WH_GETMESSAGE,GetMsgProc,hModule,ThreadId);//GetModuleHandle(NULL),ThreadId);
if(m_GetM==NULL)
{
MessageBox(NULL,"ADF","DLL OR DLL",MB_OK);
return 0;
}
MessageBox(NULL,szProcessId,"RemoteDLL",MB_OK);
MessageBox(NULL,szThreadId,"dlltread",MB_OK);
Sleep(10000);
}
default:
return TRUE;
}
return TRUE;
}
LRESULT CALLBACK GetMsgProc(
int code, // hook code
WPARAM wParam, // removal flag
LPARAM lParam // address of structure with message
)
{
if(code<0)return CallNextHookEx(m_GetM,code,wParam,lParam);
if(code!=HC_ACTION) return CallNextHookEx(m_GetM,code,wParam,lParam);
MSG *Pmsg=(MSG *)lParam;
switch(Pmsg->message)
{
case WM_LBUTTONDOWN: Pmsg->message=WM_RBUTTONDOWN; MessageBox(Pmsg->hwnd,"WM_LBUTTON","WM_RBUTTON",0);break;
default :
return 0;
}
return 0;
}
chelp
2012-06-11
打赏
举报
回复
哎!神啊!
Lactoferrin
2012-06-11
打赏
举报
回复
SetWindowsHookEx本身就有注入dll的功能
Lactoferrin
2012-06-10
打赏
举报
回复
你的钩子指什么
利用输入法
注入
DLL
Ring3下
注入
DLL
的另类方法,能过杀软和游戏NP(源码)
注入
DLL
是做全局
钩子
或者拦截类软件都有可能用到的技术,如果做外挂的话我们也有 可能需要
注入
一个
DLL
到游戏
进程
中
去干点什么“坏事”。 但我们知道现在要
注入
DLL
是越 来越难了。场景1:制作火星文输入法外挂,原理是利用API
HOOK
拦截并修改输入法相关函 数,需要
注入
一个
DLL
到所有
进程
中
,但是后来发现,在开启了瑞星的帐号保险箱后,用户 将不能在QQ
中
输入火星文。原因是瑞星保护了QQ
进程
,禁止对其
注入
DLL
,解决方法是提示 用户关闭帐号保险箱 -_-| 确实是很降低用户体验的一个不是办法的办法。场景2:制作某 游戏外挂,需要
注入
一个
DLL
到游戏
进程
中
去直接调用游戏函数完成某一功能。结果发现该 游戏有NP保护,OpenProcess打不开,创建远程线程也不行,试用其它方法也一一失败。遇 到上面的情况,高手们自然是转到Ring0下面去,使用驱动之类的办法来对付啦,不过吾等 菜鸟可就是酒井没法子了 -_-| 不过也别太灰心,凡事总会有办法的。我想我们需要一种持久的、稳定的、不容易被安 全软件屏蔽的
DLL
注入
方法,后来发现,输入法程序就是能完成这一任务的理想人选。输入 法程序程序到底是什么?它没有自己的
进程
,并且在系统还没有登录时就已被加载(在欢迎 界面你也可以调出输入法),它可以在游戏
中
打开,也可以在控制台程序
中
打开,还可以在 瑞星保护下的QQ
中
打开,在杀软
中
也可以打开,这不就是我们要找的特性吗。那么,输入法 到底是什么呢?根据Windows的规定,输入法其实就是一个
DLL
,不过它是一个特殊的
DLL
, 它必须具有标准输入法程序所规定的那些接口,输入法是由输入法管理器(imm32.
dll
)控 制的,输入法管理器又是由user32.
dll
控制的。输入法在系统目录是以IME为扩展名的文件 ,当在应用程序
中
激活某个输入法时,输入法管理器就会在那个应用程序的
进程
中
加载对应 的IME文件,注意,加载IME文件跟加载普通的
DLL
并没有本质区别,所以,可以认为,输入 法其实就是
注入
到应用程序
中
的一个
DLL
文件,并且,这种“
注入
”是不会被杀软和游戏NP 拦截的(至少目前是)。现在,我们
已经
有了一个
注入
DLL
的另类方法,那就是利用输入法 。具体流程是这样,首先制作一个标准输入法文件,但是这个输入法并不完成文字输入工作 ,它的唯一任务就是用来
注入
DLL
,所以称为“服务输入法”,然后,制作一个控制程序, 来控制服务输入法,当然最后还需要一个用于
注入
的目标
DLL
,这样一共就有3个文件。开始 工作后,控制程序首先将服务输入法
安装
到系统
中
,然后传递几个参数给服务输入法,参数
中
包括了需要
注入
的
DLL
文件的名称和路径,然后,控制程序将服务输入法设置为系统的默 认输入法,这样新的程序一打开,服务输入法就会
注入
那个程序。当然,在服务输入法
安装
之前打开的程序不会被
注入
,这时需要向系统
中
的所有窗口POST一条 WM_INPUTLANGCHANGEREQUEST消息,该消息可以在指定窗口
中
后台激活服务输入法,这样, 系统
中
所有拥有窗口的
进程
就都被我们的服务输入法
注入
了。服务输入法
注入
程序之后,就 会根据控制程序传递过来的参数加载目标
DLL
,这样目标
DLL
也就随着服务输入法一同
注入
到 目标程序
中
了。注意服务输入法是控制程序用WM_INPUTLANGCHANGEREQUEST消息在所有窗口
中
自动激活的,如果某个窗口自动激活失败,你就需要在那个窗口
中
手工切换到服务输入法 ,这样才能
注入
进去了。至于
注入
以后,你就可以在窗口
中
切换到别的输入法,这并不会影 响
已经
注入
进去的
DLL
。我将这一套功能制作成一个完整的示例,你可以在以下地址下载: http://www.pen88.com/download/ime
hook
.rar 压缩包
中
的第6个和第8个文件夹演示了此 功能并包含所有源代码。其
中
文件ime
dll
host09.
dll
就是服务输入法,运行时会被
安装
到系 统
中
,控制程序退出时会自动卸载该输入法,这样用户就不太容易察觉,你还可以重新编译 该输入法,将名称改为“
中
文(
中
国)”,这样隐蔽性更好。文件hxw
dll
wx.
dll
是演示用的 目标
DLL
,你可以替换成自己的
DLL
,然后那个exe文件就是控制程序了。输入法 ime
dll
host09.
dll
在运行时会被复制到系统目录并更名为ime
dll
host09.ime,它导出了2个 函数用于控制。在VB
中
的声明为: Public Declare Function IMESetPubString Lib "ime
dll
host09.ime" (ByVal Run
DLL
Str As String, ByVal Unload
Dll
As Long, ByVal loadNextIme As Long, ByVal
Dll
Data1 As Long, ByVal
Dll
Data2 As Long, ByVal
Dll
Data3 As Long) As Long Public Declare Function IMEClearPubString Lib "ime
dll
host09.ime" () As Long 其
中
IMESetPubString用于向输入法传递要
注入
的
DLL
等参数。Run
DLL
Str,要
注入
的
DLL
命令 和完整路径。Unload
Dll
,当输入法退出时,是否同时卸载目标
DLL
0-是,1-否。 loadNextIme,当切换至该服务输入法时,是否直接切换到下一个输入法(这样服务输入法 就好像被跳过了,可最小限度影响用户的输入法顺序) 0-否,1-是。
Dll
Data1,
Dll
Data2 ,
Dll
Data3是传递给目标
DLL
的回调函数(函数名称必须为Run
Dll
HostCallBack)的参数, 你可以在目标
DLL
中
导出一个函数,名称为Run
Dll
HostCallBack,这样当输入法
注入
时会调 用目标
DLL
的该回调函数并向其传递这3个参数。函数原型为(VC): DWORD Run
Dll
HostCallBack(DWORD calldata1, DWORD calldata2,DWORD calldata3); IMEClearPubString函数用于清除输入法的配置,清除后,输入法将停止在新的程序
中
注入
目标
DLL
,但已
注入
的
DLL
不会卸载。 好了,利用输入法来
注入
DLL
基本上就是这样了,详细的用法大家可以看压缩包
中
的第8个文 件夹,其
中
服务输入法是VC写的,控制程序是VB的,代码都是有注释的。测试发现该方法能 过目前所有杀软,也能
注入
冰刃。当然缺点还是有的,就是目标程序如果不接受输入法那就 没办法了,但是现在一般的游戏都不会禁止玩家在里面打字吧,而且杀软也不能禁止用户输 入汉字吧,哈哈,所以通用性应该还是蛮好的。 最后,我再介绍另一个
注入
DLL
的方法,估计也很少被用到。是利用一个未公开函数 RegisterUserApi
Hook
,可以在网上搜索关键词“RegisterUserApi
Hook
”,查到有人在 Windows 2003下测试成功,但是我在Windows XP测试却失败。后来终于找到了失效的原因。 RegisterUserApi
Hook
函数可以在系统
中
注册一个全局
钩子
,你需要在
钩子
中
指定一个
DLL
和 一个回调函数,然后,所有加载了user32.
dll
的程序就都会在启动时加载你指定的这个
DLL
。用这个函数来
注入
DLL
也是很不错的。但是测试发现它的
注入
能力似乎赶不上上面提到的 利用输入法来
注入
的办法,可以
注入
一般的程序和某些安全程序,但是对冰刃无效。而且它 有一个限制,就是系统
中
只能同时存在一个这样的
钩子
。实际上这个
钩子
平时是被系统
中
的 Themes服务占用了,Themes服务正是利用这个
钩子
HOOK
了绘制窗口的相关API,所以才让所 有程序窗口变成XP主题样式的。所以我们要用这个
钩子
的话,必须先关闭Themes服务,这样 在XP下也可以用了,但是这样系统就变成Windows 2000的样式了 -_-| RegisterUserApi
Hook
函数的VB声明如下: Public Declare Function RegisterUserApi
Hook
XP Lib "user32" Alias "RegisterUserApi
Hook
" (ByVal hInstance As Long, ByVal fnUserApis As Long) As Long Public Declare Function RegisterUserApi
Hook
2003 Lib "user32" Alias "RegisterUserApi
Hook
" (pRegInfo As
Hook
APIRegInfo2003) As Long 可以看到,在XP和2003下这个函数的参数是不一样的。关于此函数的示例代码,请参见压缩 包
中
的第5个文件夹。 最后的最后,再介绍一个未公开函数InitializeLpk
Hook
s,这个函数在网上能找到的资料更 少,只有一个声明而已。但是它名称
中
最后那个“
Hook
s”误导了我,我以为又是一个可以 用来
注入
DLL
的不错函数,用OD反出来一看,原来只是个局部
HOOK
而已。虽然没太大用,还 是一并写上吧,也许谁用得着呢。InitializeLpk
Hook
s顾名思义就是
HOOK
LPK的,Windows 有个lpk.
dll
,就是支持多语言包的那么个功能。测试发现好多程序在TextOut之前似乎是要 调用lpk.
dll
里面的相关函数的,可能是支持多语言的程序就需要用这个来判断到底要显示 那种语言吧。而InitializeLpk
Hook
s,就是用来
HOOK
lpk.
dll
里面的4个函数的,这4个函数 是LpkTabbedTextOut,LpkPSMTextOut,LpkDrawTextEx,LpkEditControl。我们先打开VB, 在窗体
中
加入以下代码吧: Private Sub Form_Load()
DLL
hwnd = LoadLibrary("lpk.
dll
") '加载
DLL
DLL
FunDre = GetProcAddress(
DLL
hwnd, "LpkDrawTextEx") '获取回调函数地址 Lpk
Hook
sInfo.lp
Hook
Proc_LpkTabbedTextOut = 0 Lpk
Hook
sInfo.lp
Hook
Proc_LpkPSMTextOut = 0 Lpk
Hook
sInfo.lp
Hook
Proc_LpkDrawTextEx = GetLocalProcAdress(AddressOf
Hook
Proc1) '设置要
HOOK
的LPK函数 Lpk
Hook
sInfo.lp
Hook
Proc_LpkEditControl = 0 InitializeLpk
Hook
s Lpk
Hook
sInfo End Sub Private Sub Form_Unload(Cancel As Integer) Lpk
Hook
sInfo.lp
Hook
Proc_LpkTabbedTextOut = 0 Lpk
Hook
sInfo.lp
Hook
Proc_LpkPSMTextOut = 0 Lpk
Hook
sInfo.lp
Hook
Proc_LpkDrawTextEx =
DLL
FunDre Lpk
Hook
sInfo.lp
Hook
Proc_LpkEditControl = 0 InitializeLpk
Hook
s Lpk
Hook
sInfo FreeLibrary
DLL
hwnd End Sub 然后新建一个模块,在模块
中
加入以下代码: Public Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long Public Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long Public Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long ' ----------------未公开函数-------------------------------------- Public Declare Sub InitializeLpk
Hook
s Lib "user32" (lpProcType As Any) Type Lpk
Hook
sSetting lp
Hook
Proc_LpkTabbedTextOut As Long lp
Hook
Proc_LpkPSMTextOut As Long lp
Hook
Proc_LpkDrawTextEx As Long lp
Hook
Proc_LpkEditControl As Long End Type ' ------------------------------- Public
DLL
hwnd As Long,
DLL
FunDre As Long Public Lpk
Hook
sInfo As Lpk
Hook
sSetting Public Function GetLocalProcAdress(ByVal lpProc As Long) As Long GetLocalProcAdress = lpProc End Function Function
Hook
Proc1(ByVal a1 As Long, ByVal a2 As Long, ByVal a3 As Long, ByVal a4 As Long, ByVal a5 As Long, ByVal a6 As Long, ByVal a7 As Long, ByVal a8 As Long, ByVal a9 As Long, ByVal a10 As Long) As Long
Hook
Proc1 = 0 End Function 运行一下看看,是不是窗体
中
标题栏和按钮上的文字都没有了,因为我们把函数 LpkDrawTextEx替换成自己的函数
Hook
Proc1了。这个函数有10个参数,其
中
几个好像是字符 串指针,似乎可以用来截获窗体要显示的文字,然后改成另一种语言的文字,我猜想,也许 就是这个用途吧。哈哈,纯属猜测。以上就是函数InitializeLpk
Hook
s的用法了。 以上就是全部。 本文所有示例代码的下载地址是: http://www.pen88.com/download/ime
hook
.rar 我的QQ511795070,欢迎交流。
进程
注入
的pdf Nick harbour
钩子
dll
进程
注入
hook
共享内存 loadlibrary Nick harbour
补丁模块(带源码)InlinePatch,
Hook
,内存
DLL
注入
等等
下面这个模块是我使用易语言时写补丁最常用的一个模块(当然很多也是抄的),一开始我觉得bug肯定会很多,放出去肯定又会坑很多人,后来我发现坑坑更健康,当你明白一个东西的优缺点之后,你才会更好的选择你所需要的。所以呢,现在模块开源了,希望对某些朋友有参考意义或者说使用价值吧。 声明:大家使用过程
中
发现任何
问题
都不要来问我,请自己想办法解决。我现在
已经
完全放弃易语言了,改用VC++了。 以下是全部接口: 模块名称:sunflover.ec 作者:by sunflover 版本:2015.2 自己收集的一些常用函数,方便写补丁。 @备注: 自己收集的一些常用函数 ------------------------------ .版本 2 .子程序 Ansi2Unicode, 字节集, 公开, 将Ansi码转换为Unicode码 (返回转换后的字节集) .参数 Ansi, 文本型, , 欲转换的Ansi文本 .子程序 AntiDebug, 逻辑型, 公开, 这个没啥用,效果差;可放在程序运行的第一个函数 被调试返回真 .子程序 AntiODMenu, 逻辑型, 公开, 这个效果较好,推荐用这个;找到OD相关句柄返回真, 此函数枚举窗口通过菜单名来 判定是否OD窗口。 .子程序 AntiStrongOD, 逻辑型, 公开, 这个效果还行,检测带有驱动的 OD调试器 此函数专门对付 StrongOD 插件 .参数 判断OD运行状态, 逻辑型, 可空, 此参数作用: 发现OD驱动时 —是否检测OD运行状态作为返回值基础 ,默认判断运行状态 .子程序 Bin2Dec, 整数型, 公开, 字节集到整数 .参数 Bin, 字节集 .子程序 Bin2Hex, 文本型, 公开, 字节集到十六进制文本 .参数 字节集, 字节集 .子程序 Bin2Hex1, 文本型, 公开, 文本型->文本型 .参数 Bin, 文本型 .子程序 BinXor, 字节集, 公开, 字节集异或 .参数 需异或的字节集, 字节集, , 返回的字节集 .参数 参与异或的字节集, 字节集 .子程序 Dec2Hex, 文本型, 公开, 十到十六 .参数 十进制转换数据, 长整数型 .子程序 GetAPIAddress, 整数型, 公开, 失败返回0 .参数 模块名, 文本型, , 如"user32.
dll
","kernel32.
dll
" .参数 API, 文本型, , 如“CreateWindowExA” .子程序 Hex2Bin, 字节集, 公开, 十六进制文本到字节集 .参数 原文, 文本型 .子程序 Hex2Bin1, 文本型, 公开, 文本型->文本型 .参数 Hex, 文本型 .子程序 Hex2Dec, 整数型, 公开, 十六到十 .参数 十六进制转换数据, 文本型 .子程序 Inject
Dll
, 逻辑型, 公开, 向目标
进程
中
注入
一个指定
Dll
模块文件;
注入
成功返回 true,
注入
失败则返回 false,CreateRemoteThread法 .参数
进程
ID, 整数型, ,
进程
PID .参数
DLL
文件名, 文本型, , 欲
注入
的
DLL
名称 .子程序 Inject
DLL
1, 逻辑型, 公开, SuspendThread,shellcode,SetEip .参数 PID, 整数型 .参数
DLL
路径, 文本型 .子程序 Inject
DLL
2, 逻辑型, 公开, code cave,与Inject
DLL
1同 .参数
进程
ID, 整数型 .参数
DLL
文件名, 文本型 .子程序 inline_patch, 逻辑型, 公开, 失败返回假,成功返回真;适合patch尚未运行的加壳或不加壳的可执行文件 .参数 文件名, 文本型, , 文件全路径 .参数 模块名, 文本型, , 如"user32.
dll
" .参数 API, 文本型, , 如“CreateWindowExA” .参数 地址, 整数型, , 如Hex2Dec (“00401000”) .参数 数据, 字节集, , 如 Hex2Bin (“90909090”) .子程序 inline_patch_Pro, 逻辑型, 公开, 失败返回假,成功返回真;适合patch尚未运行的加壳不加壳的可执行文件,需要补丁的数据较多时建议使用这个,在子程序
中
打补丁 .参数 文件名, 文本型, , 文件全路径 .参数 模块名, 文本型, , 如"user32.
dll
" .参数 API, 文本型, , 如“CreateWindowExA” .参数 子程序指针, 子程序指针, , 如&子程序1 .子程序 inline_patch_Pro1, 逻辑型, 公开, 失败返回假,成功返回真;适合patch尚未运行的加壳或不加壳的可执行文件,解码时机判断是选用VirtualProtect;如果壳检测到了,自行换用inline_patch或inline_patch_Pro .参数 文件名, 文本型, , 文件全路径 .参数 子程序指针, 子程序指针, , 如&子程序1 .参数 地址, 整数型, 可空, 如Hex2Dec (“00401000”),用来判断是否解码完成;如果没壳,就空着 .子程序 inline_patch1, 逻辑型, 公开, patch尚未运行的,没加壳的程序,并运行它 .参数 文件名, 文本型, , 文件全路径 .参数 地址, 整数型, , 如Hex2Dec (“00401000”) .参数 数据, 字节集, , 如 Hex2Bin (“90909090”) .子程序 InlinePatch, 逻辑型, 公开, 失败返回假,成功返回真;适合patch尚未运行的加壳不加壳的可执行文件,需要补丁的数据较多时建议使用这个,在子程序
中
打补丁 .参数 文件名, 文本型, , 文件全路径,如"D:\test.exe" .参数 运行参数, 文本型, 可空, 可空,没有参数则留空,大多数情况没有参数;有参数时填写,如"-s" .参数 模块名, 文本型, , 如"user32.
dll
" .参数 API, 文本型, , 如“CreateWindowExA” .参数 API
中
断次数, 整数型, 可空, 可空,有些时候需要计次,根据需要填写;一般留空即可,留空表示
中
断第一次,就开始补丁 .参数 补丁子程序, 子程序指针, , 如&子程序1 .参数 寄存器结构体, context_, 参考 可空, 可空,CONTEXT,返回寄存器结构体,方便写补丁函数;这个属于高级功能,看不懂的话就留空吧 .参数
进程
信息结构体, PROCESS_INFORMATION, 参考 可空, 可空,PROCESS_INFORMATION,返回
进程
信息结构体,方便写补丁函数;这个属于高级功能,看不懂的话就留空吧 .子程序 OpenProcessPro, 整数型, 公开, 返回句柄权限是完全访问 .参数 PID, 整数型 .子程序 OpenThreadPro, 整数型, 公开, 返回句柄权限是完全访问 .参数
进程
ID, 整数型 .子程序 Unicode2Ansi, 文本型, 公开, 将Unicode码转换为Ansi码 (返回转换后的文本) .参数 Unicode, 字节集, , 欲转换的Unicode字节集 .子程序 UnInject
DLL
1, 逻辑型, 公开, SuspendThread,shellcode,SetEip .参数 PID, 整数型 .参数
DLL
路径, 文本型 .子程序 UnInject
DLL
2, 逻辑型, 公开, 远程时钟卸载
dll
.参数 参数_窗口句柄, 整数型, , FindWindow(字符 (0),“计算器”) .参数 参数_
DLL
路径, 文本型, , '可以是
DLL
全路径也可以只是
DLL
名称 .子程序 超级延时, , 公开, 高精度延时,cpu占用低,窗口不卡死,一次最大可延时几年 (无返回值) .参数 延时间隔, 整数型, , 1000微秒 = 1毫秒 ; 1000毫秒 = 1秒 .参数 延时单位, 整数型, 可空, 可空:毫秒 0 毫秒 1 微秒 2 秒 3 分 4 小时 5 天 .子程序 打开保存文件对话框, 文本型, 公开, 未提示 是否有重复的文件存在 自己注意一下 .参数 窗口句柄, 整数型, 可空, 调用处窗口句柄 .参数 窗口标题, 文本型, 可空, 对话框窗口标题 .参数 过滤器, 文本型, 可空, 格式:“MP3文件(*.mp3)|*.mp3|媒体文件(*.mpg)|*.mpg” .参数 初始路径, 文本型, 可空, 可以被省略。如果本参数被省略,默认从“我的文档”开始。否则,请给出盘符,如“d:” .子程序 打开多文件对话框, 文本型, 公开, 如果多选文件,返回文件路径以“;”(半角分号)分隔。失败或取消返回空文本。 .参数 窗口句柄, 整数型, 可空, 调用处窗口句柄 .参数 窗口标题, 文本型, 可空, 对话框窗口标题 .参数 过滤器, 文本型, 可空, 格式:“MP3文件(*.mp3)|*.mp3|媒体文件(*.mpg)|*.mpg” .参数 初始路径, 文本型, 可空, 可以被省略。如果本参数被省略,默认从“我的文档”开始。否则,请给出盘符,如“d:” .参数 窗口风格, 整数型, 可空, 可以被省略。如果本参数被省略,默认为 0 。位置值从 0 开始。从0-11之间,可以设置多种窗口风格。0.工具栏、只读选择框-未选
中
;1.工具栏、只读选择框-选
中
;2.工具栏;3.工具栏、只读选择框-未选
中
,帮助按钮;4.工具栏、只读选择框-选
中
,帮助按钮;5.工具栏,帮助按钮;6.普通风格、只读选择框-未选
中
;7.普通风格、只读选择框-选
中
;8.普通风格;9.普通风格、只读选择框-未选
中
,帮助按钮;10.普通风格、只读选择框-选
中
,帮助按钮;11.普通风格、帮助按钮。 .子程序 读内存字节集, 字节集, 公开, 从内存
中
读取字节集数据(返回字节集,失败返回0字节长度的空字节集) .参数
进程
ID, 整数型, ,
进程
ID .参数 地址, 整数型, , 内存地址 .参数 长度, 整数型, , 欲读取内存数据的长度 .子程序 复制文件夹, 逻辑型, 公开, 可复制文件,也可复制目录。成功返回真,失败返回假。 .参数 被复制的文件或目录, 文本型 .参数 复制到的位置, 文本型 .子程序 恢复
进程
, 逻辑型, 公开 .参数 PID, 整数型 .子程序 结束
进程
, 逻辑型, 公开 .参数
进程
ID, 整数型 .子程序
进程
取ID, 整数型, 公开, 取指定
进程
的
进程
ID(返回第一个
进程
ID,失败返回空信息) .参数
进程
名, 文本型, , 程序
进程
名(不区分大小写!) .子程序
进程
是否存在1, 逻辑型, 公开 .参数
进程
ID, 整数型 .子程序
进程
是否存在2, 逻辑型, 公开 .参数
进程
名, 文本型 .子程序 蓝屏, , 公开, 惩罚破解者函数 。 在确定当前程序被调试后 可使用此函数让系统蓝屏。 慎重使用! .子程序 内存补丁, 逻辑型, 公开, 根据
进程
名补丁内存,patch
已经
运行的可执行文件 .参数
进程
名, 文本型, , '完整的文件名,注意大小写 .参数 地址, 文本型, , 需patch地址,如“00401000” .参数 代码, 文本型, , 被替换的代码,如“90909090” .子程序 内存补丁1, 逻辑型, 公开, 根据
进程
ID补丁内存,patch
已经
运行的可执行文件 .参数
进程
ID, 整数型, , 要补丁的
进程
ID .参数 地址, 文本型, , 需patch地址,如“00401000” .参数 代码, 文本型, , 被替换的代码,如“90909090” .子程序 内存搜索, 整数型, 公开, 某些情况,需提升权限(返回结果数目,失败返回0),返回搜索到的数目 .参数
进程
ID, 整数型, ,
进程
ID .参数 搜索内容, 字节集, , 欲搜索的内容 其他类型-需自行转换为字节集类型 .参数 结果数组, 整数型, 参考 数组, 用来保存搜索的结果 .子程序 取汇编指令长度, 整数型, 公开, 返回指定
进程
指定地址处的首条汇编指令的长度。注:计算方法使用的是LDX32 .参数
进程
ID, 整数型, ,
进程
ID .参数 地址, 整数型, , 指令地址,如Hex2Dec("00401000") .子程序 取寄存器值, 文本型, 公开, 适用于明码读码,运行到地址处读真码;如 取寄存器值(文件名,"user32.
dll
",“CreateWindowExA”,Hex2Dec (“00401000”),“Eax”) .参数 文件名, 文本型, , 文件全路径 .参数 模块名, 文本型, , 如"user32.
dll
" .参数 API, 文本型, , 如“CreateWindowExA”,这里主要为了解码时机 .参数 地址, 整数型, , 如Hex2Dec (“00401000”) .参数 寄存器, 文本型, , 可选Dr0-Dr7,Eax,Ecx,Ebx,Edx,Ebp,Esp,Eip,Edi,Esi,SegGs,SegFs,SegEs,SegDs,SegCs,EFlags,Esp,SegSs .子程序 取
进程
主线程, 整数型, 公开, 失败返回0 .参数
进程
ID, 整数型 .子程序 取路径目录, 文本型, 公开, 返回一个文件所在目录,如"C:\Program Files\WinRAR\WinRAR.exe",返回"C:\Program Files\WinRAR" .参数 路径, 文本型, , 如"C:\Program Files\WinRAR\WinRAR.exe" .子程序 取路径文件名, 文本型, 公开, 根据文件路径获取文件名 .参数 路径, 文本型, , 文件完整路径 .子程序 取线程起始地址, 整数型, 公开, 失败返回0 .参数 参数_dwThreadId, 整数型 .子程序 去除空格, 文本型, 公开 .参数 文本, 文本型 .子程序 设置颜色对话框, 逻辑型, 公开, 例如:如果真 (设置颜色对话框 (取窗口句柄 (), j));编辑框1.文本颜色 = 到整数 (j)。 .参数 窗口句柄, 整数型 .参数 返回_颜色, 文本型, , 返回的颜色~~需要传回整数 .子程序 申请内存Pro, 整数型, 公开, 成功返回申请的首地址,失败返回0;申请的内存可读可写可执行 .参数
进程
ID, 整数型, , .参数 申请内存大小, 整数型 .子程序 释放内存Pro, 逻辑型, 公开 .参数
进程
ID, 整数型, , .参数 内存地址, 整数型 .子程序 特征码模糊搜索, 整数型, 公开, 最多支持三段通配符如“68 00 00 00 40 ?? ?? ?? ?? ?? ?? ?? ?? 50 E8 ?? ?? ?? ?? 12 34 ?? ?? ?? ?? 85 69” .参数
进程
ID, 整数型, ,
进程
ID .参数 特征码, 文本型, , 十六进制文本,如“68 00 00 00 40 ?? ?? ?? ?? ?? ?? ?? ?? 50 E8” .参数 结果数组, 整数型, 参考 数组, 用来保存搜索的结果 .参数 偏移, 整数型, 可空, 默认为0 .参数 起始地址, 文本型, 可空, 默认为“00400000” .参数 结束地址, 文本型, 可空, 默认为“00800000” .子程序 提升
进程
权限, 逻辑型, 公开 .参数 目标
进程
, 整数型, 可空 .参数 权限类别, 文本型, 可空, 默认为“SeDebugPrivilege”;可选“SeDebugPrivilege”,“SeShutdownPrivilege”,“SeRestorePrivilege”,“SeBackupPrivilege” .子程序 写内存字节集, 逻辑型, 公开, 往内存
中
写入字节集数据(成功返回真,失败返回假);注:内部有VirtualProtectEx处理 .参数
进程
ID, 整数型, ,
进程
ID .参数 地址, 整数型, , 内存地址 .参数 数据, 字节集, , 写入数据 如果为其它数据类型,可以用 到字节集() 将数据转换为字节集 .参数 写入长度, 整数型, 可空, 默认为全部数据,(参考: 1字节型 2短整数型 4长整数型,小数型,指针 8长整数型,双精度小数型,日期时间型) .子程序 移动文件夹, 逻辑型, 公开, 可移动文件,也可移动目录。成功返回真,失败返回假。 .参数 被移动的文件或目录, 文本型 .参数 移动到的位置, 文本型 .子程序 隐藏
进程
, 逻辑型, 公开, hide.
dll
,会被误报,大家看着处理 .参数
进程
ID, 整数型 .子程序 暂停
进程
, 逻辑型, 公开 .参数 PID, 整数型 .子程序 终止
进程
Pro, , 公开, 终止
进程
,终止所有指定
进程
.参数
进程
名, 文本型, , 程序
进程
名(不区分大小写!) .子程序 终止线程, 逻辑型, 公开, 成功返回真 失败返回假 .参数 参数_线程ID, 整数型 .数据类型 context_, 公开, 公开 .成员 ContextFlags, 整数型 .成员 Dr0, 整数型 .成员 Dr1, 整数型 .成员 Dr2, 整数型 .成员 Dr3, 整数型 .成员 Dr4, 整数型 .成员 Dr5, 整数型 .成员 Dr6, 整数型 .成员 Dr7, 整数型 .成员 ControlWord, 整数型 .成员 StatusWord, 整数型 .成员 TagWord, 整数型 .成员 ErrorOffset, 整数型 .成员 ErrorSelector, 整数型 .成员 DataOffset, 整数型 .成员 DataSelector, 整数型 .成员 RegisterArea, 字节型, , "72" .成员 Cr0NpxState, 整数型 .成员 SegGs, 整数型 .成员 SegFs, 整数型 .成员 SegEs, 整数型 .成员 SegDs, 整数型 .成员 Edi, 整数型 .成员 Esi, 整数型 .成员 Ebx, 整数型 .成员 Edx, 整数型 .成员 Ecx, 整数型 .成员 Eax, 整数型 .成员 Ebp, 整数型 .成员 Eip, 整数型 .成员 SegCs, 整数型 .成员 EFlags, 整数型 .成员 Esp, 整数型 .成员 SegSs, 整数型 .成员 reserve, 字节型, , "512" .数据类型 FLOATING_SAVE_AREA, 公开 .成员 ControlWord, 整数型 .成员 StatusWord, 整数型 .成员 TagWord, 整数型 .成员 ErrorOffset, 整数型 .成员 ErrorSelector, 整数型 .成员 DataOffset, 整数型, , , ; .成员 DataSelector, 整数型 .成员 RegisterArea, 字节型, , "80" .成员 Cr0NpxState, 整数型 .数据类型 LuID, 公开 .成员 lowpart, 整数型 .成员 highpart, 整数型 .数据类型 MEMORY_BASIC_INFORMATION, 公开 .成员 BaseAddress, 整数型 .成员 AllocationBase, 整数型 .成员 AllocattionProtect, 整数型 .成员 RegionSize, 整数型 .成员 State, 整数型 .成员 Protect, 整数型 .成员 Type, 整数型 .数据类型 MODULEENTRY32, 公开, MODULEENTRY32 .成员 dwSize, 整数型, , , dwSize .成员 th32ModuleID, 整数型, , , th32ModuleID .成员 th32ProcessID, 整数型, , , th32ProcessID .成员 GlblcntUsage, 整数型, , , GlblcntUsage .成员 ProccntUsage, 整数型, , , ProccntUsage .成员 modBaseAddr, 整数型, , , modBaseAddr .成员 modBaseSize, 整数型, , , modBaseSize .成员 hModule, 整数型, , , hModule .成员 szModule, 字节型, , "256", 模块名称 .成员 szExePath, 字节型, , "260", 文件路径 .数据类型 PROCESS_BASIC_INFORMATION, 公开 .成员 ExitStatus, 整数型 .成员 PebBaseAddress, 整数型 .成员 AffinityMask, 整数型 .成员 BasePriority, 整数型 .成员 UniqueProcessId, 整数型 .成员 InheritedFromUniqueProcessId, 整数型 .数据类型 PROCESS_INFORMATION, 公开 .成员 hProcess, 整数型 .成员 hThread, 整数型 .成员 dwProcessId, 整数型 .成员 dwThreadId, 整数型 .数据类型 SECURITY_ATTRIBUTES, 公开, , SECURITY_ATTRIBUTES .成员 nLength, 整数型 .成员 lpSecurityDescriptor, 整数型 .成员 bInheritHandle, 整数型 .数据类型 SHFILEOPSTRUCT, 公开 .成员 句柄, 整数型 .成员 wFunc, 整数型 .成员 pFrom, 字节集 .成员 pTo, 字节集 .成员 fFlags, 短整数型 .成员 fAnyOperationsAborted, 整数型 .成员 hNameMappings, 整数型 .成员 lpszProgressTitle, 文本型 .数据类型 STARTUPINFO, 公开 .成员 cb, 整数型 .成员 lpReserved, 文本型 .成员 lpDesktop, 文本型 .成员 lpTitle, 文本型 .成员 dwX, 整数型 .成员 dwY, 整数型 .成员 dwXSize, 整数型 .成员 dwYSize, 整数型 .成员 dwXCountChars, 整数型 .成员 dwYCountChars, 整数型 .成员 dwFillAttribute, 整数型 .成员 dwFlags, 整数型 .成员 wShowWindow, 短整数型 .成员 cbReserved2, 短整数型 .成员 lpReserved2, 整数型 .成员 hStdInput, 整数型 .成员 hStdOutput, 整数型 .成员 hStdError, 整数型 .数据类型 STARTUPINFO1, 公开 .成员 cb, 整数型 .成员 lpReserved, 整数型 .成员 lpDesktop, 整数型 .成员 lpTitle, 整数型 .成员 dwX, 整数型 .成员 dwY, 整数型 .成员 dwXSize, 整数型 .成员 dwYSize, 整数型 .成员 dwXCountChars, 整数型 .成员 dwYCountChars, 整数型 .成员 dwFillAttribute, 整数型 .成员 dwFlags, 整数型 .成员 wShowWindow, 短整数型 .成员 cbReserved2, 短整数型 .成员 lpReserved2, 字节型 .成员 hStdInput, 整数型 .成员 hStdOutput, 整数型 .成员 hStdError, 整数型 .数据类型 THREADENTRY32, 公开 .成员 dwsize, 整数型 .成员 cntUsage, 整数型 .成员 th32ThreadID, 整数型 .成员 th32OwnerProcessID, 整数型 .成员 tpBasePri, 长整数型 .成员 tpDeltaPri, 长整数型 .成员 dwFlags, 整数型 .数据类型 窗口句柄类, 公开 .成员 句柄, 整数型 .成员 标题, 文本型 .成员 类名, 文本型 .数据类型 打开文件名, 公开, OPENFILENAME .成员 结构大小, 整数型, , , lStructSize .成员 窗口句柄, 整数型, , , hwndOwner .成员 实例句柄, 整数型, , , hInstance .成员 过滤器, 字节集, , , lpstrFilter .成员 自定义过滤器, 文本型, , , lpstrCustomFilter .成员 自定义过滤器最大长度, 整数型, , , nMaxCustFilter .成员 过滤器索引, 整数型, , , nFilterIndex .成员 文件名, 字节集, , , lpstrFile .成员 文件名最大长度, 整数型, , , nMaxFile .成员 文件标题, 文本型, , , lpstrFileTitle .成员 文件标题最大长度, 整数型, , , nMaxFileTitle .成员 初始目录, 文本型, , , lpstrInitialDir .成员 标题, 文本型, , , lpstrTitle .成员 标志, 整数型, , , flags .成员 文件偏移量, 整数型, , , nFileOffset .成员 文件扩展名, 整数型, , , nFileExtension .成员 默认扩展名, 文本型, , , lpstrDefExt .成员 自定义数据, 整数型, , , lCustData .成员 回调函数地址, 整数型, , , lpfn
Hook
.成员 模板名, 文本型, , , lpTemplateName .数据类型 函数信息, 公开 .成员 模块索引, 整数型 .成员 ThunkRav, 文本型 .成员 Thunk偏移, 文本型 .成员 Thunk值, 文本型 .成员 序数, 文本型 .成员 名称, 文本型 .数据类型 寄存器, 公开 .成员 标记, 整数型 .成员 dr0, 整数型 .成员 dr1, 整数型 .成员 dr2, 整数型 .成员 dr3, 整数型 .成员 dr6, 整数型 .成员 dr7, 整数型 .成员 FloatSave, FLOATING_SAVE_AREA .成员 seggs, 整数型 .成员 segfs, 整数型 .成员 seges, 整数型 .成员 segds, 整数型 .成员 edi, 整数型 .成员 esi, 整数型 .成员 ebx, 整数型 .成员 edx, 整数型 .成员 ecx, 整数型 .成员 eax, 整数型 .成员 ebp, 整数型 .成员 eip, 整数型 .成员 SegCs, 整数型 .成员 eflags, 整数型 .成员 esp, 整数型 .成员 SegSs, 整数型 .数据类型
进程
信息, 公开,
进程
信息 .成员 dwSize, 整数型 .成员 cntUsage, 整数型 .成员
进程
ID, 整数型 .成员 th32DefaultHeapID, 整数型 .成员 th32ModuleID, 整数型 .成员 cntThreads, 整数型 .成员 th32ParentProcessID, 整数型 .成员 pcPriClassBase, 整数型 .成员 dwFlags, 整数型 .成员
进程
名称, 字节型, , "256" .数据类型 逻辑字体, 公开, $(a)LOGFONT .成员 高度, 整数型, , , lfHeight .成员 宽度, 整数型, , , lfWidth .成员 控制摆, 整数型, , , lfEscapement .成员 定方位, 整数型, , , lfOrientation .成员 加粗, 整数型, , , lfWeight .成员 斜体, 字节型, , , lfItalic .成员 下划线, 字节型, , , lfUnderline .成员 删除线, 字节型, , , lfStrikeOut .成员 零碎工作组合, 字节型, , , lfCharSet .成员 出自精确, 字节型, , , lfOutPrecision .成员 修剪精确, 字节型, , , lfClipPrecision .成员 性质, 字节型, , , lfQuality .成员 间距, 字节型, , , lfPitchAndFamily .成员 字体名称, 字节型, , "32", 用LF_FACESIZE,lfFaceName? .数据类型 色盒, 公开 .成员 lStructsize, 整数型 .成员 hwndOwner, 整数型 .成员 hInstance, 整数型 .成员 rgbResult, 整数型 .成员 lpCustColors, 文本型, , , 可以指定16个数组,也可以不用指定,但无论用否,必须传址 .成员 flags, 整数型 .成员 lCustData, 整数型 .成员 lpfn
Hook
, 子程序指针 .成员 lpTemplateName, 文本型 .数据类型 设定执行文件信息, 公开, SHELLEXECUTEINFO .成员 结构大小, 整数型, , , cbSize .成员 标志, 整数型, , , fMask .成员 窗口句柄, 整数型, , , hwnd .成员 操作命令, 文本型, , , lpVerb .成员 文件名, 文本型, , , lpFile .成员 应用程序参数, 文本型, , , lpParameters .成员 目录, 文本型, , , lpDirectory .成员 显示标志, 整数型, , , nShow .成员 实例句柄, 整数型, , , hInstApp .成员 项目标识符列表结构指针, 整数型, , , lpIDList .成员 文件类别, 文本型, , , lpClass .成员 热键句柄, 整数型, , , hkeyClass .成员 热键, 整数型, , , dwHotKey .成员 图标句柄, 整数型, , , hIcon .成员
进程
句柄, 整数型, , , hProcess .数据类型 文件夹信息, 公开, BROWSEINFO .成员 窗口句柄, 整数型, , , hOwner .成员 根目录, 整数型, , , pidlRoot .成员 显示名称, 文本型, , , pszDisplayName .成员 标题, 文本型, , , lpszTitle .成员 标志, 整数型, , , ulFlags .成员 回调函数地址, 整数型, , , lpfn .成员 回调函数参数, 整数型, , , lParam .成员 图像索引, 整数型, , , iImage .数据类型 项目标识符列表, 公开, ITEMIDLIST .成员 结构大小, 整数型, , , cb .成员 标识符长度, 字节型, , "255", abID .数据类型 选择字体, 公开, CHOOSEFONT .成员 结构大小, 整数型, , , lStructSize .成员 窗口句柄, 整数型, , , hwndOwner,caller's window handle .成员 设备场景句柄, 整数型, , , hDC,printer DC/IC or NULL .成员 字体结构指针, 整数型, , , lpLogFont‘ptr. to a LOGFONT struct .成员 点大小, 整数型, , , iPointSize,10 * size in points of selected font .成员 标志, 整数型, , , flags,enum. type flags .成员 颜色值, 整数型, , , rgbColors,returned text color .成员 自定义数据, 整数型, , , lCustData,data passed to
hook
fn. .成员 回调函数地址, 整数型, , , lpfn
Hook
,ptr. to
hook
function .成员 模板名称, 文本型, , , lpTemplateName,custom template name .成员 实例句柄, 整数型, , , hInstance,instance handle of.EXE that contains cust. dlg. template .成员 字体风格, 文本型, , , lpszStyle,return the style field here must be LF_FACESIZE(32) or bigger .成员 字体类型, 短整数型, , , nFontType,same value reported to the EnumFonts,call back with the extra FONTTYPE_ bits added .成员 空白队列, 短整数型 .成员 最小尺寸, 整数型 .成员 最大尺寸, 整数型 .数据类型 字体信息, 公开 .成员 名称, 文本型 .成员 大小, 整数型 .成员 颜色, 整数型 .成员 类型, 整数型 .成员 斜体, 整数型 .成员 下划线, 整数型 .程序集 IAT
HOOK
类, , 公开 .子程序 APIAddr, 整数型, 公开, '此方法放在IAT
HOOK
后调用方可成功,失败返回0 .子程序 IAT
Hook
, 逻辑型, 公开, 完事后注意调用IATUn
Hook
.参数
进程
ID, 整数型, 可空, '为空表示自身
进程
.参数 模块名, 文本型, , 需加后缀,如“user32.
dll
” .参数 函数名, 文本型, , 注意大小写,如“MessageBoxA” .参数 新地址, 整数型, , 到整数 (&
Hook
CallBack) .子程序 IATUn
Hook
, 逻辑型, 公开, 与IAT
HOOK
参数完全相同 .参数
进程
ID, 整数型, 可空, 为空表示本
进程
.参数 模块名, 文本型, , 需加后缀,如“user32.
dll
” .参数 函数名, 文本型, , 注意大小写,如“MessageBoxA” .参数 地址, 整数型, , 与IAT
HOOK
最后一个参数相同 .程序集 PE类, , 公开, 获取可执行程序入口点,附加数据; .子程序 GetEntryPoint, 整数型, 公开, 获取的是OEP,即EP+imagebase .参数 全文件路径, 文本型, , 要处理的文件全路径 .子程序 overlay, 字节集, 公开, 获取PE文件的附加数据 .参数 全文件路径, 文本型, , 要处理的文件全路径 .程序集 超级解压类, , 公开, 调用7z解压文件,支持7z,zip,rar等压缩文件的带密码解压 .子程序 超级解压, 逻辑型, 公开, 解压压缩文件,支持rar,zip,7z等等压缩文件的解压,支持带密码解压 .参数 待解压文件, 文本型, , 欲解压的文件的全路径 .参数 解压到的目录, 文本型, , 欲解压到的路径 .参数 解压密码, 文本型, 可空, 解压所用密码,没有密码就不填 .程序集 汇编类, , 公开, 用于辅助生成shellcode,返回值都是字节集 .子程序 add_eax_char, 字节集, 公开, 占用3个字节,char值在0-127之间,返回汇编指令对应的字节集 .参数 char, 字节型, , add eax,1,参数为1,注意进制;16进制,请用Hex2Dec(Hex)转换 .子程序 add_eax_Num, 字节集, 公开, 占用5个字节,返回汇编指令对应的字节集 .参数 Num, 整数型, , add eax,8,参数为8,注意进制;16进制,请用Hex2Dec(Hex)转换 .子程序 add_esp_char, 字节集, 公开, 占用3个字节,char值在0-127之间,返回汇编指令对应的字节集 .参数 char, 字节型, , add esp,8,参数为8,注意进制;16进制,请用Hex2Dec(Hex)转换 .子程序 call, 字节集, 公开, 占用5个字节,call转换,返回汇编指令对应的字节集,此处为十进制,想用16进制,请自行转换;示例:call (Hex2Dec (“402000”), Hex2Dec (“401000”)) .参数 call到的地址, 整数型, , 00401000 call 00402000,参数为00402000 .参数 call所在的地址, 整数型, , 00401000 call 00402000,参数为00401000 .子程序 call_API, 字节集, 公开, 占用5个字节,如00401000 call MessageBoxA .参数 call所在地址, 整数型, , 自行转换,Hex2Dec("00401000") .参数 lpProcName, 文本型, , 如MessageBoxA .参数 hModule, 文本型, , 如user32.
dll
.子程序 call_API_FF15, 字节集, 公开, 占用6个字节,如00401000 call MessageBoxA .参数 lpProcName, 文本型, , 如MessageBoxA .参数 hModule, 文本型, , 如user32.
dll
.子程序 call_eax, 字节集, 公开, 占用2个字节,返回汇编指令对应的字节集 .子程序 call_FF15, 字节集, 公开, 占用6个字节,call转换,返回汇编指令对应的字节集,此处为十进制,想用16进制,请自行转换;示例:call (Hex2Dec (“402000”)) .参数 call到的地址, 整数型, , 00401000 call 00402000,参数为00402000 .子程序 jmp, 字节集, 公开, 占用5个字节,jmp转换,返回汇编指令对应的字节集,此处为十进制,想用16进制,请自行转换;jmp (Hex2Dec (“402000”), Hex2Dec (“401000”)) .参数 jmp_to, 整数型, , 00401000 jmp 00402000,参数为00402000 .参数 jmp_from, 整数型, , 00401000 jmp 00402000,参数为00401000 .子程序 jmp_FF25, 字节集, 公开, 占用6个字节,jmp转换,返回汇编指令对应的字节集,此处为十进制,想用16进制,请自行转换;jmp (Hex2Dec (“402000”)) .参数 jmp_to, 整数型, , 00401000 jmp 00402000,参数为00402000 .子程序 mov_eax_Num, 字节集, 公开, 占用5个字节,返回汇编指令对应的字节集 .参数 Num, 整数型, , 自己注意进制,mov eax,401000,参数为Hex2Dec(“401000”) .子程序 nop, 字节集, 公开, 占用个字节,返回汇编指令对应的字节集 .子程序 popad, 字节集, 公开, 占用1个字节,返回汇编指令对应的字节集 .子程序 popfd, 字节集, 公开, 占用1个字节,返回汇编指令对应的字节集 .子程序 push_char, 字节集, 公开, 占用2个字节,char值在0-127之间,返回汇编指令对应的字节集 .参数 char, 字节型, , push 8,参数为8,注意进制;16进制,请用Hex2Dec(Hex)转换 .子程序 push_eax, 字节集, 公开, 占用1个字节,返回汇编指令对应的字节集 .子程序 push_ebp, 字节集, 公开, 占用1个字节,返回汇编指令对应的字节集 .子程序 push_ebx, 字节集, 公开, 占用1个字节,返回汇编指令对应的字节集 .子程序 push_ecx, 字节集, 公开, 占用1个字节,返回汇编指令对应的字节集 .子程序 push_edi, 字节集, 公开, 占用1个字节,返回汇编指令对应的字节集 .子程序 push_edx, 字节集, 公开, 占用1个字节,返回汇编指令对应的字节集 .子程序 push_esi, 字节集, 公开, 占用1个字节,返回汇编指令对应的字节集 .子程序 push_esp, 字节集, 公开, 占用1个字节,返回汇编指令对应的字节集 .子程序 push_Num, 字节集, 公开, 占用5个字节,返回汇编指令对应的字节集 .参数 Num, 整数型, , push 401000,参数为Hex2Dec(401000),注意进制;16进制,请用Hex2Dec(Hex)转换 .子程序 pushad, 字节集, 公开, 占用1个字节,将通用寄存器的内容压入堆栈;返回汇编指令对应的字节集 .子程序 pushfd, 字节集, 公开, 占用1个字节,本指令可以把标志寄存器的内容保存到堆栈
中
去;返回汇编指令对应的字节集 .子程序 retn, 字节集, 公开, 占用1个字节,返回汇编指令对应的字节集 .子程序 retn_n, 字节集, 公开, 占用3个字节,返回汇编指令对应的字节集 .参数 n, 短整数型, , retn 3,参数填3,注意进制;16进制,请用Hex2Dec(Hex)转换 .子程序 xor_eax_eax, 字节集, 公开, 占用2个字节,返回汇编指令对应的字节集 .子程序 xor_ebx_ebx, 字节集, 公开, 占用2个字节,返回汇编指令对应的字节集 .子程序 xor_ecx_ecx, 字节集, 公开, 占用2个字节,返回汇编指令对应的字节集 .子程序 xor_edi_edi, 字节集, 公开, 占用2个字节,返回汇编指令对应的字节集 .子程序 xor_edx_edx, 字节集, 公开, 占用2个字节,返回汇编指令对应的字节集 .子程序 xor_esi_esi, 字节集, 公开, 占用2个字节,返回汇编指令对应的字节集 .程序集 内存
DLL
注入
类, , 公开, 可能还有点
问题
.子程序 取
DLL
函数地址, 整数型, 公开, 返回
已经
注入
到指定
进程
内的
DLL
的函数地址。失败返回0。 .参数
DLL
函数名, 文本型, , 区分大小写。 .子程序 是否已
注入
, 逻辑型, 公开, 已
注入
返回真,未
注入
返回假。 .子程序 卸载
DLL
, 逻辑型, 公开, 卸载
已经
注入
的内存
中
的
DLL
,成功返回真,失败返回假.(最好不要卸载,卸载的话被
注入
的
进程
很容易崩溃) .子程序 执行
DLL
函数, 整数型, 公开, 执行
已经
注入
到指定
进程
内的
DLL
的函数,成功返回所执行的函数的地址,失败返回0。 .参数
DLL
函数名, 文本型, , 区分大小写。 .参数 等待函数执行完毕, 逻辑型, 可空, 默认为假,为真则函数执行完毕后本函数才返回。 .参数 返回值, 整数型, 参考 可空, 如果上一个参数为真,则可提供一个变量保存被执行的
DLL
函数的返回值。 .参数 线程句柄, 整数型, 参考 可空, 可提供变量保存函数执行线程的句柄,不需要请留空.接收了句柄记得不用时要关闭. .参数 参数1, 整数型, 可空, 可提供给被执行函数最多10个参数(理论上支持无限个,自己看着改吧)不需要的请留空。 .参数 参数2, 整数型, 可空, 非整数型参数需传递变量的内存数据指针,该指针必须是在目标
进程
内的。 .参数 参数3, 整数型, 可空, 提供的参数请与所执行的函数的参数个数一致,否则被
注入
的
进程
绝对会崩溃! .参数 参数4, 整数型, 可空 .参数 参数5, 整数型, 可空 .参数 参数6, 整数型, 可空 .参数 参数7, 整数型, 可空 .参数 参数8, 整数型, 可空 .参数 参数9, 整数型, 可空 .参数 参数10, 整数型, 可空 .子程序
注入
DLL
, 整数型, 公开, 成功返回
DLL
的模块句柄,失败或已
注入
返回0。 .参数
进程
句柄, 整数型, , 句柄必须拥有对被
注入
进程
的完全操作权限。
注入
后如果没有其他用处可以关闭该句柄。 .参数
DLL
数据, 字节集 .程序集 取机器码类, , 公开, 获取硬件信息,硬盘等等 .子程序 取3段机器码, 文本型, 公开, 获取3段32位机器码,如1111111111-2222222222-3333333333 .参数 bios, 逻辑型, 可空, 填 假 表示此段全为0,可空,默认为真 .参数 HardDisk, 逻辑型, 可空, 填 假 表示此段全为0,可空,默认为真 .参数 MAC, 逻辑型, 可空, 填 假 表示此段全为0,可空,默认为真 .子程序 取4段机器码, 文本型, 公开, 获取4段23位机器码,如11111-22222-33333-44444 .参数 bios, 逻辑型, 可空, 填 假 表示此段全为0,可空,默认为真 .参数 HardDisk, 逻辑型, 可空, 填 假 表示此段全为0,可空,默认为真 .参数 Video, 逻辑型, 可空, 填 假 表示此段全为0,可空,默认为真 .参数 MAC, 逻辑型, 可空, 填 假 表示此段全为0,可空,默认为真 .
DLL
命令 _窗口是否可见, 整数型, "user32", "IsWindowVisible", 公开, 判断窗口是否可见 如窗口可见则返回TRUE(非零) .参数 窗口句柄, 整数型, , 要测试的那个窗口的句柄 .
DLL
命令 AdjustTokenPrivileges, 逻辑型, "advapi32.
dll
", "AdjustTokenPrivileges", 公开 .参数 TokenHandle, 整数型 .参数 DisableAllPrivileges, 整数型 .参数 NewState, , 传址 .参数 BufferLength, 整数型 .参数 PreviousState, , 传址 .参数 ReturnLength, 整数型, 传址 .
DLL
命令 API_IsDebuggerPresent, 整数型, "kernel32.
dll
", "IsDebuggerPresent", 公开 .
DLL
命令 CallNext
Hook
Ex, 整数型, "user32.
dll
", "CallNext
Hook
Ex", 公开 .参数 hhk, 整数型, ,
钩子
句柄 .参数 nCode, 整数型, ,
钩子
类型 .参数 wParam, 整数型 .参数 LPARAM, 整数型 .
DLL
命令 CloseHandle, 整数型, "kernel32.
dll
", "CloseHandle", 公开, 关闭一个内核对象。其
中
包括文件、文件映射、
进程
、线程、安全和同步对象等。涉及文件处理时,这个函数通常与vb的close命令相似。应尽可能的使用close,因为它支持vb的差错控制。注意这个函数使用的文件句柄与vb的文件编号是完全不同的 非零表示成功,零表示失败。会设置GetLastError .参数 对象句柄, 整数型, , 欲关闭的一个对象的句柄; .
DLL
命令 CreateFileA, 整数型, "kernel32.
dll
", "CreateFileA", 公开, , 成功返回文件句柄,失败返回0 .参数 打开文件名, 文本型, , lpFileName,要打开的文件的名字 .参数 访问权限, 整数型, , dwDesiredAccess,访问权限 .参数 共享方式, 整数型, , dwShareMode,共享方式 .参数 安全特性, SECURITY_ATTRIBUTES, 传址, lpSecurityAttributes,安全特性信息 .参数 创建方式, 整数型, , dwCreationDisposition,创建方式 .参数 文件属性, 整数型, , dwFlagsAndAttributes,参见相关帮助 .参数 从文件复制文件属性, 整数型, , hTemplateFile,参见相关帮助 .
DLL
命令 CreateProcess, 整数型, "kernel32.
dll
", "CreateProcessA", 公开, CreateProcess(编辑框1.内容, “”, 0, 0, 0, 4, 0, 取运行目录(), si, pi) .参数 lpApplicationName, 文本型 .参数 lpCommandLine, 文本型 .参数 lpProcessAttributes, 整数型 .参数 lpThreadAttributes, 整数型 .参数 bInheritHandles, 整数型 .参数 dwCreationFlags, 整数型, , 0正常,4挂起,3调试,6调试挂起 .参数 lpEnvironment, 整数型 .参数 lpCurrentDriectory, 文本型 .参数 lpStartupInfo, STARTUPINFO, 传址 .参数 lpProcessInformation, PROCESS_INFORMATION, 传址 .
DLL
命令 CreateRemoteThread, 整数型, "kernel32", "CreateRemoteThread", 公开, 在另一
进程
中
建立线索 .参数 hProcess, 整数型 .参数 lpThreadAttributes, 整数型 .参数 dwStackSize, 整数型 .参数 lpStartAddress, 整数型 .参数 lpParameter, 整数型 .参数 dwCreationFlags, 整数型 .参数 lpThreadId, 整数型, 传址 .
DLL
命令 CreateToolhelp32Snapshot, 整数型, "kernel32.
dll
", "CreateToolhelp32Snapshot", 公开, 返回快照后的句柄 .参数 快照标志, 整数型, ,
进程
=15,线程=4,
DLL
=8,堆= .参数
进程
标识符, 整数型, , lProcessID 欲照快照的
进程
标识符 .
DLL
命令 DuplicateHandle, 整数型, "kernel32", "DuplicateHandle", 公开, 复制对象句柄 .参数 hSourceProcessHandle, 整数型 .参数 hSourceHandle, 整数型 .参数 hTargetProcessHandle, 整数型 .参数 lpTargetHandle, 整数型, 传址 .参数 dwDesiredAccess, 整数型 .参数 bInheritHandle, 整数型 .参数 dwOptions, 整数型 .
DLL
命令 ExitProcess, 整数型, "kernel32.
dll
", "ExitProcess", 公开, , .参数
进程
句柄, 整数型, , 填0即可 .
DLL
命令 FindWindow, 整数型, "user32.
dll
", "FindWindowA", 公开, FindWindow,寻找窗口列表
中
第一个符合指定条件的顶级窗口 .参数 窗口类名, 文本型, , lpClassName,参见相关帮助,字符 (0) .参数 窗口文本, 文本型, , lpWindowName,参见相关帮助 .
DLL
命令 GetClassName, 整数型, "user32.
dll
", "GetClassNameA", 公开, 为指定的窗口取得类名 以字节数表示的类名长度;排除最后的空
中
止字符。零表示出错。会设置GetLastError .参数 句柄, 整数型, , 欲获得类名的那个窗口的句柄 .参数 文本, 文本型, , 随同类名载入的缓冲区。预先至少必须分配nMaxCount+1个字符 .参数 文本长度, 整数型, , 由lpClassName提供的缓冲区长度; .
DLL
命令 GetCurrentProcess, 整数型, "kernel32.
dll
", "GetCurrentProcess", 公开 .
DLL
命令 GetCurrentProcessId, 整数型, "kernel32.
dll
", "GetCurrentProcessId", 公开 .
DLL
命令 GetExitCodeThread, 整数型, , "GetExitCodeThread", 公开, 取线程返回值 .参数 hThread, 整数型 .参数 lpExitCode, 整数型, 传址 .
DLL
命令 GetModuleHandleA, 整数型, "kernel32.
dll
", "GetModuleHandleA", 公开, , 获取一个应用程序或动态链接库的模块句柄 如执行成功成功,则返回模块句柄。零表示失败。会设置GetLastError .参数 lpModuleName, 文本型, , lpModuleName,指定模块名,这通常是与模块的文件名相同的一个名字。例如,NOTEPAD.EXE程序的模块文件名就叫作NOTEPAD .
DLL
命令 GetProcAddress, 整数型, "kernel32.
dll
", "GetProcAddress", 公开, , .参数 hModule, 整数型, , hModule .参数 lpProcName, 文本型, , lpProcName .
DLL
命令 GetThreadContext, 逻辑型, "kernel32", "GetThreadContext", 公开 .参数 hThreadId, 整数型 .参数 线程环境, context_ .
DLL
命令 GetThreadContext1, 逻辑型, "kernel32", "GetThreadContext", 公开 .参数 线程句柄, 整数型 .参数 寄存器, 寄存器 .
DLL
命令 GetWindow, 整数型, "user32", "GetWindow", 公开, 获得一个窗口的句柄,该窗口与某源窗口有特定的关系 由wCmd决定的一个窗口的句柄。如没有找到相符窗口,或者遇到错误,则返回零值。会设置GetLastError .参数 源窗口, 整数型, , 源窗口 .参数 关系, 整数型, , 指定结果窗口与源窗口的关系,它们建立在下述常数基础上:;GW_CHILD:寻找源窗口的第一个子窗口;GW_HWNDFIRST:为一个源子窗口寻找第一个兄弟(同级)窗口,或寻找第一个顶级窗口;GW_HWNDLAST:为一个源子窗口寻找最后一个兄弟(同级)窗口,或寻找最后一个顶级窗口;GW_HWNDNEXT:为源窗口寻找下一个兄弟窗口;GW_HWNDPREV:为源窗口寻找前一个兄弟窗口;GW_OWNER:寻找窗口的所有者; .
DLL
命令 GetWindowText, 整数型, "user32.
dll
", "GetWindowTextA", 公开, 取得一个窗体的标题(caption)文字,或者一个控件的内容(在vb里使用:使用vb窗体或控件的caption或text属性) 复制到lpString的字串长度;不包括空
中
止字符。会设置GetLastError .参数 句柄, 整数型, , 欲获取文字的那个窗口的句柄 .参数 文本, 文本型, , 预定义的一个缓冲区,至少有cch+1个字符大小;随同窗口文字载入 .参数 文本长度, 整数型, , lp缓冲区的长度; .
DLL
命令 GetWindowTextLength, 整数型, "user32", "GetWindowTextLengthA", 公开, 调查窗口标题文字或控件内容的长短(在vb里使用:直接使用vb窗体或控件的caption或text属性) 字串长度,不包括空
中
止字符 .参数 hwnd, 整数型, , 想调查文字长度的窗口的句柄; .
DLL
命令 GetWindowThreadProcessId, 整数型, "user32.
dll
", "GetWindowThreadProcessId", 公开, GetWindowThreadProcessId,获取与指定窗口关联在一起的一个线程和
进程
标识符 .参数 窗口句柄, 整数型, , hwnd,指定窗口句柄 .参数
进程
标识符, 整数型, 传址, lpdwProcessId,指定一个变量,用于装载拥有那个窗口的一个
进程
的标识符 .
DLL
命令 KillTimer, 整数型, "user32.
dll
", "KillTimer", 公开 .参数 窗口句柄, 整数型, , hwnd .参数 事件标识符, 整数型, , nIDEvent .
DLL
命令 LoadLibraryA, 整数型, "kernel32.
dll
", "LoadLibraryA", 公开, , 载入指定的动态链接库,并将它映射到当前
进程
使用的地址空间 .参数 动态链接库名称, 文本型, , lpLibFileName,指定要载入的动态链接库的名称 .
DLL
命令 LookupPrivilegeValueA, 逻辑型, "advapi32.
dll
", "LookupPrivilegeValueA", 公开 .参数 lpSystemName, 文本型 .参数 lpName, 文本型 .参数 lpLuid, LuID, 传址 .
DLL
命令 Module32First, 整数型, "kernel32.
dll
", "Module32First", 公开 .参数 hSnapshot, 整数型, , hSnapshot .参数 模块
进程
结构, MODULEENTRY32, 传址 .
DLL
命令 Module32Next, 整数型, "kernel32.
dll
", "Module32Next", 公开 .参数 hSnapshot, 整数型, , hSnapshot .参数 模块
进程
结构, MODULEENTRY32, 传址 .
DLL
命令 OpenProcess, 整数型, "kernel32.
dll
", "OpenProcess", 公开, kernel32.
dll
.参数 访问级别, 整数型, , 2035711完全访问 .参数 子
进程
继承, 逻辑型, , 0为子
进程
继承 .参数
进程
ID, 整数型, , 要打开的
进程
标识 .
DLL
命令 OpenProcessToken, 整数型, "advapi32.
dll
", "OpenProcessToken", 公开 .参数 ProcessHandle, 整数型 .参数 DesiredAccess, 整数型 .参数 TokenHandle, 整数型, 传址 .
DLL
命令 OpenThread, 整数型, "kernel32.
dll
", "OpenThread", 公开 .参数 dwDesiredAccess, 整数型 .参数 bInheritHandle, 逻辑型 .参数 dwThreadId, 整数型 .
DLL
命令 Process32First, 整数型, "kernel32.
dll
", "Process32First", 公开, 取
进程
快照第一个
进程
信息返回内存指针 .参数 快照句柄, 整数型 .参数
进程
信息,
进程
信息 .
DLL
命令 Process32Next, 整数型, "kernel32.
dll
", "Process32Next", 公开 .参数 快照句柄, 整数型 .参数
进程
信息,
进程
信息 .
DLL
命令 ReadProcessMemory, 整数型, "kernel32.
dll
", "ReadProcessMemory", 公开, 在
进程
中
读内存数据 地址1048576 .参数
进程
句柄, 整数型, , 欲读取的
进程
句柄(可用OpenProcess函数得到) .参数 地址, 整数型, , 读取的起始地址 .参数 返回内容, 字节集, 传址, 返回的数据,其类型可设为整数、文本和字节集 .参数 长度, 整数型, , 一次读取的字节长度(读取的字节数4) .参数 实际长度, 整数型, 传址, 实际读取的字节长度 .
DLL
命令 RegOpenKeyExA, 整数型, , "RegOpenKeyExA", 公开, 打开注册表项 .参数 hKey, 整数型 .参数 lpSubKey, 文本型 .参数 ulOptions, 整数型 .参数 samDesired, 整数型 .参数 phkResult, 整数型, 传址 .
DLL
命令 ResumeThread, 整数型, "kernel32.
dll
", "ResumeThread", 公开, 开始暂停的线程 .参数 线程句柄, 整数型 .
DLL
命令 RtlMoveMemory, 整数型, , "RtlMoveMemory", 公开 .参数 lpvDest, 整数型, 传址 .参数 lpvSource, 整数型 .参数 cbCopy, 整数型 .
DLL
命令 SetThreadContext, 逻辑型, "kernel32", "SetThreadContext", 公开 .参数 hThreadId, 整数型 .参数 线程环境, context_ .
DLL
命令 SetThreadContext1, 逻辑型, "kernel32", "SetThreadContext", 公开 .参数 线程句柄, 整数型 .参数 寄存器, 寄存器 .
DLL
命令 SetTimer, 整数型, "user32.
dll
", "SetTimer", 公开 .参数 窗口句柄, 整数型, , hwnd .参数 事件标识符, 整数型, , nIDEvent .参数 时钟周期, 整数型, , uElapse .参数 回调函数地址, 整数型, , lpTimerFunc .
DLL
命令 SetWindows
Hook
Ex, 整数型, "user32.
dll
", "SetWindows
Hook
ExA", 公开 .参数
钩子
类型, 整数型 .参数 处理函数入口, 整数型 .参数 函数所在模块, 整数型 .参数 目标线程ID, 整数型 .
DLL
命令 SHFileOperation, 整数型, "Shell32.
dll
", "SHFileOperationA", 公开 .参数 文件参数, SHFILEOPSTRUCT .
DLL
命令 SuspendThread, 整数型, , "SuspendThread", 公开 .参数 线程句柄, 整数型 .
DLL
命令 TerminateProcess, 整数型, "kernel32.
dll
", "TerminateProcess", 公开, 成功返回非零 .参数
进程
句柄, 整数型 .参数 退出代码, 整数型, , 传入0 .
DLL
命令 TerminateThread, 逻辑型, "kernel32", "TerminateThread", 公开 .参数 hThread, 整数型 .参数 dwExitCode, 整数型 .
DLL
命令 Thread32First, 逻辑型, "kernel32.
dll
", "Thread32First", 公开 .参数 hSnapshot, 整数型 .参数 lpte, THREADENTRY32, 传址 .
DLL
命令 Thread32Next, 逻辑型, "kernel32.
dll
", "Thread32Next", 公开 .参数 hSnapshot, 整数型 .参数 lpte, THREADENTRY32, 传址 .
DLL
命令 VirtualAllocEx, 整数型, "kernel32.
dll
", "VirtualAllocEx", 公开, 成功返回分配内存的首地址,失败返回0 .参数 hProcess, 整数型, , 申请内存所在的
进程
句柄 .参数 lpAddress, 整数型, , 填0 .参数 dwSize, 整数型, , 欲分配的内存大小 .参数 flAllocationType, 整数型, , 填4096,MEM_COMMI .参数 flProtect, 整数型, , 填64,可读可写,可执行 .
DLL
命令 VirtualFreeEx, 整数型, "kernel32.
dll
", "VirtualFreeEx", 公开 .参数 hProcess, 整数型 .参数 lpAddress, 整数型 .参数 dwSize, 整数型, , 填0 .参数 dwFreeType, 整数型, , 填32768 .
DLL
命令 VirtualProtect, 整数型, "kernel32.
dll
", "VirtualProtect", 公开, 成功返回非0,失败返回0 .参数 起始地址, 整数型, , lpAddress .参数 长度, 整数型, , dwSize .参数 新保护权限, 整数型, , 可读写权限(PAGE_READWRITE)=4;PAGE_EXECUTE_READWRITE=64 .参数 旧保护权限, 整数型, 传址, 保存旧属性的结构变量地址 .
DLL
命令 VirtualProtectEx, 整数型, "kernel32.
dll
", "VirtualProtectEx", 公开, 成功返回非0,失败返回0 .参数 hprocess, 整数型, , 要修改内存的
进程
句柄 .参数 起始地址, 整数型, , lpAddress .参数 长度, 整数型, , dwSize .参数 新保护权限, 整数型, , 可读写权限(PAGE_READWRITE)=4 .参数 旧保护权限, 整数型, 传址, 保存旧属性的结构变量地址 .
DLL
命令 VirtualQueryEx, 整数型, "kernel32.
dll
", "VirtualQueryEx", 公开 .参数 hProcess, 整数型 .参数 lpAddress, 整数型 .参数 info, MEMORY_BASIC_INFORMATION, 传址 .参数 dwLength, 整数型 .
DLL
命令 VMProtectBegin, , "VMProtectSDK32.lib", "_VMProtectBegin@4", 公开, 功能:设置开始标记 .参数 MarkerName, 文本型, 传址, 标记名 .
DLL
命令 VMProtectBeginMutation, , "VMProtectSDK32.lib", "_VMProtectBeginMutation@4", 公开, 功能:设置[变异]标记 .参数 MarkerName, 文本型, 传址, 标记名 .
DLL
命令 VMProtectBeginUltra, , "VMProtectSDK32.lib", "_VMProtectBeginUltra@4", 公开, 功能:设置[虚拟+变异]标记 .参数 MarkerName, 文本型, 传址 .
DLL
命令 VMProtectBeginUltraLockByKey, , "VMProtectSDK32.lib", "_VMProtectBeginUltraLockByKey@4", 公开 .参数 MarkerName, 文本型, 传址, 标记名 .
DLL
命令 VMProtectBeginVirtualization, , "VMProtectSDK32.lib", "_VMProtectBeginVirtualization@4", 公开, 功能:设置[虚拟]标记 .参数 MarkerName, 文本型, 传址, 标记名 .
DLL
命令 VMProtectBeginVirtualizationLockByKey, , "VMProtectSDK32.lib", "_VMProtectBeginVirtualizationLockByKey@4", 公开 .参数 MarkerName, 文本型, 传址 .
DLL
命令 VMProtectDecryptStringA, 整数型, "VMProtectSDK32.lib", "_VMProtectDecryptStringA@4", 公开, 功能:加密Ansi字符串常量,返回加密后的字符串指针 .参数 char, 文本型, 传址, 提供Ansi字符串常量 .
DLL
命令 VMProtectDecryptStringW, 整数型, "VMProtectSDK32.lib", "_VMProtectDecryptStringW@4", 公开, 功能:加Unicode字符串,返回加密后的字符串指针 .参数 wchar_t, 文本型, 传址, 提供Unicode字符串常量 .
DLL
命令 VMProtectEnd, , "VMProtectSDK32.lib", "_VMProtectEnd@0", 公开, 功能:设置与虚拟/变异等功能配对的结束标记 .
DLL
命令 VMProtectIsDebuggerPresent, 逻辑型, "VMProtectSDK32.lib", "_VMProtectIsDebuggerPresent@4", 公开, 功能:检测调试器是否存在 .参数 CheckKernelMode, 逻辑型, , 是否检测KernelMode调试器.为假,则检测user-mode调试器,例如OllyDBG, WinDBG等..为真,则同时检测user-mode和KernelMode(包括SoftICE, Syser等...)调试器, .
DLL
命令 VMProtectIsValidImageCRC, 逻辑型, "VMProtectSDK32.lib", "_VMProtectIsValidImageCRC@0", 公开, 功能:检测程序内存没有没有被改变 .
DLL
命令 VMProtectIsVirtualMachinePresent, 逻辑型, "VMProtectSDK32.lib", "_VMProtectIsVirtualMachinePresent@0", 公开, 功能:检测程序是否运行在虚拟机,比如VMware, Virtual PC, VirtualBox, Sandboxie等... .
DLL
命令 WaitForSingleObject, 整数型, "kernel32.
dll
", "WaitForSingleObject", 公开 .参数 hHandle, 整数型 .参数 dwMilliseconds, 整数型, , 填-1 .
DLL
命令 WriteProcessMemory, 逻辑型, "kernel32.
dll
", "WriteProcessMemory", 公开 .参数
进程
句柄, 整数型 .参数 开始写入进址, 整数型, , 内存地址 .参数 写入数值数据, 字节集, 传址, 数据指针 .参数 写入长度, 整数型, , 长度 .参数 实际写入长度, 整数型, , 实际写出长度0 .
DLL
命令 取文本指针, 整数型, "kernel32", "lstrcpyn", 公开, 感谢海洋老师的例程 .参数 变量, , 传址, 一定要传址 .参数 变量, , 传址, 一定要传址.重复一次,骗骗Windows:) .参数 保留, 整数型, , 0 .图片 SE_PROTECT_END, 公开, 置入代码 (#SE_PROTECT_END)'结束标记 .图片 SE_PROTECT_START, 公开, 置入代码 (#SE_PROTECT_START)'默认保护 .图片 SE_PROTECT_START_MUTATION, 公开, 置入代码 (#SE_PROTECT_START_MUTATION)'乱序变形 .图片 SE_PROTECT_START_ULTRA, 公开, 置入代码 (#SE_PROTECT_START_ULTRA)'乱序+虚拟 .图片 SE_PROTECT_START_VIRTUALIZATION, 公开, 置入代码 (#SE_PROTECT_START_VIRTUALIZATION)'虚拟 .图片 SE_UNPROTECT_END, 公开, 置入代码 (#SE_UNPROTECT_END)'屏蔽特定代码的乱序和混淆 .图片 SE_UNPROTECT_START, 公开, 置入代码 (#SE_UNPROTECT_START)'屏蔽特定代码的乱序和混淆 .图片 VMProtect_Begin, 公开, 置入代码 (#VMProtect_Begin) 'VMP保护开始标志 .图片 VMProtect_End, 公开, 置入代码 (#VMProtect_End) 'VMP保护结束标志
Easy
Hook
函数
钩子
最好的完整稳定的
钩子
Demo程序(VS2010 C++ 版本)
目前最好的Easy
Hook
的完整Demo程序,包括了
Hook
.
dll
动态库和Inject.exe
注入
程序。
Hook
.
dll
动态库封装了一套稳定的下
钩子
的机制,以后对函数下
钩子
,只需要填下数组表格就能实现了,极大的方便了今后的使用。 Inject.exe是用MFC写的界面程序,只需要在界面上输入
进程
ID就能正确的
HOOK
上相应的
进程
,操作起来非常的简便。 这个Demo的代码风格也非常的好,用VS2010成功稳定编译通过,非常值得下载使用。 部分代码片段摘录如下: //【Inject.exe
注入
程序的代码片段】 void CInjectHelperDlg::OnBnClickedButtonInject
Dll
ProcessId() { ////////////////////////////////////////////////////////////////////////// //【得到
进程
ID值】 UINT nProcessID = 0; if (!GetProcessID(nProcessID)) { TRACE(_T("%s GetProcessID 失败"), __FUNCTION__); return; } ////////////////////////////////////////////////////////////////////////// //【得到
DLL
完整路径】 CString strPath
DLL
; if (!Get
Dll
FilePath(strPath
DLL
)) { TRACE(_T("%s Get
Dll
FilePath 失败"), __FUNCTION__); return; } ////////////////////////////////////////////////////////////////////////// //【
注入
DLL
】 NTSTATUS ntStatus = RhInjectLibrary(nProcessID, 0, EASY
HOOK
_INJECT_DEFAULT, strPath
DLL
.GetBuffer(0), NULL, NULL, 0); if (!ShowStatusInfo(ntStatus)) { TRACE(_T("%s ShowStatusInfo 失败"), __FUNCTION__); return; } } //【
Hook
.
dll
动态库的代码片段】 extern "C" __declspec(
dll
export) void __stdcall NativeInjectionEntryPoint(REMOTE_ENTRY_INFO* InRemoteInfo) { if (!DylibMain()) { TRACE(_T("%s DylibMain 失败"), __FUNCTION__); return; } } FUNCTIONOLDNEW_FRMOSYMBOL array_stFUNCTIONOLDNEW_FRMOSYMBOL[]= { {_T("kernel32"), "CreateFileW", (void*)CreateFileW_new}, {_T("kernel32"), "CreateFileA", (void*)CreateFileA_new}, {_T("kernel32"), "ReadFile", (void*)ReadFile_new} }; BOOL
Hook
FunctionArrayBySymbol() { /////////////////////////////////////////////////////////////// int nPos = 0; do { /////////////////////////////// FUNCTIONOLDNEW_FRMOSYMBOL* stFunctionOldNew = &g_stFUNCTIONOLDNEW_FRMOSYMBOL[nPos]; if (NULL == stFunctionOldNew->strModuleName) { break; } /////////////////////////////// if (!
Hook
FunctionBySymbol(stFunctionOldNew->strModuleName, stFunctionOldNew->strNameFunction, stFunctionOldNew->pFunction_New)) { TRACE(_T("%s
Hook
FunctionBySymbol 失败"), __FUNCTION__); return FALSE; } } while(++nPos); /////////////////////////////////////////////////////////////// return TRUE; } HANDLE WINAPI CreateFileW_new( PWCHAR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile ) { TRACE(_T("CreateFileW_new. lpFileName = %s"), lpFileName); return CreateFileW( lpFileName, dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile); }
win32汇编——
dll
远程
注入
win32汇编实现
dll
远程
注入
。所谓
DLL
远程
注入
,就是强迫
DLL
程序运行在其他
进程
中
,这样做的目的无非有两种:第一是伪装自身,第二是控制宿主。前者常见于病毒或木马,后者则一般用于正规之场合,比如常见的输入法、外挂等等,有时
Hook
(
钩子
)也用到该技术。由此可见,技术是把双刃剑,区别在于使用技术的人。
进程/线程/DLL
15,471
社区成员
49,182
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章