转载网络

黑客常用WIN API函数整理
一、进程
创建进程:
CreateProcess ("C:\\windows\\notepad.exe",,,,,,,,&si,&pi);
WinExec("notepad",SW_SHOW);
ShellExecute(,"open","notepad","c:\\a.txt","",SW_SHOW);
ShellExecuteEx(&sei);
遍历进程:
CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,);
Process32First(hsnap,&pe32);
Process32Next(hsnap,&pe32);
终止进程:
ExitProcess();
TerminateProcess(hProc,);
打开进程:
OpenProcess(PROCESS_ALL_ACCESS,,pid);\
获取进程ID:
GetCurrentProcesssId();
获取进程可执行文件路径:
GetModuleFileName(NULL,buf,len);
GetProcessImageFileName(hproc,buf,len);
遍历进程模块信息:
CreateToolhelp32Snapshot(TH32CS_SNAPMODILE,pid);
Module32First(hsnap,&mdl32);
Module32Next(hsnap,&mdl2);
获取指定模块句柄:
GetModuleHandle(“ kernel32.dll”);
获取模块内函数地址:
GetProcessAddr(hmdl,”MessageBox ”);
动态加载DLL:
LoadLibrary(“user32.dll”);
卸载DLL:
FreeLibrary(hDll);
获取进程命令行参数:
GetCommandLine();
任何进 程GetCommandLine函数地址后偏移一个字节后 的4字节地址为
命令行地址。
读写远程进程数据:
ReadProcessMemory(hproc,baseAddr,buf,len,&size);
WriteProcessMemory(hproc,baseAddr,buf,len,&size);
申请内存:
VirtualAlloc(,size,MEM_COMMIT,PAGE_EXECUTE_READWRITE);
VirtualAllocEx(hproc,,size,MEM_COMMIT,
PAGE_EXECUTE_READWRITE);
修改内存属性:
VirtualProtect(addr,size,PAGE_EXECUTE_READWRITE,&oldAddr);
VirtualProtectEx(hproc,addr,size,PAGE_EXECUTE_READWRITE,&oldAd
dr);
释放内存:
VirtualFree(addr,size,MEM_RELEASE);
VirtualFreeEx(hproc,addr,size,MEM_RELEASE);
获取系统版本(WinNT/2K/XP<0x80000000):
getVersion();
读写进程优先级:
SetPriorityClass(hproc,Normal);
GetPriority(hproc);
SetProcessPriorityBoost(hproc,true);
GetProcessPriorityBoost(hproc,pBool);
二、线程
创建线程(CreateThread的线程函数调用了strtok、rand等需
使用_endthread()释放内存):
CreateThread(,,startAddr,&para,,&tid);
_beginthread(startAddr,,);
_beginthreadex(,,startAddr,,,&tid);
CreateRemoteThread(hproc,,,func,&para,,&tid);
获取线程ID:
GetCurrentThreadId();
关闭线程句柄(减少内核对象使用次数,防止内存泄漏) :
CloseHandle(hthread);
挂起与激活线程(维护暂停次数):
SuspendThread(hthread);
ResumeThread(hthread);
获取线程退出代码:
GetExitCode(hthread,&code);
等待线程退出(线程受信状态或超时):
WaitForSignleObject(htread,);
WaitForMultipleObjects(num,handles,true,INFINITE);
遍历线程:
CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD,);
Thread32First(hsnap,&mdl32);
Thread32Next(hsnap,&mdl2);
获取线程函数入口:
ZwQueryInfomationThread(hthread,ThreadQuerySetWin32StartAddress,&b
uf,,NULL);
打开线程
OpenThread(THREAD_ALL_ACCESS,false,&tid);
获取线程函数地址所属模块:
GetMappedFileName(hproc,addr,buf,);
读写线程优先级:
SetThreadPriority(hthread,Normal);
GetThreadPriority(hthread);
SetThreadPriorityBoost(hproc,true);
GetThreadPriorityBoost(hproc,pBool);
终止线程:
ExitThread();
TerminateThread(hthread,);
线程同步临界区对象:
InitializeCriticalSection(&cs);
EnterCriticalSection(&cs);
LeaveCriticalSection(&cs);
DeleteCriticalSection(&cs);
线程同步事件内核对象:
OpenEvent(EVENT_ALL_ACCESS,false,name);
CreateEvent(NULL,false,true,NULL);
WaitForSingleObject(hevnt,INFINITE);
SetEvent(hevnt);
ResetEvent(hevnt);
线程同步互斥内核对象:
CreateMutex(NULL,false,NULL);
WaitForSingleObject(hmutex,INFINITE);
ReleaseMutex(hmutex);
OpenMutex(MUTEX_ALL_ACCESS,false,name);
三、注册表
创建键:
RegCreateKeyEx(HKEY_CURRENT_USER, ”TestNewKey”,,,REG_OPT
ION_VOLATILE,KEY_ALL_ACCESS,,&subkey,&state);
打开键:
RegCreateKeyEx(HKEY_CURRENT_USER, ”Control
Panel ”,,KEY_ALL_ACCESS,&subkey);
关闭键:
RegCloseKey(hkey);
遍历键:
RegEnumKeyEx(hsubkey,index,keyname,&nameSize,,,,&time);
FileTimeToSystemTime(&time,&systime);
RegQueryInfo(hsubkey,,,,&count,,,,,,,);
删除键:
RegDeleteKeyEx(hmainkey,subkeyName);
创建值:
RegSetValueEx(hsubkey, ”test ”,,REG_WORD,(BYTE*)&value,);
遍历值:
RegEnumValue(hsubkey,index,name,&nameSize,,&type,valuebuf,valueLe
n);
RegQueryValueEx(hsubkey,name,,type,buf,&size);
删除值:
RegDeleteValue(hsubkey,valuename);
四、文件
创建/打开文件:
CreateFile(“ a.txt”,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_R
EAD,,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,);
设置文件指针:
SetFilePointer(hFile,,NULL,FILE_END);
读写文件:
ReadFile(hFile,buf,len,&size,);
WriteFile(hFile,buf,len,&size,);
强制文件写入磁盘,清空文件高速缓冲区:
FlushFileuffers(hFile);
[解]锁文件区域:
LockFile(hFile,,,,);
UnlockFile(hFile,,,,);
复制文件:
CopyFile(src,des,true);
CopyFileEx(src,des,func,&para,false,COPY_FILE_FAIL_IF_EXISTS);
移动文件:
MoveFile(src,des);
MoveFileEx(src,des,false);
MoveFileWithProgress(src,des,fun,&para,
MOVEFILE_COPY_ALLOWED);
删除文件:
DeleteFile(filename);
获取文件类型(FILE_TYPE_PIPE):
GetFileType(hFile);
获取文件大小:
GetFileSize(hFile,&high);
获取文件属性(例如FILE_ATTRIBUTE_DIRECTORY进行&
运算):
GetFileAttributes(hFile);
遍历文件:
FindFirstFile(nameMode,&wfd);
FindNextFile(hFile,&wfd);
创建管道:
CreatePipe(&hRead,&hWrite,&sa,);
创建内存映射文件:
CreateFile(“ d:\\a.txt”,GENERIC_READ|GENERIC_WRITE,FILE_SHARE
_READ,,OPEN_EXISTI
NG,FILE_ATTRIBUTE_NORMAL,”myMap”);
加载内存映射文件:
MapViewOfFile(hmap,FILE_MAP_ALL_ACCESS,,,);
打开内存映射文件:
OpenFileMapping(FILE_AMP_ALL_ACCESS,false, ”myMap”);
卸载内存映射文件:
UnmapViewOfFile(baseAddr);
强制写入内存映射文件到磁盘:
FlushViewOfFile(baseAddr,len);
创建文件夹(只能创建一层):
CreateDirectory( “D:\\a”,NULL);
CreateDirectory( “C:\\a”,”D:\\b”,NULL);
删除文件夹(只能删除空文件夹):
RemoveDirectory( “ C:\\a ”);
检测逻辑驱动器:
GetLogicalDrives();
GetLogicalDriveStrings(len,buf);
获取驱动器类型(DRIVE_CDROM):
GetDriveType( “D:\\”);
五、网络
打开网络资源枚举过程(winnetwk.h、Mpr.lib) :
WNetOpenEnum(RESOURCE_GLOBAL,RESOURCETYPE_ANY,,NUL
L,hnet);
枚举网络资源:
WNetEnumResource(hnet,&count,pNetRsc,&size);
关闭网络资源枚举过程:
WNetCloseEnum(hnet);
打开关闭WinSocket库:
WSAStartup(version,&wsa);
WSACleanup();
创建套接字:
socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
绑定套接字IP和端口:
bind(sock,&addr,len);
监听TCP连接:
listen(sock,);
接收TCP连接请求:
accept(sock,&addr,&len);
客户端连接:
connect(sock,&addr,len);
发送TCP数据:
send(sock,buf,len,);
接收TCP数据:
recv(sock,buf,len,);
发送UDP数据:
sendto(sock,buf,len,,&addr,len);
接收UDP数据:
recvfrom(sock,buf,len,,&addr,&len);
六、服务
打开SCM服务控制管理器:
OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
创建服务:
CreateService(mgr,"MyService","
MyService",SERVICE_ALL_ACCESS,SERVICE_WIN32_OWN_PROCE
SS,SERVICE_AUTO_START,SERVICE_ERROR_IGNORE,path,NULL,N
ULL,NULL,NULL,NULL);
打开服务对象:
OpenService(mgr,"MyService",SERVICE_START);
启动服务:
StartService(serv,,NULL);
查询服务状态:
QueryServiceStatus(serv,&state);
关闭服务句柄:
CloseServiceHandle(hdl);
连接到SCM:
StartServiceCtrlDispatcher(DispatchTable);
注册服务控制函数:
RegisterServiceCtrlHandler("MyServicer",ServiceCtrl);
设置服务状态:
SetServiceStatus(hss,&ServiceStatus);
控制服务:
ControlService(serv,SERVICE_CONTROL_STOP,&state);
删除服务:
DeleteService(serv);
遍历服务:
EnumServicesStatus(hscm,SERVICE_WIN32|SERVICE_DRIVER,SERVIC
E_STATE_ALL,&srvSts,len,&size,&count,NULL);
查询服务配置:
QueryServiceConfig(hserv,&srvcfg,size,&size);
七、消息
发送消息:
SendMessage(HWND_BROADCAST,WM_LBUTTONDOWN,,);
接收消息:
GetMessage(&msg,NULL,,);
投递消息:
PostMessage(HWND_BROADCAST,WM_LBUTTONDOWN,,);
获取消息:
PeekMessage(&msg,NULL,,);
转换消息:
TranslateMessage(&msg);
分发消息:
DispatchMessage(&msg);
等待消息:
WaitMessage();
发送退出消息:
PostQuitMessage();
安装消息钩子:
SetWindowsHookEx(WH_KEYBOARD,keyBoardProc,,tid);
卸载消息钩子:
UnhookWindowsHookEx(hhk);

最新文章

  1. iOS NSDate等时间类的使用
  2. [原创]jquery+css3打造一款ajax分页插件
  3. tomcat日志文件定时清理备份
  4. Word2013创建目录
  5. 20145305《Java程序设计》实验三
  6. 一道PK赛题
  7. 281. Zigzag Iterator
  8. How To Fix – Mcrypt PHP extension required in Laravel on Mac OS X (No MAMP)
  9. 【TopCoder】SRM 680 DIV 2
  10. Linq的简单查询
  11. nginx配置方法
  12. 并发编程(四):ThreadLocal从源码分析总结到内存泄漏
  13. MOOS学习笔记3——命令行
  14. Linux文本分析命令awk的妙用
  15. 详细解读Volley(三)—— ImageLoader &amp; NetworkImageView
  16. ajaxfileupload.js ajax上传文件(含application/json)
  17. unittest框架模版 (含智能执行类下面所有用例并出报告)
  18. unity3d中gameObject捕获鼠标点击
  19. Activity工作流学习(一)——Activity服务类
  20. AJAX跨域访问(从Tomcat8到Apache/Nginx/Spring Boot)

热门文章

  1. stm32 串口发送字符串丢失第一个字节
  2. 使用YUM安装软件时提示PackageKit睡眠中解决方法!
  3. 对list集合的内容分组
  4. 修改html内联样式的方法
  5. RuntimeError: cuda runtime error (10) : invalid device ordinal
  6. Pentaho6.1中D3可视化库的集成及数据联动的实现
  7. 解Bug之路-记一次调用外网服务概率性失败问题的排查
  8. 第二周之Hadoop学习(二)
  9. 10 JavaScript对象&amp;类&amp;for循环
  10. 从零构建以太坊(Ethereum)智能合约到项目实战——第24章 IPFS + 区块链