pwn
未读简要分析漏洞点存在为netapi32.dll中的NetpwPathCanonicalize()导出函数,NetpwPathCanonicalize()是netapi32.dll的一个导出函数,用于格式化网络路径字符串,它的原型如下:
12345678int NetpwPathCanonicalize (uint16 path[ ], // [in] path nameuint8 can_path[ ], // [out] canonicalized pathuint32 maxbuf, // [in] max size of can_pathuint16 prefix[ ], // [in] path prefixuint32* pathtype, // [in out] path typeuint32 pathflags // [in] path flags, 0 or 1);
这是一个Unicode字符串处理函数,大体功能是:如果prefix串非空,将prefix串与path串用‘\’相连,并复制到输出串can_path中,输出串的容量为maxbuf字节大小:
1can_path ...
恶意代码分析实战
未读Lab11-01简要分析程序的主要流程如下:
12345678910111213141516171819202122int __cdecl main(int argc, const char **argv, const char **envp){ HMODULE hModule; // [esp+Ch] [ebp-11Ch] CHAR Filename; // [esp+10h] [ebp-118h] char v6; // [esp+11h] [ebp-117h] char v7; // [esp+11Dh] [ebp-Bh] char *v8; // [esp+120h] [ebp-8h] LPVOID v9; // [esp+124h] [ebp-4h] v9 = 0; hModule = GetModuleHandleA(0); Filename = 0; memset(&v6, 0, 0x10Cu); v7 = 0; v9 = get_dll_401080(hModule); // //加载dll G ...
恶意代码分析实战
未读Lab12-01简要分析Lab12-01.exe首先导入了psapi.dll中的一些函数的地址EnumProcessModules,GetModuleBaseNameA以及EnumProcesses:
123456789101112131415161718.text:00401115 C7 85 E8 FE FF FF 00 00+ mov [ebp+var_118], 0.text:0040111F 68 B0 60 40 00 push offset ProcName ; "EnumProcessModules".text:00401124 68 A4 60 40 00 push offset LibFileName ; "psapi.dll".text:00401129 FF 15 24 50 40 00 call ds:LoadLibrary ...
恶意代码分析实战
未读Lab10-01静态分析查看程序的导入函数:
该程序创建一个服务,控制一个服务,启动一个服务。
存在获取程序命令行参数,写文件,载入库,内存管理等相关操作。
驱动的导入函数:
存在注册表的修改操作。
Lab10-01.exe首先调用OpenSCManagerA获取服务管理器句柄:
123456.text:00401000 sub esp, 1Ch.text:00401003 push edi.text:00401004 push 0F003Fh ; dwDesiredAccess.text:00401009 push 0 ; lpDatabaseName.text:0040100B push 0 ; lpMachineName.text:0040100D call ds:OpenSCM ...
恶意代码分析实战
未读Lab 9-1简要分析函数主体分析函数的主要流程分析如下:123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869int __cdecl main(int argc, const char **argv, const char **envp){ char v4; // [esp+10h] [ebp-181Ch] char v5; // [esp+410h] [ebp-141Ch] char v6; // [esp+810h] [ebp-101Ch] char v7; // [esp+C10h] [ebp-C1Ch] CHAR v8; // [esp+1024h] [ebp-808h] CHAR ServiceName; // [esp+1428h] [ebp-404h] const char *v10; // [esp+1828h] [ebp-4h] if ( ...
恶意代码分析实战
未读Lab7-1Q1:当计算机重启之后,这个程序如何保证它继续运行(达到持久化驻留)创建一个Malservice的服务,并且该服务具有开机自启动的权限。
主函数简单跟一下:
12345678910111213int __cdecl main(int argc, const char **argv, const char **envp){ SERVICE_TABLE_ENTRYA ServiceStartTable; // [esp+0h] [ebp-10h] int v5; // [esp+8h] [ebp-8h] int v6; // [esp+Ch] [ebp-4h] ServiceStartTable.lpServiceName = aMalservice; ServiceStartTable.lpServiceProc = createProcess_401040; v5 = 0; v6 = 0; StartServiceCtrlDispatcherA(&ServiceStartTable); return createProcess_40104 ...
恶意代码分析实战
未读Lab6-1Q1:在main函数调用的唯一子过程中发现的主要代码结构是什么?主要是对0x401000处的函数返回值进行一个if判断。
123456789101112131415161718.text:00401040 push ebp.text:00401041 mov ebp, esp.text:00401043 push ecx.text:00401044 call sub_401000.text:00401049 mov [ebp+var_4], eax.text:0040104C cmp [ebp+var_4], 0.text:00401050 jnz short loc_401056.text:00401052 xor eax, eax.text:00401054 ...