|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Май 28, 2004 09:25:59 masm32 version 8.00 странно..., q_q, если не трудно, дай плиз свои include windows.inc, kernel32.inc, user32.inc |
|
|
Дата: Май 28, 2004 10:53:21 Flasher Шутишь? Они в архиве ~190K. Masm брал с MASM32 Version 8.2 Download Sites, указанные тобой файлы есть в инсталляторе. Компилятор использую версии 6.15.8803 из какого-то сервиспака к vs] и линкер пропатченый от rich. |
|
|
Дата: Май 28, 2004 13:39:49 тоже самое... А не у кого больше нету каких-нить исходников на эту тему? |
|
|
Дата: Май 28, 2004 14:16:16 · Поправил: Asterix Flasher Да, это тот исходник и ошибку он давать никик не может, вот сейчас у меня используется такой вариант, байты которые должны быть пропущены при поиске должны быть заменены нулями.
ParseBuffer PROTO :DWORD, :DWORD, :DWORD, :DWORD
.CODE
ParseBuffer proc uses ebx edi esi lpScanString:DWORD, ScanStringLength:DWORD, lpBuffer:DWORD, BufferLength:DWORD
mov edi, lpScanString
mov esi, lpBuffer
mov ecx, ScanStringLength
mov ebx, ecx
mov edx, esi
add edx, BufferLength
sub edx, ScanStringLength
inc edx
@loop:
cmp esi, edx
je @not_found
test ecx, ecx
jz @found
mov al, BYTE PTR [edi]
test al, al
jz @00h_found
cmp BYTE PTR [esi], al
je @parse
sub edi, ebx
add edi, ecx
sub esi, ebx
add esi, ecx
inc esi
mov ecx, ebx
jmp @loop
@parse:
inc edi
inc esi
dec ecx
jmp @loop
@00h_found:
inc edi
inc esi
dec ecx
jmp @loop
@not_found:
xor eax, eax
jmp @F
@found:
mov eax, esi
sub eax, ebx
sub eax, lpBuffer
@@:
ret
ParseBuffer endp
А вот так это нужно применять: invoke CreateFile, OFFSET sBuf, GENERIC_READ,\
FILE_SHARE_READ, 0, OPEN_EXISTING,\
FILE_ATTRIBUTE_NORMAL, 0
cmp eax, INVALID_HANDLE_VALUE
je @cant_open
mov hFile, eax
invoke CreateFileMapping, eax, NULL, PAGE_READONLY, 0, 0, NULL
mov hMapFile, eax
invoke MapViewOfFile, eax, FILE_MAP_READ, 0, 0, 0
mov pMemory, eax
invoke GetFileSize, hFile, NULL
mov SizeOfFile, eax
invoke ParseBuffer, OFFSET MS_Signature_1, 25, pMemory, eax
test eax, eax
jnz @found
invoke ParseBuffer, OFFSET MS_Signature_2, 25, pMemory, SizeOfFile
test eax, eax
jnz @found
invoke ParseBuffer, OFFSET MS_Signature_3, 25, pMemory, SizeOfFile
test eax, eax
jz @not_found
@found:
mov edx, eax
push ebx
mov ebx, OFFSET szBuff
add ebx, 8
mov BYTE PTR [ebx], 0
mov ecx, 4
@@:
sub ebx, 2
mov al, dl ;
aam_16
hex2ascii
xchg al, ah
hex2ascii
mov WORD PTR [ebx], ax
shr edx, 8
loop @B
invoke SetDlgItemText, hDlg, IDC_EDIT2, ebx
pop ebx
@close:
invoke UnmapViewOfFile, pMemory
invoke CloseHandle, hMapFile
mov hMapFile, 0
invoke CloseHandle, hFile |
|
|
Дата: Май 30, 2004 17:34:51 Asterix, вот так?: .486
.model flat, stdcall
option casemap :none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
ParseBuffer PROTO :DWORD, :DWORD, :DWORD, :DWORD
.data
AppName db "xz",0
sBuf db "xz.txt",0
szBuff db "tekst"
.data?
hFile dd ?
hMapFile dd ?
pMemory dd ?
SizeOfFile dd ?
MS_Signature_1 dd ?
MS_Signature_2 dd ?
MS_Signature_3 dd ?
.code
start:
@cant_open:
invoke CreateFile, OFFSET sBuf, GENERIC_READ,FILE_SHARE_READ, 0, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, 0
cmp eax, INVALID_HANDLE_VALUE
je @cant_open
mov hFile, eax
invoke CreateFileMapping, eax, NULL, PAGE_READONLY, 0, 0, NULL
mov hMapFile, eax
invoke MapViewOfFile, eax, FILE_MAP_READ, 0, 0, 0
mov pMemory, eax
invoke GetFileSize, hFile, NULL
mov SizeOfFile, eax
invoke ParseBuffer,OFFSET MS_Signature_1, 25, pMemory, eax
test eax, eax
jnz @found
invoke ParseBuffer,OFFSET MS_Signature_2, 25, pMemory, SizeOfFile
test eax, eax
jnz @found
invoke ParseBuffer,OFFSET MS_Signature_3, 25, pMemory, SizeOfFile
test eax, eax
jz @not_found
@found:
mov edx, eax
push ebx
mov ebx, OFFSET szBuff
add ebx, 8
mov BYTE PTR [ebx], 0
mov ecx, 4
@@:
sub ebx, 2
mov al, dl ;
aam_16
hex2ascii
xchg al, ah
hex2ascii
mov WORD PTR [ebx], ax
shr edx, 8
loop @B
invoke MessageBox,NULL,ebx,OFFSET AppName,MB_OK
;invoke SetDlgItemText,hWnd,IDC_HOSTON,
pop ebx
@close:
invoke UnmapViewOfFile, pMemory
invoke CloseHandle, hMapFile
mov hMapFile, 0
invoke CloseHandle, hFile
@not_found:
invoke ExitProcess,eax
end start
ParseBuffer proc uses ebx edi esi lpScanString:DWORD, ScanStringLength:DWORD, lpBuffer:DWORD, BufferLength:DWORD
mov edi, lpScanString
mov esi, lpBuffer
mov ecx, ScanStringLength
mov ebx, ecx
mov edx, esi
add edx, BufferLength
sub edx, ScanStringLength
inc edx
@loop:
cmp esi, edx
je @not_found
test ecx, ecx
jz @found
mov al, BYTE PTR [edi]
test al, al
jz @00h_found
cmp BYTE PTR [esi], al
je @parse
sub edi, ebx
add edi, ecx
sub esi, ebx
add esi, ecx
inc esi
mov ecx, ebx
jmp @loop
@parse:
inc edi
inc esi
dec ecx
jmp @loop
@00h_found:
inc edi
inc esi
dec ecx
jmp @loop
@not_found:
xor eax, eax
jmp @F
@found:
mov eax, esi
sub eax, ebx
sub eax, lpBuffer
@@:
ret
ParseBuffer endp |
|
|
Дата: Май 31, 2004 05:03:39 > Asterix, вот так? Не совсем ;-) MS_Signature_1 db 0E8h, 000h, 000h, 0FFh, 0FFh, 08Bh, 08Dh, 000h, 000h, 000h, 000h, 003h, 0C8h, 089h, 044h, 024h, 000h, 089h, 08Dh, 000h, 000h, 000h, 000h, 0FFh, 015h и т.д., но можно задать строку типа db "то_что_будем_искать" соответственно указав её длину там где у меня число 25 Это mov edx, eax
push ebx
mov ebx, OFFSET szBuff
add ebx, 8
mov BYTE PTR [ebx], 0
mov ecx, 4
@@:
sub ebx, 2
mov al, dl ;
aam_16
hex2ascii
xchg al, ah
hex2ascii
mov WORD PTR [ebx], ax
shr edx, 8
loop @B
invoke SetDlgItemText, hDlg, IDC_EDIT2, ebx
pop ebx
можно заменить на .DATA szBuff db 10 dup (0) format db "%08lX",0 .................. .CODE start: ................. push eax push OFFSET format push OFFSET szBuff call wsprintf add esp, 00Ch xor ecx, ecx invoke MessageBox, ecx, OFFSET szBuff, ecx, ecx Если файл успешно отмапился в память то метку @close нужно вызывать всегда, независимо от того найдена ли искомая строка или нет, у меня не показано т.к. в моём исходнике эти jmp'ы ведут на разные мессаги и только потом на @close |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.052 |