плиз помогите разобраться в написание криптора ,исходники по адресу http://webfile.ru/4339401 при компиляции выдает следующею ошибку or [edi].characteristics,80000000h ;can write ,а когда убераю эту строку компелит но крипт после не криптует,(исходники с wasm.ru). для себя для изучения сорцов
Начал изучать ассемблер по книге Крупника и столкнулся с проблемой. Написал программу: Затем, смотрю через OllyDbg как оно работает... Но при запуске, через Олли, программа не закрывается, а отладчик пишет: "Process terminated, exit code 5" Что это значит? P.S. Знаю, что вопрос глупый...
Jino, это значит, что программа завершилась, а 5 - код возврата to SEKTOR3A, не нашел такой строки в коде, попробуй напиши название поля структуры с большой буквы, т.е. Characteristics
сори в сорцах сам изменил код да забыл код на место поставить вот оригинал исходник скачать http://webfile.ru/4340200 ну всеровно ошибка в этих строках or [edi].characteristics,80000000h ;can write тем кому не знает отредактировать путь k mz_procs.inc и бантик часть кода ;////////////////////////////////// ;// Crypt C0de // ;////////////////////////////////// pushad invoke GetTickCount invoke nseed,eax invoke nrandom,255 mov dwCryptKey,al mov esi,pFileHeader assume esitr IMAGE_FILE_HEADER mov cx,[esi].NumberOfSections mov edi,pSectionTable assume editr IMAGE_SECTION_HEADER .while cx != 0 invoke CanCrypt,pPE,edi test eax,eax jnz @F or [edi].characteristics,80000000h ;can write lea ebx,[edi].PointerToLinenumbers mov word ptr [ebx],Sign mov edx,[edi].PointerToRawData add edx,hMap xor eax,eax .while eax <= [edi].SizeOfRawData push eax mov ah,dwCryptKey xor byte ptr [edx],ah pop eax inc eax inc edx .endw
Jino какое окно? Я так понимаю, ты говоришь про окно отладчика, так оно и не должно закрываться... to SEKTOR3A, я ж написал в своем посте - напиши Characteristics (название данного поля структуры IMAGE_SECTION_HEADER пишется с большой буквы)
спасиб,вот еще вопрос собрал с кусков программку и решил сделать жойнер,но при компиляции выдает такую ошибку RT_VERSION,versions а если убераю эту строку то выкидывает на ресурсы и выдает вот что dd type,80000000h+label-root@resource подправьте плиз сам код PHP: format PE GUI 4.0 entry start include 'include\win32a.inc' IDD_DLG1= 1000 IDC_EDT1= 1001 IDC_BTN1= 1002 IDC_BTN2= 1003 IDC_EDT2= 1004 IDC_GRP1= 1005 IDC_GRP2= 1006 IDC_BTN3= 1007 IDC_BTN5= 1009 IDC_BTN4= 1008 IDR_PICT= 1010 section '.data' data readable writeable hInstance dd ? hIc dd ? fOneBf rb 129h fTwoBf rb 129h outBuf rb 129h file_one_opn OPENFILENAME sizeof.OPENFILENAME,0,0,FileFltr,0,0,1,fOneBf,127,0,0,0,0,0,0,0,0,0,0,0 file_two_opn OPENFILENAME sizeof.OPENFILENAME,0,0,FileFltr,0,0,1,fTwoBf,127,0,0,0,0,0,0,0,0,0,0,0 fout OPENFILENAME sizeof.OPENFILENAME,0,0,exefiltr,0,0,1,outBuf,127,0,0,0,0,0,0,0,0,0,0,0 FileFltr db 'All files',0,'*.*',0,0 exefiltr db 'EXE files',0,'*.EXE',0,0 error db 'ERROR',0 fnf db "Patch is not set!",0 outName db 'Joined.exe',0 finished db 'Finished',0 crok db 'Created successfully!',0 fnfon db 'File not found!',0 unkn db 'Processing error',0 cantop db "Can't open file.",0 cantcr db "Can't create file!",0 Inf db 'Information',0 filalr db 'File already exists. Replace?',0 about db 'About',0 aboutd db '================================',0dh,0ah db '=========[ version 0.1 ]=========',0dh,0ah db '========[......... ]========',0dh,0ah db '=======[ ........... ]=======',0dh,0ah db '================================',0 fHandle1 dd ? fHandle2 dd ? fs1 dd ? fs2 dd ? fPone dd ? fPtwo dd ? cread dd ? cwritten dd ? hFileOut dd ? hRes dd ? hFnRes dd ? ResSz dd ? pModule dd ? hRES dd ? section '.code' code readable executable start: invoke GetModuleHandle,0 mov [hInstance],eax mov [hIc],eax invoke LoadIcon,[hInstance],17 invoke DialogBoxParam,[hInstance],1000,HWND_DESKTOP,DialogProc,0 invoke ExitProcess,0 jmp finish proc DialogProc hwnd,msg,wparam,lparam push ebx esi edi cmp [msg],WM_INITDIALOG je intd cmp [msg],WM_CLOSE je wmclose cmp [msg],WM_COMMAND je goi cmp [msg],WM_INITDIALOG je intd xor eax,eax jmp finish intd: invoke SendMessage,[hwnd],WM_SETICON,0,[hIc],ICON_SMALL,eax jmp finish goi: cmp [wparam],BN_CLICKED shl 16 + 1002 je file_one_open cmp [wparam],BN_CLICKED shl 16 + 1003 je file_two_open cmp [wparam],BN_CLICKED shl 16 + 1009 je wmclose cmp [wparam],BN_CLICKED shl 16 + 1007 je build cmp [wparam],BN_CLICKED shl 16 + 1008 je abd jmp finish abd: invoke MessageBox,HWND_DESKTOP,aboutd,about,MB_OK jmp finish file_one_open: invoke RtlZeroMemory,fOneBf,128h invoke GetOpenFileName,file_one_opn cmp eax,0 je NoSelFo invoke SetDlgItemText,[hwnd],1001,fOneBf,128h NoSelFo: jmp finish file_two_open: invoke RtlZeroMemory,fTwoBf,128h invoke GetOpenFileName,file_two_opn cmp eax,0 je NoSelFt invoke SetDlgItemText,[hwnd],1004,fTwoBf,128h NoSelFt: jmp finish build: cmp dword[fOneBf],0 jne f1ok invoke MessageBox,HWND_DESKTOP,fnf,error,MB_OK+MB_ICONWARNING jmp finish f1ok: cmp dword[fOneBf],0 jne f2ok invoke MessageBox,HWND_DESKTOP,fnf,error,MB_OK+MB_ICONWARNING jmp finish f2ok: invoke RtlZeroMemory,fOneBf,128h invoke RtlZeroMemory,fTwoBf,128h invoke GetDlgItemText,[hwnd],1001,fOneBf,128h invoke GetDlgItemText,[hwnd],1004,fTwoBf,128h ;\\\\\\\\\\\\\\\\\\\\\\\\\\\ mov [fHandle1],0 invoke CreateFile,fOneBf,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0 cmp eax,INVALID_HANDLE_VALUE je fErrorO mov [fHandle1],eax invoke GetFileSize,eax,fs1 mov [fs1],eax ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\ mov [fHandle2],0 invoke CreateFile,fTwoBf,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0 cmp eax,INVALID_HANDLE_VALUE je fErrorO mov [fHandle2],eax invoke GetFileSize,eax,fs2 mov [fs2],eax ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\ invoke GlobalAlloc,GPTR,[fs1] mov [fPone],eax invoke GlobalAlloc,GPTR,[fs2] mov [fPtwo],eax invoke ReadFile,[fHandle1],[fPone],[fs1],cread,NULL invoke ReadFile,[fHandle2],[fPtwo],[fs2],cread,NULL invoke CloseHandle,[fHandle1] invoke CloseHandle,[fHandle2] ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\ invoke lstrcpy,[fout.lpstrFile],outName _@next: invoke GetSaveFileName,fout cmp eax,0 je finish invoke CreateFile,outBuf,GENERIC_WRITE or GENERIC_READ,FILE_SHARE_READ or FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL cmp eax,INVALID_HANDLE_VALUE jne @next invoke MessageBox,HWND_DESKTOP,cantcr,error,MB_OK+MB_ICONERROR jmp finish @next: mov [hFileOut],eax invoke FindResource,[hInstance],5000,RT_RCDATA mov [hFnRes],eax invoke LoadResource,[hInstance],eax mov [hRes],eax invoke SizeofResource,[hInstance],[hFnRes] mov [ResSz],eax invoke LockResource,[hRes] mov [pModule],eax invoke WriteFile,[hFileOut],[pModule],[ResSz],cwritten,FALSE cmp eax,0 je error invoke SetFilePointer,[hFileOut],400h,0,FILE_BEGIN stdcall get_file_name,fOneBf invoke WriteFile,[hFileOut],ebx,32h,cwritten,FALSE invoke SetFilePointer,[hFileOut],432h,0,FILE_BEGIN stdcall get_file_name,fTwoBf invoke WriteFile,[hFileOut],ebx,32h,cwritten,FALSE invoke CloseHandle,[hFileOut] ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ invoke BeginUpdateResource,outBuf,FALSE cmp eax,0 je Error mov [hRES],eax invoke UpdateResource,[hRES],RT_RCDATA,2001,0,[fPone],[fs1] invoke UpdateResource,[hRES],RT_RCDATA,2002,0,[fPtwo],[fs2] invoke EndUpdateResource,[hRES],FALSE invoke MessageBox,HWND_DESKTOP,crok,finished,MB_OK+MB_ICONINFORMATION invoke GlobalFree,[fPone] invoke GlobalFree,[fPtwo] jmp finish fErrorO: cmp [fHandle1],0 je fhcl invoke CloseHandle,[fHandle1] fhcl: cmp [fHandle2],0 je fh2cl invoke CloseHandle,[fHandle2] fh2cl: invoke GetLastError cmp eax,2 jne @2ok invoke MessageBox,HWND_DESKTOP,fnfon,error,MB_OK+MB_ICONWARNING jmp finish @2ok: invoke MessageBox,HWND_DESKTOP,cantop,error,MB_OK+MB_ICONWARNING jmp finish Error: invoke MessageBox,HWND_DESKTOP,unkn,error,MB_OK+MB_ICONERROR jmp finish wmclose: invoke EndDialog,[hwnd],0 finish: pop edi esi ebx ret endp proc get_file_name bf mov eax,[bf] invoke lstrlen,eax mov ebx,[bf] add ebx,eax @_@next: dec ebx cmp byte[ebx],'\' jne @_@next inc ebx ret endp section '.idata' import data readable writeable library kernel32,'KERNEL32.DLL',\ user32,'USER32.DLL',\ COMDLG32,'COMDLG32.dll' include 'include\api\kernel32.inc' include 'include\api\user32.inc' import COMDLG32,\ GetOpenFileName,'GetOpenFileNameA',\ GetSaveFileName,'GetSaveFileNameA' section '.rsrc' resource data readable IDR_PICT = 27 directory RT_DIALOG,dialogs,\ RT_BITMAP,bitmaps,\ RT_ICON,icons,\ RT_GROUP_ICON,group_icons,\ RT_RCDATA,rdata resource icons,\ 1,LANG_NEUTRAL,icon_data resource group_icons,\ 17,LANG_NEUTRAL,main_icon resource versions,\ 2,LANG_ENGLISH+SUBLANG_DEFAULT,version resource bitmaps,\ IDR_PICT,LANG_NEUTRAL,pict resource dialogs,\ 1000,LANG_ENGLISH+SUBLANG_DEFAULT,dialog0 dialog dialog0,'Senator version 0.1 ',10,20,213,240,WS_VISIBLE+WS_POPUP+WS_CAPTION+WS_SYSMENU+DS_CENTER+DS_MODALFRAME dialogitem "Edit","",IDC_EDT1,24,10,188,10,WS_CHILD OR WS_VISIBLE OR WS_TABSTOP OR ES_AUTOHSCROLL,WS_EX_CLIENTEDGE dialogitem "Edit","",IDC_EDT2,24,32,188,10,WS_CHILD OR WS_VISIBLE OR WS_TABSTOP OR ES_AUTOHSCROLL,WS_EX_CLIENTEDGE dialogitem "Button","+++",IDC_BTN1,6,10,15,9,WS_CHILD or WS_VISIBLE or WS_TABSTOP dialogitem "Button","+++",IDC_BTN2,6,32,15,9,WS_CHILD or WS_VISIBLE or WS_TABSTOP dialogitem "Button","File 2",IDC_GRP1,2,24,232,22,WS_CHILD or WS_VISIBLE or BS_GROUPBOX dialogitem "Button","File 1",IDC_GRP2,2,1,232,22,WS_CHILD or WS_VISIBLE or BS_GROUPBOX dialogitem "Button","Crypt",IDC_BTN3,10,48,54,15,WS_CHILD or WS_VISIBLE or WS_TABSTOP dialogitem "Button","Exit",IDC_BTN5,152,48,58,15 ,WS_CHILD or WS_VISIBLE or WS_TABSTOP dialogitem "Button","About",IDC_BTN4,86,48,56,15 ,WS_CHILD or WS_VISIBLE or WS_TABSTOP dialogitem 'STATIC',IDR_PICT,1,1,99,0,1,WS_VISIBLE+SS_BITMAP enddialog bitmap pict,'map.bmp' icon main_icon,icon_data,'611.ico' versioninfo version,VOS__WINDOWS32,VFT_APP,VFT2_UNKNOWN,LANG_ENGLISH+SUBLANG_DEFAULT,0,\ 'FileDescription','Bitmap example',\ 'LegalCopyright',<'Copyright ',0A9h,' BarMentaLisk 2009'>,\ 'FileVersion','0.1',\ 'ProductVersion','0.1',\ 'OriginalFilename','bmp_example'
А после RT_VERSION,versions запятую или обратный слеш не пропустил? А висходнике именно так Code: LANG_E NGLISH
а ты сам пробовал скомпелировать, исходник я уже 10 раз изменил под себя ,а оригинальный исходник рабочий это я сам типо вписал сам вот эти коды и он перестал работать PHP: section '.idata' import data readable writeable library kernel32,'KERNEL32.DLL',\ user32,'USER32.DLL',\ COMDLG32,'COMDLG32.dll' include 'includeapikernel32.inc' include 'includeapiuser32.inc' import COMDLG32,\ GetOpenFileName,'GetOpenFileNameA',\ GetSaveFileName,'GetSaveFileNameA' section '.rsrc' resource data readable IDR_PICT = 27 directory RT_DIALOG,dialogs,\ RT_BITMAP,bitmaps,\ RT_ICON,icons,\ RT_GROUP_ICON,group_icons,\ RT_RCDATA,rdata resource icons,\ 1,LANG_NEUTRAL,icon_data resource group_icons,\ 17,LANG_NEUTRAL,main_icon resource versions,\ 2,LANG_ENGLISH+SUBLANG_DEFAULT,version resource bitmaps,\ IDR_PICT,LANG_NEUTRAL,pict resource dialogs,\ 1000,LANG_ENGLISH+SUBLANG_DEFAULT,dialog0 PHP: bitmap pict,'map.bmp' icon main_icon,icon_data,'611.ico' versioninfo version,VOS__WINDOWS32,VFT_APP,VFT2_UNKNOWN,LANG_E NGLISH+SUBLANG_DEFAULT,0,\ 'FileDescription','Bitmap example',\ 'LegalCopyright',<'Copyright ',0A9h,' BarMentaLisk 2009'>,\ 'FileVersion','0.1',\ 'ProductVersion','0.1',\ 'OriginalFilename','bmp_example PHP: intd: invoke SendMessage,[hwnd],WM_SETICON,0,[hIc],ICON_SMALL,eax jmp finish PHP: mov [hInstance],eax эти строки кода были добавлены мной, оригинальный исходник в полном рабочем состоянии ,хотел добавит картинку в деологовое окно да не вышло. --------------------------------------------------- и еще по первому посту к fluffylion (название данного поля структуры IMAGE_SECTION_HEADER пишется с большой буквы В исходниках так и есть с большой буквы но не выходит не по первому моему вопросу не по второму,спс
Нет, когда начинаешь смотреть Олей программу открывается окно консольного приложения - оно не закрывается... так и должно быть?
Люди добрые обьясните как компилить в masm последней версии открываю простейший проэкт из папки tutorial , жмякаю project -> built_all и ввижу в коммандной строке Code: Microsoft (R) Macro Assembler Version 6.14.8444 Copyright (C) Microsoft Corp 1981-1997. All rights reserved. Assembling: C:\masm32\tutorial\console\demo1\hello.asm Microsoft (R) Incremental Linker Version 5.12.8078 Copyright (C) Microsoft Corp 1992-1998. All rights reserved. LINK : fatal error LNK1181: cannot open input file "C:\masm32\tutorial\console\d emo1\hello.obj" _ Link error Для продолжения нажмите любую клавишу . . .
Code: C:\Masm32\Bin\ML.EXE /c /coff /Cp /nologo /I"C:\Masm32\Include" "hello.asm" C:\Masm32\Bin\LINK.EXE /SUBSYSTEM:WINDOWS /RELEASE /VERSION:4.0 /LIBPATH:"C:\Masm32\Lib" /OUT:"hello.exe" "hello.obj" Создай батник в папке с hello.asm. Если не получается тогда не знаю. У тебя похоже не создается .obj файл. Возможно ошибки в коде.
вычислить сумму чисел меньше 6 Code: data segment max dw ? mass dw 1,14,4,9,5,21,3,17,12,100 data ends code segment assume cs: code, ds: data start: mov ax, data mov ds, ax ; Загрузить сегментный адрес данных lea bx, mass ; Загрузить адрес смещения массива mov cx, 10 ; Установить счетчик повторений цикла mov ax, 6; Первый элемент массива в Аккумулятор beg: cmp [bx],ax ; Сравнить текущий элемент ; массива с максимальным jg no ; он больше add dx, [bx] ; сумма no: inc bx inc bx ; Следующий элемент ; массива loop beg quit: mov ax,4C00h ; Код завершения 0 int 21h ; Выход в DOS code ends end start подскажите пожалуйста как сделать что бы работало в байте ?
wm2, что значит в байте?Ты имеешь в виду чтобы программа работала с переменными, размерностью в байт, а не слово?
Code: data segment mass db 1,14,4,9,5,21,3,17,12,100 data ends code segment assume cs: code, ds: data start: mov ax, data mov ds, ax ; Загрузить сегментный адрес данных xor dx, dx; обнулим сумму lea bx, mass ; Загрузить адрес смещения массива mov cx, 10 ; Установить счетчик повторений цикла mov al, 6; Первый элемент массива в Аккумулятор beg: cmp [bx],al ; Сравнить текущий элемент ; массива с максимальным jg no ; он больше add dx, byte [bx] ; сумма no: inc bx ; Следующий элемент ; массива loop beg quit: mov ax,4C00h ; Код завершения 0 int 21h ; Выход в DOS code ends end start
Code: data segment mass db 1,14,4,9,5,21,3,17,12,100 data ends code segment assume cs:code, ds:data start: mov ax, data mov ds, ax ; Загрузить сегментный адрес данных lea bx, mass ; Загрузить адрес смещения массива mov cx, 10 ; Установить счетчик повторений цикла mov al, 6 ; Первый элемент массива в Аккумулятор xor dx, dx beg: cmp byte [bx], al ; Сравнить текущий элемент массива с максимальным jg no ; он больше add dl, byte [bx] ; сумма jnc no ; если сумма укладывается в размерность байт, то переход на no adc dh, 0 ; иначе корректируем сумму no: inc bx ; Следующий элемент массива loop beg quit: mov ax, 4C00h ; Код завершения 0 int 21h ; Выход в DOS code ends end start может где ошибся, не тестировал