zoukankan      html  css  js  c++  java
  • Windows编程常用api

    转载网络

    黑客常用WIN API函数整理
    一、进程
    创建进程:
    CreateProcess ("C:\windows\notepad.exe",0,0,0,0,0,0,0,&si,&pi);
    WinExec("notepad",SW_SHOW);
    ShellExecute(0,"open","notepad","c:\a.txt","",SW_SHOW);
    ShellExecuteEx(&sei);
    遍历进程:
    CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
    Process32First(hsnap,&pe32);
    Process32Next(hsnap,&pe32);
    终止进程:
    ExitProcess(0);
    TerminateProcess(hProc,0);
    打开进程:
    OpenProcess(PROCESS_ALL_ACCESS,0,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(0,size,MEM_COMMIT,PAGE_EXECUTE_READWRITE);
    VirtualAllocEx(hproc,0,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(0,0,startAddr,&para,0,&tid);
    _beginthread(startAddr,0,0);
    _beginthreadex(0,0,startAddr,0,0,&tid);
    CreateRemoteThread(hproc,0,0,func,&para,0,&tid);
    获取线程ID:
    GetCurrentThreadId();
    关闭线程句柄(减少内核对象使用次数,防止内存泄漏) :
    CloseHandle(hthread);
    挂起与激活线程(维护暂停次数):
    SuspendThread(hthread);
    ResumeThread(hthread);
    获取线程退出代码:
    GetExitCode(hthread,&code);
    等待线程退出(线程受信状态或超时):
    WaitForSignleObject(htread,1000);
    WaitForMultipleObjects(num,handles,true,INFINITE);
    遍历线程:
    CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD,0);
    Thread32First(hsnap,&mdl32);
    Thread32Next(hsnap,&mdl2);
    获取线程函数入口:
    ZwQueryInfomationThread(hthread,ThreadQuerySetWin32StartAddress,&b
    uf,4,NULL);
    打开线程
    OpenThread(THREAD_ALL_ACCESS,false,&tid);
    获取线程函数地址所属模块:
    GetMappedFileName(hproc,addr,buf,256);
    读写线程优先级:
    SetThreadPriority(hthread,Normal);
    GetThreadPriority(hthread);
    SetThreadPriorityBoost(hproc,true);
    GetThreadPriorityBoost(hproc,pBool);
    终止线程:
    ExitThread(5);
    TerminateThread(hthread,5);
    线程同步临界区对象:
    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”,0,0,REG_OPT
    ION_VOLATILE,KEY_ALL_ACCESS,0,&subkey,&state);
    打开键:
    RegCreateKeyEx(HKEY_CURRENT_USER, ”Control
    Panel ”,0,KEY_ALL_ACCESS,&subkey);
    关闭键:
    RegCloseKey(hkey);
    遍历键:
    RegEnumKeyEx(hsubkey,index,keyname,&nameSize,0,0,0,&time);
    FileTimeToSystemTime(&time,&systime);
    RegQueryInfo(hsubkey,0,0,0,&count,0,0,0,0,0,0,0);
    删除键:
    RegDeleteKeyEx(hmainkey,subkeyName);
    创建值:
    RegSetValueEx(hsubkey, ”test ”,0,REG_WORD,(BYTE*)&value,4);
    遍历值:
    RegEnumValue(hsubkey,index,name,&nameSize,0,&type,valuebuf,valueLe
    n);
    RegQueryValueEx(hsubkey,name,0,type,buf,&size);
    删除值:
    RegDeleteValue(hsubkey,valuename);
    四、文件
    创建/打开文件:
    CreateFile(“ a.txt”,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_R
    EAD,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
    设置文件指针:
    SetFilePointer(hFile,0,NULL,FILE_END);
    读写文件:
    ReadFile(hFile,buf,len,&size,0);
    WriteFile(hFile,buf,len,&size,0);
    强制文件写入磁盘,清空文件高速缓冲区:
    FlushFileuffers(hFile);
    [解]锁文件区域:
    LockFile(hFile,0,0,100,0);
    UnlockFile(hFile,0,0,100,0);
    复制文件:
    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,0);
    创建内存映射文件:
    CreateFile(“ d:\a.txt”,GENERIC_READ|GENERIC_WRITE,FILE_SHARE
    _READ,0,OPEN_EXISTI
    NG,FILE_ATTRIBUTE_NORMAL,”myMap”);
    加载内存映射文件:
    MapViewOfFile(hmap,FILE_MAP_ALL_ACCESS,0,0,0);
    打开内存映射文件:
    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,0,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,10);
    接收TCP连接请求:
    accept(sock,&addr,&len);
    客户端连接:
    connect(sock,&addr,len);
    发送TCP数据:
    send(sock,buf,len,0);
    接收TCP数据:
    recv(sock,buf,len,0);
    发送UDP数据:
    sendto(sock,buf,len,0,&addr,len);
    接收UDP数据:
    recvfrom(sock,buf,len,0,&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,0,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,0,0);
    接收消息:
    GetMessage(&msg,NULL,0,0);
    投递消息:
    PostMessage(HWND_BROADCAST,WM_LBUTTONDOWN,0,0);
    获取消息:
    PeekMessage(&msg,NULL,0,0);
    转换消息:
    TranslateMessage(&msg);
    分发消息:
    DispatchMessage(&msg);
    等待消息:
    WaitMessage();
    发送退出消息:
    PostQuitMessage(0);
    安装消息钩子:
    SetWindowsHookEx(WH_KEYBOARD,keyBoardProc,0,tid);
    卸载消息钩子:
    UnhookWindowsHookEx(hhk);
  • 相关阅读:
    solr 5.3.1安装配置
    STS 设置代码注释模板
    visual studio 设置代码注释模板
    JAXBContext处理CDATA
    用STS和Maven的方式创建一个JavaWeb项目
    .NET跨平台实践:用C#开发Linux守护进程-Daemon
    不装mono,你的.NET程序照样可以在Linux上运行!
    Tomcat关闭日志输出
    使用git pull文件时和本地文件冲突怎么办?
    Linux命令-进程后台执行:nohup(就是不挂起的意思)
  • 原文地址:https://www.cnblogs.com/a-s-m/p/12340832.html
Copyright © 2011-2022 走看看