0 Day 笔记
未读Notes for chapter one一些概念from 1.2:
静态反汇编工具汇编工具看到的PE文件中的地址都是文件偏移(文件地址),这个是文件在磁盘上存放的相对于文件开头的偏移。
装载基址:PE装载时的基地址,默认情况下(32位):
exe的装载基址:0x00400000
dll的装载基址:0x10000000
上述的基址可以通过编译选项改变
虚拟内存地址(VA):PE文件指令被装入内存后的地址(IDA之类显示的地址)。
相对虚拟地址(RVA):虚拟内存地址相对于装载基址的偏移。RVA,VA,基址存在以下的计算:
VA=RVA+Image Base
RVA和文件地址有很大的一致性,但是由于装载以后和一般存放在磁盘上内存的存放单位不同,会有差异。(P34 0x200和0x1000的区别)
文件偏移地址与虚拟内存地址之间的换算关系可以用下面的公式来计算:
文件偏移地址 = 虚拟内存地址(VA)−装载基址(Image Base)−节偏移= RVA -节偏移
上述的RVA->文件地址的计算可以用lordPE简化过程
from 1.3
ring3级别的调试(用户 ...
pwn
未读简要分析漏洞在netapi32.dll中的导出函数NetpwNameCanonicalize的子函数CanonicalizePathName中。
CanonicalizePathName函数对路径合并的后的字符进以下的一些处理:
将字符串中的”/“转化成”\”:
12345678910111213.text:5FDDA1F8 rep_slash_loop: ; CODE XREF: CanonicalizePathName+88↓j.text:5FDDA1F8 cmp word ptr [eax], 2Fh ; 将"/"转换成"\".text:5FDDA1FC jz slash_to_back_slash ; 复制"\".text:5FDDA202 slash_to_back_forward: ; CODE XREF: CanonicalizePathName+ ...
pwn
未读概述在Windows 2000 SP0平台下, vgx.dll 版本为5.0.3014.1003,文件大小为1753160字节,漏洞函数地址为0x659D7B46,用于解析VML语言的_IE5_SHADETYPE_TEXT函数,:
动态分析用于测试测试的HTML:
1234567891011121314<html xmlns:v="urn:schemas-microsoft-com:vml"> <head> <title>fortest</title> <style> <!--v\:* { behavior: url(#default#VML); }--> </style> </head> <body> <v:rect style="HEIGHT: 444pt; WIDTH: 444pt" coordsize = " ...
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 ...