- 博客(0)
- 资源 (10)
空空如也
detour 2.1
Detours是微软开发的一个函数库, 用于修改运行中的程序在内存中的影像,从而即使没有源代码也能改变程序的行为。具体用途是:
拦截WIN32 API调用,将其引导到自己的子程序,从而实现WIN32 API的定制。
为一个已在运行的进程创建一新线程,装入自己的代码并运行。
---- 本文将简介Detours的原理,Detours库函数的用法, 并利用Detours库函数在Windows NT上编写了一个程序,该程序能使有“调试程序”的用户权限的用户成为系统管理员,附录利用Detours库函数修改该程序使普通用户即可成为系统管理员 (在NT4 SP3上)。
一. Detours的原理
---- 1. WIN32进程的内存管理
---- 总所周知,WINDOWS NT实现了虚拟存储器,每一WIN32进程拥有4GB的虚存空间, 关于WIN32进程的虚存结构及其操作的具体细节请参阅WIN32 API手册, 以下仅指出与Detours相关的几点:
---- (1) 进程要执行的指令也放在虚存空间中
---- (2) 可以使用QueryProtectEx函数把存放指令的页面的权限更改为可读可写可执行,再改写其内容,从而修改正在运行的程序
---- (3) 可以使用VirtualAllocEx从一个进程为另一正运行的进程分配虚存,再使用 QueryProtectEx函数把页面的权限更改为可读可写可执行,并把要执行的指令以二进制机器码的形式写入,从而为一个正在运行的进程注入任意的代码
---- 2. 拦截WIN32 API的原理
---- Detours定义了三个概念:
---- (1) Target函数:要拦截的函数,通常为Windows的API。
---- (2) Trampoline函数:Target函数的复制品。因为Detours将会改写Target函数,所以先把Target函数复制保存好,一方面仍然保存Target函数的过程调用语义,另一方面便于以后的恢复。
---- (3) Detour 函数:用来替代Target函数的函数。
---- Detours在Target函数的开头加入JMP Address_of_ Detour_ Function指令(共5个字节)把对Target函数的调用引导到自己的Detour函数, 把Target函数的开头的5个字节加上JMP Address_of_ Target _ Function+5作为Trampoline函数。例子如下:
拦截前:Target _ Function:
;Target函数入口,以下为假想的常见的子程序入口代码
push ebp
mov ebp, esp
push eax
push ebx
Trampoline:
;以下是Target函数的继续部分
……
拦截后: Target _ Function:
jmp Detour_Function
Trampoline:
;以下是Target函数的继续部分
……
Trampoline_Function:
; Trampoline函数入口, 开头的5个字节与Target函数相同
push ebp
mov ebp, esp
push eax
push ebx
;跳回去继续执行Target函数
jmp Target_Function+5
---- 3. 为一个已在运行的进程装入一个DLL
---- 以下是其步骤:
---- (1) 创建一个ThreadFuction,内容仅是调用LoadLibrary。
---- (2) 用VirtualAllocEx为一个已在运行的进程分配一片虚存,并把权限更改为可读可写可执行。
---- (3) 把ThreadFuction的二进制机器码写入这片虚存。
---- (4) 用CreateRemoteThread在该进程上创建一个线程,传入前面分配的虚存的起始地址作为线程函数的地址,即可为一个已在运行的进程装入一个DLL。通过DllMain 即可在一个已在运行的进程中运行自己的代码。
二. Detours库函数的用法
---- 因为Detours软件包并没有附带帮助文件,以下接口仅从剖析源代码得出。
---- 1. PBYTE WINAPI DetourFindFunction(PCHAR pszModule, PCHAR pszFunction)
---- 功能:从一DLL中找出一函数的入口地址
---- 参数:pszModule是DLL名,pszFunction是函数名。
---- 返回:名为pszModule的DLL的名为pszFunction的函数的入口地址
---- 说明:DetourFindFunctio
2010-07-16
免费发送飞信的动态连接库接口
提供输出函数
void __stdcall SendFetionSMSA(const CHAR* tszUserName,const CHAR* tszPass,const CHAR* tszSendTo,const CHAR* tszMsg);
void __stdcall SendFetionSMSA(const CHAR* tszUserName,const CHAR* tszPass,const CHAR* tszSendTo,const CHAR* tszMsg);
上面两个函数会自动登录飞信,直接发送,对应参数分别是登录的手机号,登录密码,要发送的目标手机号码,发送的内容,支持超长短信,尽量不要超过180个汉字。
void __stdcall LoginA(const CHAR* tszUserName,const CHAR* tszPass)
void __stdcall LoginW(const WCHAR* tszUserName,const WCHAR* tszPass)
完成帐号登录,分别是手机号和密码
void __stdcall SendFetionToPhoneA(const CHAR* tszSendTo,const CHAR* tszMsg)
完成飞信发送,分别是发送的目标手机号码和发送的内容。
void __stdcall SendFetionSMSW(const WCHAR* tszUserName,const WCHAR* tszPass,const WCHAR* tszSendTo,const WCHAR* tszMsg)
完成飞信发送,分别是发送的目标手机号码和发送的内容。
Logoff()
注销退出
调用可以使用LoadLibrary GetProcAddress函数完成动态加载。注意发送每天的发送条数限制,不要滥用,不要频繁发送,否则会被飞信暂停使用,只要重新使用手机修改密码才能恢复。支持unicode和ansi两个版本。不提供源码,也不加壳。不会搜集用户任何信息。可以方便用于实时监听微博/股票/网站等信息。
只提供有限技术支持,不保证将来飞信接口变化,收发飞信的有效性,不要将该文件用于商业用途。
2010-05-10
Visual Assist X 10.6.1822 crack
解压缩安装包,然后进行安装,并将附件中的vx_a.dll覆盖到原安装目录,这个版本不适用于Visual Studio 2010
2010-05-10
Symantec W32.Downadup Removal Tool
专杀usb autorun.inf jwgkvsq.vmx病毒,这个病毒会通过rpc漏洞传播,会增加一个svchost netsvc服务项,在windows\system32子目录会有一个161KB大小的隐含只读文件,这个借助于权限设置无法删除。即使启动另外一个操作系统也不行。这个病毒插入usb盘,会自动写入autorun.inf,创建一个RECYCLER类似的目录。
清理这个病毒,最好针对不同操作系统先下载两个补丁,一个是禁止autorun.inf自动运行,另外一个是ms08-67补丁KB958644,然后进入安全模执行专杀工具。
2010-05-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人