-
-
[旧帖] [求助]1个木马 0.00雪花
-
发表于: 2014-11-18 00:06 1668
-
在卡饭下了个样本,像是盗号的
查了下,没查出来,直接ida打开了,刚看了没多久,cpu就100%,任务管理器被禁用,exe都打不开,也不知道咋回事><
由于在网吧,重启了下继续分析
一些变量声明
StartupInfo= _STARTUPINFOW
ProcessInformation= _PROCESS_INFORMATION
cbData= dword
hKey= dword
CommandLine= word
FileName= byte
var_414= word
var_412= byte
Buffer= word
var_20A= byte
var_4= dword
开始代码:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 880h
mov eax, ___security_cookie
mov [ebp+var_4], eax ;栈安全码
mov ax, ds:word_1002070
push ebx
push esi
push edi
mov [ebp+Buffer], ax ;存储ds:word_1002070
xor eax, eax
mov edx, 81h
mov ecx, edx
lea edi, [ebp+var_20A] ;缓冲区清零
rep stosd
stosw
mov ax, ds:word_1002074
mov [ebp+var_414], ax
xor eax, eax
mov ecx, edx
lea edi, [ebp+var_412] ;缓冲区清零
rep stosd
stosw
xor eax, eax
mov ecx, 82h
lea edi, [ebp+FileName] ;文件名缓冲区清零
rep stosd
lea eax, [ebp+hKey] ;注册表键的句柄变量
push eax
push 20019h
xor esi, esi
push esi
push offset SubKey ; "Microsoft\Terminal Server Client"
push 80000002h
mov [ebp+cbData], 208h
call ds:__imp__RegOpenKeyExW@20
test eax, eax
jnz loc_100235B
开始初始化了几个变量,调用了RegOpenKeyExW,打开注册表的HKEY_LOCAL_MACHIN\Software\Microsoft\Terminal Server Client键
键的句柄保存在[ebp+hKey], 查了下,这是个允许远程连接的服务
调用成功跳到这里
lea eax, [ebp+cbData]
push eax
lea eax, [ebp+FileName]
push eax
push esi
push esi
push offset ValueName ; "LogFile"
push [ebp+hKey]
call ds:__imp__RegQueryValueExW@24
mov edi, eax
cmp edi, esi
jnz short loc_1002331
读注册表键的值,这里要读的文件是LogFile
这里描述下上述2个注册表相关的api
打开注册表
LONG WINAPI RegOpenKeyEx(
_In_ HKEY hKey,
_In_opt_ LPCTSTR lpSubKey,
_In_ DWORD ulOptions,
_In_ REGSAM samDesired,
_Out_ PHKEY phkResult
);
hKey: 一个打开的键的句柄,可以是返回 RegCreateKeyEx的值,或者是下列的值
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
lpSubKey: 被打开的子键名, 如果为null,hKey为上述的预定义的值
ulOptions: 一般为0,或者REG_OPTION_OPEN_LINK-->代表一个符号链接
samDesired: 被打开的访问权限, 这里是可读可执行, 20019h
phkResult: 一个变量的指针,返回被打开的键的句柄
如果成功返回0,否则返回非0
读注册表,返回与该键关联的值的类型和数据
LONG WINAPI RegQueryValueEx(
_In_ HKEY hKey, ; 被打开的句柄 hKey
_In_opt_ LPCTSTR lpValueName, ; 值的名称
_Reserved_ LPDWORD lpReserved, ; null
_Out_opt_ LPDWORD lpType, ; 返回值,类型
_Out_opt_ LPBYTE lpData, ; 返回值,数据
_Inout_opt_ LPDWORD lpcbData ; 返回lpData缓冲区中数据的大小
);
读成功跳到这里
push esi
push 80h
push 4
push esi
push esi
push 0C0000000h
lea eax, [ebp+FileName]
push eax ; lpFileName
call ds:__imp__CreateFileW@28 ; CreateFileW
cmp eax, 0FFFFFFFFh
mov ?g_hLogFile@@3PAXA, eax
jz short loc_1002329
这里打开Log文件, 设置文件指针, 然后RegCloseKey关闭键
后面几个比较跳转后,如果打开成功,输出"Log file opened by new process attach"到log文件
否则没有生成log文件
loc_100235B:
cmp ?g_hLogFile@@3PAXA, 0FFFFFFFFh ; g_hLogFile是否为-1
jz short loc_100236
loc_100236是主要的部分,有以下几个子程序
call ?DeleteTSCDesktopShortcuts
call ?DeleteTSCFromStartMenu
call ?DeleteTSCProgramFiles
call ?DeleteTSCRegKeys
call ?UninstallTSACMsi
call ?CreateProcess
开始的子程序进去看下
call ?DeleteTSCDesktopShortcuts
;
mov edi, edi
push ebp
mov ebp, esp
sub esp, 670h
mov eax, ___security_cookie
push ebx
push esi
push edi
xor ebx, ebx
or edi, 0FFFFFFFFh
cmp ?g_hLogFile@@3PAXA, edi ; g_hLogFile是否为-1
mov [ebp+var_4], eax
mov [ebp+pidl], ebx
jz short loc_1008D4A
继续判断是否有logfile文件,没有就
loc_1008D4A:
push ebx
call ds:__imp__CoInitialize@4
mov [ebp+var_670], eax
lea eax, [ebp+FileName]
push offset word_1008B0E
push eax
call _wcscpy ; 拷贝指定的文件名到FileName
pop ecx
pop ecx ; 平衡栈
lea eax, [ebp+pidl] ; 参数 一个ITEMIDLIST的指针
push eax
push 10h
push ebx
call ds:__imp__SHGetSpecialFolderLocation@12 ;取路径, C:\Documents and Settings\[user]\桌面
test eax, eax
jl loc_1008F7B
指定了文件名后,调用了SHGetSpecialFolderLocation来取桌面的根目录的路径, 成功后,pid1的值是一个ITEMIDLIST结构的指针
这个结构保存了指定的文件夹的有关信息,简单说就是每个文件夹都维护一个自己的ITEMIDLIST结构,结构体包含了所有属性,如
文件名,类型,大小,修改时间,通过id+value的形式表示, 桌面也是一个文件夹
----------------------
id value
0 file type
1 file name
;
----------------------
lea eax, [ebp+FileName]
push eax ; 接受返回的路径
push [ebp+pidl] ; pidl
call ds:__imp__SHGetPathFromIDListW@8
lea eax, [ebp+FileName]
push offset word_1008B12
push eax
call _wcscat ; 追加一个'\'到路径
lea eax, [ebp+FileName]
push eax
call _wcslen ; 算路径的长度,不包括'\0'
add esp, 0Ch ; 平衡栈
cmp ?g_hLogFile@@3PAXA, edi ; hLogFile保存的是打开的文件句柄,如果是-1,跳到loc_1008DD2,否则输出路径到logfile文件
mov esi, eax
jz short loc_1008DD2
;
loc_1008DD2:
lea eax, [ebp+FileName]
push offset word_1008B76 ; 2ah
push eax
call _wcscat ; 追加一个'*'到路径
pop ecx
pop ecx
lea eax, [ebp+FindFileData] ; WIN32_FIND_DATA结构
push eax
lea eax, [ebp+FileName]
push eax ; lpFileName
call ds:__imp__FindFirstFileW@8 ; 找该路径下所有文件
cmp eax, edi ; 失败就跳转
mov [ebp+hFindFile], eax
jz loc_1008F9E
此时的路径应该是这个样子 C:\Documents and Settings\[user]\桌面\*.*
lea eax, [ebp+FindFileData.cFileName] ; 文件名
push eax
lea eax, [ebp+FileName] ; 路径名
lea esi, [ebp+esi*2+FileName]
push eax
mov [esi], bx
call _wcscat ; 追加文件名到路径名
pop ecx
pop ecx
lea eax, [ebp+String1]
push eax
lea eax, [ebp+FileName]
push eax
call ?GetLinkFileTarget@@YGHPAG0@Z
test eax, eax
mov edi, ds:__imp__GetFileAttributesW@4 ; edi=GetFileAttributesW地址
mov ebx, ds:__imp__SetFileAttributesW@8 ; ebx=SetFileAttributesW地址
jz loc_1008F50
找到一个文件后,路径为C:\Documents and Settings\Administrator\桌面\xx.xx
然后调用一个子程序GetLinkFileTarget(void *,void *),这个子程序先创建一个com对象? 不知道干嘛用
后面查文件是否是可执行文件,是的话就继续,否则就搜索下一个文件
如果不是可执行文件
loc_1008F50:
lea eax, [ebp+FindFileData]
push eax
push [ebp+hFindFile]
call ds:__imp__FindNextFileW@8 ; FindNextFile
test eax, eax
jnz loc_1008EB3
如果是可执行文件
loc_1008E7F:
lea eax, [ebp+String1]
push eax
call edi ; GetFileAttributesW
and eax, 0FFFFFFFEh ; 去掉只读
push eax
lea eax, [ebp+String1]
push eax
call ebx ; SetFileAttributesW
cmp ?g_hLogFile@@3PAXA, 0FFFFFFFFh
jz loc_1008F43 ; 如果有logfile文件,就输出"deleteTSCDesktopShortcuts: delete shortcuts: %s"到文件中
loc_1008F43:
lea eax, [ebp+FileName]
push eax
call ds:__imp__DeleteFileW@4 ; 删除文件
然后继续遍历下一个文件,直到结束返回,里面比较蒙圈,猜是遍历路径下的文件,最后删除指定文件,其余就不分析了
返回之后,加载了2个字符串资源,并调用了?DeleteTSCFromStartMenu子程序
这次换了一个路径C:\Documents and Settings\[user]\[开始] 菜单 程序\程序\*.*,修改文件属性,然后删除文件和所有目录,
然后是这个子程序call ?DeleteTSCProgramFiles
打开键HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\Terminal Server Client, 取到键值UninstallString
然后调用wsplitpath取到其全路径,最后调用了SHFileOperation函数删除文件
lea eax, [ebp+Args]
mov [ebp+FileOp.pFrom], eax ;目录
lea eax, [ebp+FileOp]
push eax
mov [ebp+FileOp.wFunc], 3 ;删除操作,删除pFrom中指定的目录或文件
mov [ebp+FileOp.pTo], ebx
mov [ebp+FileOp.fFlags], 414h ;不弹出确认框,直接删除
call ds:__imp__SHFileOperationW@4
lea eax, [ebp+Args]
push eax ; Source
lea eax, [ebp+FullPath]
push eax ; Dest
call _wcscpy
lea eax, [ebp+Ext]
push eax ; Ext
lea eax, [ebp+Filename]
push eax ; Filename
lea eax, [ebp+Dir]
push eax ; Dir
lea eax, [ebp+Format]
push eax ; Drive
lea eax, [ebp+FullPath]
push eax ; FullPath
call __wsplitpath
lea eax, [ebp+Dir]
push eax
lea eax, [ebp+Format]
push eax ; Format
lea eax, [ebp+Args]
push offset aSS_0 ; "%s%s" ;像是%XXXXX%的目录
push eax ; String
call _swprintf
lea eax, [ebp+Args]
push eax ; Str
call _wcslen
add esp, 30h
cmp [ebp+eax*2+var_216], 5Ch
jnz short loc_10099BA
去掉指定目录%XXXXX%下的以下文件的只读,并删除 "cconman.hlp","conman.exe", "mscreate.dir", "mstsc.cnt","mstsc.exe", "mstsc.hlp","rdpdr.dll"
loc_1009A14:
push ?TSCFiles@@3PAPAGA ;offset "cconman.hlp"..
lea eax, [ebp+FileName]
push eax
mov [edi], bx
call _wcscat
pop ecx
pop ecx
lea eax, [ebp+FileName]
push eax
call ds:__imp__GetFileAttributesW@4
and eax, 0FFFFFFFEh
push eax
lea eax, [ebp+FileName]
push eax
call ds:__imp__SetFileAttributesW@8
lea eax, [ebp+FileName]
push eax
call ds:__imp__DeleteFileW@4
add esi, 4
cmp esi, 20h
jb short loc_1009A14
之后关闭注册表键,加载shlwapi.dll,调用SHDeleteKey删除键Software\Microsoft\Windows\CurrentVersion\Uninstall\Terminal Server Client的记录
最后释放shlwapi.dll
loc_1009A73: ; hKey
push [ebp+hKey]
call ds:__imp__RegCloseKey@4
push offset aShlwapi_dll ; "shlwapi.dll"
call ds:__imp__LoadLibraryW@4
mov esi, eax
cmp esi, ebx
jz short loc_1009ABF
push offset aShdeletekey ; "SHDeleteKey"
push esi
call ds:__imp__GetProcAddress@8
cmp eax, ebx
jz short loc_1009AA
后面,后面跟丢了><,大虾帮忙看看创建进程后干了什么
查了下,没查出来,直接ida打开了,刚看了没多久,cpu就100%,任务管理器被禁用,exe都打不开,也不知道咋回事><
由于在网吧,重启了下继续分析
一些变量声明
StartupInfo= _STARTUPINFOW
ProcessInformation= _PROCESS_INFORMATION
cbData= dword
hKey= dword
CommandLine= word
FileName= byte
var_414= word
var_412= byte
Buffer= word
var_20A= byte
var_4= dword
开始代码:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 880h
mov eax, ___security_cookie
mov [ebp+var_4], eax ;栈安全码
mov ax, ds:word_1002070
push ebx
push esi
push edi
mov [ebp+Buffer], ax ;存储ds:word_1002070
xor eax, eax
mov edx, 81h
mov ecx, edx
lea edi, [ebp+var_20A] ;缓冲区清零
rep stosd
stosw
mov ax, ds:word_1002074
mov [ebp+var_414], ax
xor eax, eax
mov ecx, edx
lea edi, [ebp+var_412] ;缓冲区清零
rep stosd
stosw
xor eax, eax
mov ecx, 82h
lea edi, [ebp+FileName] ;文件名缓冲区清零
rep stosd
lea eax, [ebp+hKey] ;注册表键的句柄变量
push eax
push 20019h
xor esi, esi
push esi
push offset SubKey ; "Microsoft\Terminal Server Client"
push 80000002h
mov [ebp+cbData], 208h
call ds:__imp__RegOpenKeyExW@20
test eax, eax
jnz loc_100235B
开始初始化了几个变量,调用了RegOpenKeyExW,打开注册表的HKEY_LOCAL_MACHIN\Software\Microsoft\Terminal Server Client键
键的句柄保存在[ebp+hKey], 查了下,这是个允许远程连接的服务
调用成功跳到这里
lea eax, [ebp+cbData]
push eax
lea eax, [ebp+FileName]
push eax
push esi
push esi
push offset ValueName ; "LogFile"
push [ebp+hKey]
call ds:__imp__RegQueryValueExW@24
mov edi, eax
cmp edi, esi
jnz short loc_1002331
读注册表键的值,这里要读的文件是LogFile
这里描述下上述2个注册表相关的api
打开注册表
LONG WINAPI RegOpenKeyEx(
_In_ HKEY hKey,
_In_opt_ LPCTSTR lpSubKey,
_In_ DWORD ulOptions,
_In_ REGSAM samDesired,
_Out_ PHKEY phkResult
);
hKey: 一个打开的键的句柄,可以是返回 RegCreateKeyEx的值,或者是下列的值
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
lpSubKey: 被打开的子键名, 如果为null,hKey为上述的预定义的值
ulOptions: 一般为0,或者REG_OPTION_OPEN_LINK-->代表一个符号链接
samDesired: 被打开的访问权限, 这里是可读可执行, 20019h
phkResult: 一个变量的指针,返回被打开的键的句柄
如果成功返回0,否则返回非0
读注册表,返回与该键关联的值的类型和数据
LONG WINAPI RegQueryValueEx(
_In_ HKEY hKey, ; 被打开的句柄 hKey
_In_opt_ LPCTSTR lpValueName, ; 值的名称
_Reserved_ LPDWORD lpReserved, ; null
_Out_opt_ LPDWORD lpType, ; 返回值,类型
_Out_opt_ LPBYTE lpData, ; 返回值,数据
_Inout_opt_ LPDWORD lpcbData ; 返回lpData缓冲区中数据的大小
);
读成功跳到这里
push esi
push 80h
push 4
push esi
push esi
push 0C0000000h
lea eax, [ebp+FileName]
push eax ; lpFileName
call ds:__imp__CreateFileW@28 ; CreateFileW
cmp eax, 0FFFFFFFFh
mov ?g_hLogFile@@3PAXA, eax
jz short loc_1002329
这里打开Log文件, 设置文件指针, 然后RegCloseKey关闭键
后面几个比较跳转后,如果打开成功,输出"Log file opened by new process attach"到log文件
否则没有生成log文件
loc_100235B:
cmp ?g_hLogFile@@3PAXA, 0FFFFFFFFh ; g_hLogFile是否为-1
jz short loc_100236
loc_100236是主要的部分,有以下几个子程序
call ?DeleteTSCDesktopShortcuts
call ?DeleteTSCFromStartMenu
call ?DeleteTSCProgramFiles
call ?DeleteTSCRegKeys
call ?UninstallTSACMsi
call ?CreateProcess
开始的子程序进去看下
call ?DeleteTSCDesktopShortcuts
;
mov edi, edi
push ebp
mov ebp, esp
sub esp, 670h
mov eax, ___security_cookie
push ebx
push esi
push edi
xor ebx, ebx
or edi, 0FFFFFFFFh
cmp ?g_hLogFile@@3PAXA, edi ; g_hLogFile是否为-1
mov [ebp+var_4], eax
mov [ebp+pidl], ebx
jz short loc_1008D4A
继续判断是否有logfile文件,没有就
loc_1008D4A:
push ebx
call ds:__imp__CoInitialize@4
mov [ebp+var_670], eax
lea eax, [ebp+FileName]
push offset word_1008B0E
push eax
call _wcscpy ; 拷贝指定的文件名到FileName
pop ecx
pop ecx ; 平衡栈
lea eax, [ebp+pidl] ; 参数 一个ITEMIDLIST的指针
push eax
push 10h
push ebx
call ds:__imp__SHGetSpecialFolderLocation@12 ;取路径, C:\Documents and Settings\[user]\桌面
test eax, eax
jl loc_1008F7B
指定了文件名后,调用了SHGetSpecialFolderLocation来取桌面的根目录的路径, 成功后,pid1的值是一个ITEMIDLIST结构的指针
这个结构保存了指定的文件夹的有关信息,简单说就是每个文件夹都维护一个自己的ITEMIDLIST结构,结构体包含了所有属性,如
文件名,类型,大小,修改时间,通过id+value的形式表示, 桌面也是一个文件夹
----------------------
id value
0 file type
1 file name
;
----------------------
lea eax, [ebp+FileName]
push eax ; 接受返回的路径
push [ebp+pidl] ; pidl
call ds:__imp__SHGetPathFromIDListW@8
lea eax, [ebp+FileName]
push offset word_1008B12
push eax
call _wcscat ; 追加一个'\'到路径
lea eax, [ebp+FileName]
push eax
call _wcslen ; 算路径的长度,不包括'\0'
add esp, 0Ch ; 平衡栈
cmp ?g_hLogFile@@3PAXA, edi ; hLogFile保存的是打开的文件句柄,如果是-1,跳到loc_1008DD2,否则输出路径到logfile文件
mov esi, eax
jz short loc_1008DD2
;
loc_1008DD2:
lea eax, [ebp+FileName]
push offset word_1008B76 ; 2ah
push eax
call _wcscat ; 追加一个'*'到路径
pop ecx
pop ecx
lea eax, [ebp+FindFileData] ; WIN32_FIND_DATA结构
push eax
lea eax, [ebp+FileName]
push eax ; lpFileName
call ds:__imp__FindFirstFileW@8 ; 找该路径下所有文件
cmp eax, edi ; 失败就跳转
mov [ebp+hFindFile], eax
jz loc_1008F9E
此时的路径应该是这个样子 C:\Documents and Settings\[user]\桌面\*.*
lea eax, [ebp+FindFileData.cFileName] ; 文件名
push eax
lea eax, [ebp+FileName] ; 路径名
lea esi, [ebp+esi*2+FileName]
push eax
mov [esi], bx
call _wcscat ; 追加文件名到路径名
pop ecx
pop ecx
lea eax, [ebp+String1]
push eax
lea eax, [ebp+FileName]
push eax
call ?GetLinkFileTarget@@YGHPAG0@Z
test eax, eax
mov edi, ds:__imp__GetFileAttributesW@4 ; edi=GetFileAttributesW地址
mov ebx, ds:__imp__SetFileAttributesW@8 ; ebx=SetFileAttributesW地址
jz loc_1008F50
找到一个文件后,路径为C:\Documents and Settings\Administrator\桌面\xx.xx
然后调用一个子程序GetLinkFileTarget(void *,void *),这个子程序先创建一个com对象? 不知道干嘛用
后面查文件是否是可执行文件,是的话就继续,否则就搜索下一个文件
如果不是可执行文件
loc_1008F50:
lea eax, [ebp+FindFileData]
push eax
push [ebp+hFindFile]
call ds:__imp__FindNextFileW@8 ; FindNextFile
test eax, eax
jnz loc_1008EB3
如果是可执行文件
loc_1008E7F:
lea eax, [ebp+String1]
push eax
call edi ; GetFileAttributesW
and eax, 0FFFFFFFEh ; 去掉只读
push eax
lea eax, [ebp+String1]
push eax
call ebx ; SetFileAttributesW
cmp ?g_hLogFile@@3PAXA, 0FFFFFFFFh
jz loc_1008F43 ; 如果有logfile文件,就输出"deleteTSCDesktopShortcuts: delete shortcuts: %s"到文件中
loc_1008F43:
lea eax, [ebp+FileName]
push eax
call ds:__imp__DeleteFileW@4 ; 删除文件
然后继续遍历下一个文件,直到结束返回,里面比较蒙圈,猜是遍历路径下的文件,最后删除指定文件,其余就不分析了
返回之后,加载了2个字符串资源,并调用了?DeleteTSCFromStartMenu子程序
这次换了一个路径C:\Documents and Settings\[user]\[开始] 菜单 程序\程序\*.*,修改文件属性,然后删除文件和所有目录,
然后是这个子程序call ?DeleteTSCProgramFiles
打开键HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\Terminal Server Client, 取到键值UninstallString
然后调用wsplitpath取到其全路径,最后调用了SHFileOperation函数删除文件
lea eax, [ebp+Args]
mov [ebp+FileOp.pFrom], eax ;目录
lea eax, [ebp+FileOp]
push eax
mov [ebp+FileOp.wFunc], 3 ;删除操作,删除pFrom中指定的目录或文件
mov [ebp+FileOp.pTo], ebx
mov [ebp+FileOp.fFlags], 414h ;不弹出确认框,直接删除
call ds:__imp__SHFileOperationW@4
lea eax, [ebp+Args]
push eax ; Source
lea eax, [ebp+FullPath]
push eax ; Dest
call _wcscpy
lea eax, [ebp+Ext]
push eax ; Ext
lea eax, [ebp+Filename]
push eax ; Filename
lea eax, [ebp+Dir]
push eax ; Dir
lea eax, [ebp+Format]
push eax ; Drive
lea eax, [ebp+FullPath]
push eax ; FullPath
call __wsplitpath
lea eax, [ebp+Dir]
push eax
lea eax, [ebp+Format]
push eax ; Format
lea eax, [ebp+Args]
push offset aSS_0 ; "%s%s" ;像是%XXXXX%的目录
push eax ; String
call _swprintf
lea eax, [ebp+Args]
push eax ; Str
call _wcslen
add esp, 30h
cmp [ebp+eax*2+var_216], 5Ch
jnz short loc_10099BA
去掉指定目录%XXXXX%下的以下文件的只读,并删除 "cconman.hlp","conman.exe", "mscreate.dir", "mstsc.cnt","mstsc.exe", "mstsc.hlp","rdpdr.dll"
loc_1009A14:
push ?TSCFiles@@3PAPAGA ;offset "cconman.hlp"..
lea eax, [ebp+FileName]
push eax
mov [edi], bx
call _wcscat
pop ecx
pop ecx
lea eax, [ebp+FileName]
push eax
call ds:__imp__GetFileAttributesW@4
and eax, 0FFFFFFFEh
push eax
lea eax, [ebp+FileName]
push eax
call ds:__imp__SetFileAttributesW@8
lea eax, [ebp+FileName]
push eax
call ds:__imp__DeleteFileW@4
add esi, 4
cmp esi, 20h
jb short loc_1009A14
之后关闭注册表键,加载shlwapi.dll,调用SHDeleteKey删除键Software\Microsoft\Windows\CurrentVersion\Uninstall\Terminal Server Client的记录
最后释放shlwapi.dll
loc_1009A73: ; hKey
push [ebp+hKey]
call ds:__imp__RegCloseKey@4
push offset aShlwapi_dll ; "shlwapi.dll"
call ds:__imp__LoadLibraryW@4
mov esi, eax
cmp esi, ebx
jz short loc_1009ABF
push offset aShdeletekey ; "SHDeleteKey"
push esi
call ds:__imp__GetProcAddress@8
cmp eax, ebx
jz short loc_1009AA
后面,后面跟丢了><,大虾帮忙看看创建进程后干了什么
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法
赞赏
谁下载
看原图
赞赏
雪币:
留言: