ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:17.89KB ,
资源ID:1310706      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-1310706.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Coperator整理棉猴论坛VIP之DLL程序编写系列教程笔记文档格式.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

Coperator整理棉猴论坛VIP之DLL程序编写系列教程笔记文档格式.docx

1、C void ShowInfo();/ TODO: reference additional headers your program requires here/AFX_INSERT_LOCATION/ Microsoft Visual C+ will insert additional declarations immediately before the previous line.#endif / !StdAfx.cpp/ stdafx.cpp : source file that includes just the standard includes/ 01_001.pch will

2、 be the pre-compiled header/ stdafx.obj will contain the pre-compiled type information#include stdafx.h#include /Message()void ShowInfo() MessageBox(NULL,ShowInfo() test, MQ, MB_OK);调用静态链接库ExecuteStaticLib.cpp/ ExecuteStaticLib.cpp : Defines the entry point for the application.#pragma comment(lib, S

3、taticLibTest.lib)int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) / TODO: Place code here. ShowInfo(); return 0;二、动态链接库Dynamic Link Library(DLL)DLL的格式和EXE文件是一样的,但是不能直接执行。它把代码封装到自己的内部,只是提供函数接口让外面的EXE程序调用。在编译的时候不会将所包含的动态链接库编译到程序中。制作静态链接库 DynamicLibTestD

4、ynamicLibTest.cpp/ DynamicLibTest.cpp : Defines the entry point for the DLL application.BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) return TRUE;_declspec(dllexport) void ShowInfo()DynammicLib调用动态链接库ExecuteDynamicLib.cpp/ ExecuteDynamicLib.cpp : Defines the en

5、try point for the console application.DynamicLibTest.libvoid ShowInfo();int main(int argc, char* argv)编译的时候用.lib文件,执行的时候用.dll文件第2课 DLL基础再讨论一、动态链接库的模块定义文件(.def)模块定义文件是一个有着.def文件扩展名的文本文件。它被用于导出DLL的函数。一个.def文件只有两个必需的部分,也就是“LIBRARY”和“EXPORTS”。DynamicLibDefTest.cpp/ DynamicLibDefTest.cpp :_declspec(dllex

6、port) void showInfo() MessageBox(NULL, DynamicLibvoid UseDEFShowInfo()def showEXPORTS.defLIBRARY DynamicLibDefTestEXPORTS UseDEFShowInfo 1ExecuteDynamicDEFLib.cpp/ ExecuteDynamicDEFLib.cpp :DynamicLibDefTest.libvoid showInfo();void UseDEFShowInfo(); showInfo(); UseDEFShowInfo();二、动态链接库的入口函数(DLLMain(

7、)函数)每一个DLL必须有一个入口函数,DLLMain()函数是一个缺省的入口函数。DLLMain()函数负责初始化和结束工作。每当一个新的进程或该进程的新线程访问DLL时,或者访问DLL的每个进程或者线程不再使用DLL或者线程结束时,都会调用DLLMain()函数。定义只在进入时调用DLLMain()函数 switch(ul_reason_for_call) case DLL_PROCESS_ATTACH: MessageBox(NULL, DLL first default: return TRUE; 第3次课 进程权限的提升一、OpenProcessToken函数打开进程令牌环二、Loo

8、kupPrivilegeValue函数获得进程本地唯一ID三、AdjustTokenPrivileges函数提升进程的权限GetCurrentProcess() /获得当前进程句柄ConRunDll.cpp/ ConRunDll.cpp :stdio.h /提升权限用/提升权限函数int EnableDebugPriv(const char* name) HANDLE hToken; if (! OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken) printf(open fai

9、l!n); return -1; LUID luid; if(! LookupPrivilegeValue(NULL, name, &luid)look up fail! TOKEN_PRIVILEGES tp; tp.PrivilegeCount = 1; tp.Privileges0.Luid = luid; tp.Privileges0.Attributes = SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(hToken, FALSE, &tp, NULL, NULL, NULL)privileges fail! printf(success!

10、EnableDebugPriv(SE_DEBUG_NAME);第4次课 远程线程的创建一、打开远程进程OpenProcess函数二、在远程进程的内存中分配空间VirtualAllocEx函数三、远程进程的内存的写入WriteProcessMemory函数四、找到LoadLibrary函数在Kernel32中的地址GetProcAddress函数五、在远程进程中线程(远程线程)CreateRemoteThread函数BOOL InjectDLL(const char* DLLFullPath, const DWORD dwRemoteProcessId) HANDLE hRemoteProces

11、s; hRemoteProcess = OpenProcess(PROCESS_CREATE_THREAD | PROCESS_VM_OPERATION | PROCESS_VM_WRITE, FALSE, dwRemoteProcessId); if(hRemoteProcess = NULL)open process fail! return FALSE; char *pszLibFileRemote; pszLibFileRemote = (char*)VirtualAllocEx(hRemoteProcess, NULL, lstrlen(DLLFullPath)+1, MEM_COM

12、MIT, PAGE_READWRITE); if(pszLibFileRemote = NULL)alloc fail! WriteProcessMemory(hRemoteProcess, pszLibFileRemote, (LPVOID)DLLFullPath, lstrlen(DLLFullPath)+1, NULL)write memory fail! PTHREAD_START_ROUTINE pfnStartAddr = (PTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle(TEXT(Kernel32), LoadLibrar

13、yA ); if(pfnStartAddr = NULL)get proc addr fail! if(CreateRemoteThread(hRemoteProcess, NULL, 0, pfnStartAddr, pszLibFileRemote, 0, NULL) = NULL)create remote thread fail!good! InjectDLL(D:DynamicLibDefTest.dll, 4892); while(1); getchar();第5次课 进程ID的获取一、系统进程快照CreateToolhelp32Snapshot函数二、在快照中搜索指定进程Proc

14、ess32First函数Processe32Next函数TlHelp32.hunsigned long getprocid(char *pn) HANDLE hnd; hnd = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); if(hnd = NULL)snapshort fail! return 0; PROCESSENTRY32 pe; pe.dwSize = sizeof(PROCESSENTRY32); BOOL b; b = Process32First(hnd, &pe); while(b) if(strcmp(pe.szExeFile, pn) = 0) return pe.th32ProcessID; b = Process32Next(hnd, & /InjectDLL(,getpro

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2