· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.HELHEIM —› шифровка файлов в base64

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


Дата: Апр 27, 2004 11:20:15

прога получет файл и шифрует в base64, затем помещает текст в файл.
но не работает... в чём ошибка?


.386
.model flat, stdcall
option casemap :none
; =================================================
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\wsock32.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\wsock32.lib

.data
AppName1 db "\1.exe",0
szSFileName db "C:\11111.txt",0

.DATA?
WinDir db 1024 dup(?)
FHndl dd ?
sf dd ?
cmd dd ?
lpBuf1 db 32768 dup(?)



.code
start:
invoke WSAStartup, 1, offset lpBuf1
EncodeBuf proc uses esi edi ebx lpSrc, lpDst, Len: DWORD
mov esi, lpSrc
mov edi, lpDst
mov ecx, Len

xor eax, eax
xor ebx, ebx

@gen:
lodsb
shl eax, 8
loop @@2
shl eax, 8
jmp @@4
@@2:
lodsb
shl eax, 8
loop @@3
jmp @@4
@@3:
lodsb
dec ecx
@@4:
push ecx
push 4
pop ecx
push ecx
@@:
rol edx, 8
mov dl, al
and dl, 00111111B
shr eax, 6
loop @B

pop ecx

@edx_conv:
cmp dl, 62
jae dl_62_63
cmp dl, 51
ja digit_0_9
add dl, 'A'
cmp dl, 'Z'
jbe @F
add dl, 'a'-'Z'-1
@@:
jmp rotate_edx
digit_0_9:
add dl, 30h-52
jmp rotate_edx
dl_62_63:
sub dl, 62
shl dl, 2
add dl, 43
rotate_edx:
rol edx, 8
loop @edx_conv

xchg eax, edx
stosd
xchg eax, edx

pop ecx

; CRLF
inc ebx
inc ebx
cmp ebx, 24h
jnz @next
xor ebx, ebx
mov al, 0ah
stosb
@next:
or ecx, ecx
jnz @gen

ret
EncodeBuf endp

Sendtext proc lpMailMessage: DWORD
LOCAL hFile, bWritten: DWORD

invoke CreateFile, offset szSFileName, GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, 0, 0
mov hFile, eax
inc eax
jz @end

invoke lstrlen, lpMailMessage
mov edx, eax
invoke WriteFile, hFile, lpMailMessage, edx, addr bWritten, NULL

invoke CloseHandle, hFile
@end:
mov eax, 1
ret
Sendtext endp


invoke GetWindowsDirectory, addr WinDir, 1024
invoke lstrcat,addr WinDir,addr AppName1
invoke _lopen, addr WinDir, OF_READ
cmp eax, 4294967295
je quit
mov cmd, eax

invoke GetFileSize, cmd, NULL
mov sf, eax

invoke GlobalAlloc, 64, eax
cmp eax,0
je quit
mov FHndl, eax


invoke _lread, cmd, FHndl, sf
invoke _lclose, cmd

invoke lstrlen, FHndl
push eax
invoke EncodeBuf, FHndl, edi, eax
invoke Sendtext, edi
invoke GlobalFree, FHndl
invoke LocalFree, edi

quit:
invoke ExitProcess,eax
end start


Дата: Апр 27, 2004 11:31:20

К "вирусному оружию" прилагается исходник с перекодировкой
в басе64 и вставкой текста и представляешь даже с отсылкой
письма. Правда там всё на тасме, а в твоём коде разбираться
лениво...


Дата: Апр 27, 2004 13:12:15 · Поправил: q_q

xsnatch
Для начала перенести точку входа
...
start: 
invoke WSAStartup, 1, offset lpBuf1 ; !!! это вообще не надо.
EncodeBuf proc uses esi edi ebx lpSrc, lpDst, Len: DWORD 
...
на правильное место
...Sendtext endp 
start: ; !!! real position

invoke GetWindowsDirectory, addr WinDir, 1024 
...
Потом подумай какое значение находится в регистре edi перед
invoke EncodeBuf, FHndl, edi, eax
invoke Sendtext, edi 
...
invoke LocalFree, edi 
...

PS используй тег для оформления кода.


Дата: Апр 27, 2004 14:21:57

Спасибо! очень толковое обьяснение !:) Я попробую


Дата: Апр 27, 2004 18:16:29

Тема перемещена, т.к. свои программы дебажьте сами! А не выливайте мусор в форум


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