Windows API
拜乔布斯
文章中提到的工具或者样本可以到我的资源页面查看。
展开
-
通过BIOS信息检测虚拟机
VMware的虚拟机BIOS信息如下:代码(msdn上面有代码例子)如下,具体使用GetSystemFirmwareTable( )函数:#include <stdio.h>#include <windows.h>// 定义BIOS信息结构体struct RawSMBIOSData{ BYTE Used20CallingMethod; BYTE SMBIOSMajorVersion; BYTE SMBIOSMinorV原创 2020-06-28 18:07:46 · 1412 阅读 · 0 评论 -
枚举Window窗口、置顶、窗口对应进程
1、枚举Window窗口、获取当前激活窗口、根据窗口句柄获取获取标题栏文本#include <stdio.h>#include <Windows.h>char g_szWindowName[MAX_PATH]={0};BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam){ GetWindowTextA(hwnd,g_szWindowName,MAX_PATH); // 当前窗口是否具有WS_VISIBLE原创 2020-06-28 16:02:49 · 3537 阅读 · 0 评论 -
获取Windows指定目录的几个常用函数
直接代码+截图了#include <stdio.h>#include <Shlobj.h>#include <Windows.h>int main(){ char l_szWindowsDirectoryA[260]={0}; char l_szSystemDirectoryA[260]={0}; char l_szTempPathA[26...原创 2019-07-11 16:12:41 · 635 阅读 · 0 评论 -
Windows长短路径问题引发OD调试样本退出
样本行为:1、CopyFileA( )函数拷贝自身到C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\SQLAGENTSAK.exe下(使用的是短路径)2、CreateProcessA创建子进程,参数cmd /c ping 1.1.1.1 -n 1 -w 1000 & start C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\SQLAGE...原创 2019-06-23 19:15:54 · 536 阅读 · 0 评论 -
恶意代码常用操作:清空系统日志
后门或者远控代码常用清空系统日志来妨碍取证工作,遇到一个后门样本,代码如下:使用ebx作为计数器,做3次循环,删除3种系统日志,具体的哪3种系统日志要看上面代码的字符串赋值,如下:要清空的3种系统日志:"System"、"Security"、"Application"续一:关于ELF(Event Log File)详见《软件调试》第15章...原创 2019-06-23 18:04:37 · 312 阅读 · 0 评论 -
获取Windows系统所有用户名
使用netapi32.dll动态链接库中的NetUserEnum( )函数可以枚举系统的所有账户名,申请的内存空间使用NetApiBufferFree( )函数释放。代码如下:#include <stdio.h>#include <Windows.h>#include <lm.h>#pragma comment(lib, "netapi32.lib"...原创 2019-06-23 17:49:52 · 5385 阅读 · 0 评论 -
导出表(EAT)规则特例
GetLastError( )函数由kernel32.dll库文件导出,用ida打开找到该函数,发现没有汇编代码,只有一段字符串定义(和微软的导出表规则不太一样哦),下图:再转到ntdll.dll查找RtlGetLastWin32Error( )函数源代码,如下图:代码解释:获取TEB地址,再获取TEB偏移0x34处的4字节数据返回查看TEB结构,偏移0x34处LastErro...原创 2019-02-26 22:12:58 · 619 阅读 · 0 评论 -
GandCrab怎样识别计算机语言
2种方法:1、注册表:HKEY_CURRENT_USER\\Keyboard Layout\\Preload\\12、API检测:GetUserDefaultUILanguage( )和GetSystemDefaultUILanguage( ),遇到和它关系近的语言就规避。如图:419是俄罗斯。...原创 2019-02-26 20:52:47 · 596 阅读 · 0 评论 -
Win32窗口程序源代码、汇编代码层调试
先用VS写一个Win32的窗口程序:代码如下:#include <windows.h>/* 方便定位不同按钮,获取不同编辑框内容 */#define ID_BUTTON1 1#define ID_BUTTON2 2#define ID_EDIT1 3#define ID_EDIT2 4LRESULT CALLBACK WndProc(HWND, U...原创 2018-12-06 12:04:47 · 891 阅读 · 0 评论 -
lib链接库
最近发现一个问题:CheckSumMappedFile( )函数,如下项目中调用了CheckSumMappedFile( )函数,也加上了头文件#include <imagehlp.h>,可在生成时提示链接错误:error LNK2001: 无法解析的外部符号 __imp__CheckSumMappedFile@16后来加上了#pragma comment(lib,"ima...原创 2018-12-03 13:30:22 · 857 阅读 · 0 评论 -
内存分配粒度
使用GetSystemInfo函数可以带回一个SYSTEM_INFO结构体,这个结构体中就包含内存分配粒度(这个结构体还包含CPU数量)。内存分配粒度:就是一次分配内存的最小值;在表示堆的结构体中就是以分配粒度为基本单位来表示堆块大小;类似于磁盘管理的基本单位是簇,一个簇又是2的N次方个扇区。如下代码:#include <stdio.h>#include <Win...原创 2018-11-27 14:57:00 · 2334 阅读 · 0 评论 -
PE文件可选头结构体中的校验和
Windows操作系统中的驱动和一些系统dll文件都是有校验和的,而且Windows系统在加载时实惠检查校验和有没有发生变化,发生变化,说明文件已经被修改过(没有变化,文件可能没有修改过;也可能文件修改后,重新计算了校验和,填写到指定位置)肯定不会继续加载。CheckSumMappedFile( )函数用来计算校验和,并且带出原有校验和。例子:#include <stdio.h&g...原创 2018-11-19 14:36:32 · 694 阅读 · 0 评论 -
修改(调整)本进程权限
Windows中的普通进程是有一定权限的,想要做一些超出权限的事情,就要提权。比如关机:#include <stdio.h>#include <Windows.h>int main(){ HANDLE hToken; TOKEN_PRIVILEGES tkp; // 获取当前进程访问标记 if( OpenProcessToken(GetCurrent...原创 2018-11-12 09:25:20 · 1681 阅读 · 0 评论 -
使用文件映射视图读取文件
通常情况的文件操作使用open、read、write,除了这种方式,还可以使用文件映射视图。读取文件的前10个字节:#include <stdio.h>#include <Windows.h>int main(){ HANDLE l_hFileHandle = CreateFileA("C:\\1.pdf", GENERIC_READ, 0, NULL...原创 2018-11-10 21:54:51 · 688 阅读 · 0 评论 -
设置Windows桌面壁纸
最近发现一个API可以设置Windows系统的桌面壁纸,感觉挺好玩代码:#include <stdio.h>#include <Windows.h>int main(){ // 壁纸格式给jpg也行,不像有些地方说的非要是bmp DWORD l_dwReturn=SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0...原创 2018-11-04 12:26:25 · 3662 阅读 · 2 评论 -
获取计算机逻辑驱动器相关函数
代码:#include <stdio.h>#include <Windows.h>int main(){ DWORD l_dwLogicalDrives = GetLogicalDrives(); char s[33]={0}; itoa(l_dwLogicalDrives,s,2); printf("%s\n",s); DWORD l_dwBu...原创 2018-11-09 14:19:15 · 547 阅读 · 0 评论