Eugene
Лучшая IDE — Far Manager 😁
­
Лучшая IDE — winhex.
Eugene
Или Hiew :)
dukeBarman
Не, он себя раскрывает именно в связке с far :))
Anonymous
самое лучшее это far + sasm
Aiwan \ (•◡•) / _bot
самое лучшее это far + sasm
а sasm каким боком?
Anonymous
Хорошая ide
Anonymous
Даже отличная
Aiwan \ (•◡•) / _bot
Даже отличная
а радасм тогда как охарактеризуешь?
Anonymous
Не знаю такое
Aiwan \ (•◡•) / _bot
Не знаю такое
ты точно на асме пишешь?
Anonymous
Глупые вопросы
Aiwan \ (•◡•) / _bot
Глупые вопросы
тогда скажи, есть ли какая нибудь иде полностью написанная на асме?
Anonymous
тогда скажи, есть ли какая нибудь иде полностью написанная на асме?
Есть но зачем тебе это мы говорим про то где удобно писать на асме
Anonymous
А не из чего она сделана вопрос не в пафосе а в удобстве
Ask
радасм имхо удобнее, и редакто ресурсов есть для любителей)
Ask
а если писать раз в год проект с 1 файлом то и сасма хватит)
R
привет
R
пишу переключение контекста, после iret вообще все прерывания перестают работать
R
что это?почему так
R
если подробнее : есть обработчик прерывания таймера, он вызывает функцию schedule а она в свою очередь вызывает переключение контекста
R
контекст один раз переключается с главного потока ядра на второй поток и на нем так и остается тк больше вообще никакие прерывания не работают((
Eugene
Если это прерывание от таймера (IRQ0), неплохо бы EOI послать PIC-у.
R
Если это прерывание от таймера (IRQ0), неплохо бы EOI послать PIC-у.
да, у меня от таймера. Послать EOI до iret ? Или вместо?
Ask
до
R
спс попробую отпишу как что
Anonymous
Кто знаком с winapi почему я не прочитал mbr?
Anonymous
format PE use32 include 'C:\fasm\INCLUDE\win32ax.inc' section '.bss' readable writable HMBR rd 1 buf rb 512 var1 rd 1 count1 rb 1 bytesread rd 1 section '.text' readable executable entry _start filename db '\\\\.\\PhysicalDrive0',0 error_read db '[-] Error read MBR',0x0a,0x00 complete_read db '[+] Complete read mbr',0x0a,'[*] MBR: ',0x00 msg db '%002X ',0x00 _start: invoke CreateFile,filename, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0 cmp eax,0x00 jz error_open mov dword ptr HMBR,eax invoke SetFilePointer,HMBR,0x00,0x00,FILE_BEGIN invoke ReadFile,HMBR,buf,512,bytesread,0x00 cmp eax,0x00 jz Comp_read invoke printf,error_read jmp near return Comp_read: invoke printf,complete_read cld lea esi,[buf] mov ecx,512 mov byte ptr count1,0x00 .lp: lodsb movzx eax,al mov dword [var1],eax cmp byte ptr count1,0x0c jnz .continue mov byte ptr count1,0x00 invoke putchar,0x0a .continue: inc byte ptr count1 mov eax,dword [var1] cinvoke printf,msg,eax loop .lp error_open: jmp short continue error_open_msg db '[-] Error open PhysicalDriver0',0x0a,0x00 continue: invoke printf,error_open_msg jmp short @f return: invoke CloseHandle,HMBR @@: invoke ExitProcess,0x00 section '.code' import data readable executable library Kernel32,'Kernel32.dll',\ msvcrt,'msvcrt.dll',\ user32,'user32.dll' import Kernel32,\ ExitProcess,'ExitProcess',\ CreateFile,'CreateFileA',\ CloseHandle,'CloseHandle',\ ReadFile,'ReadFile',\ WriteFile,'WriteFile',\ SetFilePointer,'SetFilePointer' import msvcrt,printf,'printf',putchar,'putchar'
Eugene
А ты от админа запускаешь прогу?
Anonymous
Да
Anonymous
Вот такой результат
Anonymous
00 00 00 58 30 00 00 00 00 00 00 00 00 00 00 3C 30 00 00 70 30 00 00 D0 30 00 00 00 00 00 00 00 00 00 00 4A 30 00 00 DC 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4B 65 72 6E 65 6C 33 32 2E 64 6C 6C 00 00 6D 73 76 63 72 74 2E 64 6C 6C 00 00 00 00 88 30 00 00 96 30 00 00 A4 30 00 00 B2 30 00 00 BE 30 00 00 00 00 00 00 F0 58 D6 75 A0 3E D6 75 50 3C D6 75 30 42 D6 75 C0 42 D6 75 00 00 00 00 00 00 45 78 69 74 50 72 6F 63 65 73 73 00 00 00 43 72 65 61 74 65 46 69 6C 65 41 00 00 00 43 6C 6F 73 65 48 61 6E 64 6C 65 00 00 00 52 65 61 64 46 69 6C 65 00 00 00 00 53 65 74 46 69 6C 65 50 6F 69 6E 74 65 72 00 00 E8 30 00 00 F2 30 00 00 00 00 00 00 70 4F 56 75 E0 3C 56 75 00 00 00 00 00 00 70 72 69 6E 74 66 00 00 00 00 70 75 74 63 68 61 72 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0
Anonymous
5C 5C 5C 5C 2E 5C 5C 50 68 79 73 69 63 61 6C 44 72 69 76 65 30 00 5B 2D 5D 20 45 72 72 6F 72 20 72 65 61 64 20 4D 42 52 0A 00 5B 2B 5D 20 43 6F 6D 70 6C 65 74 65 20 72 65 61 64 20 6D 62 72 0A 5B 2A 5D 20 4D 42 52 3A 20 00 25 30 30 32 58 20 00 6A 00 6A 00 6A 03 6A 00 6A 01 68 00 00 00 80 68 00 20 40 00 FF 15 74 30 40 00 83 F8 00 0F 84 A2 00 00 00 A3 00 10 40 00 6A 00 6A 00 6A 00 68 00 10 40 00 FF 15 80 30 40 00 6A 00 68 09 12 40 00 68 00 02 00 00 68 04 10 40 00 68 00 10 40 00 FF 15 7C 30 40 00 83 F8 00 74 10 68 16 20 40 00 FF 15 DC 30 40 00 E9 8A 00 00 00 68 2A 20 40 00 FF 15 DC 30 40 00 FC 8D 35 04 10 40 00 B9 00 02 00 00 C6 05 08 12 40 00 00 AC 0F B6 C0 A3 04 12 40 00 80 3D 08 12 40 00 0C 75 0F C6 05 08 12 40 00 00 6A 0A FF 15 E0 30 40 00 FE 05 08 12 40 00 A1 04 12 40 00 50 68 4A 20 40 00 FF 15 DC 30 40 00 83 C4 08 E2 C3 EB 20 5B 2D 5D 20 45 72 72 6F 72 20 6F 70 65 6E 20 50 68 79 73 69 63 61 6C 44 72 69 76 65 72 30 0A 00 68 18 21 40 00 FF 15 DC 30 40 00 EB 0B 68 00 10 40 00 FF 15 78 30 40 00 6A 00 FF 15 70 30 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Anonymous
Вот нету здесь 0x55aa
Eugene
А результат функция-то какой возвращает?
s54820
format PE use32 include 'C:\fasm\INCLUDE\win32ax.inc' section '.bss' readable writable HMBR rd 1 buf rb 512 var1 rd 1 count1 rb 1 bytesread rd 1 section '.text' readable executable entry _start filename db '\\\\.\\PhysicalDrive0',0 error_read db '[-] Error read MBR',0x0a,0x00 complete_read db '[+] Complete read mbr',0x0a,'[*] MBR: ',0x00 msg db '%002X ',0x00 _start: invoke CreateFile,filename, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0 cmp eax,0x00 jz error_open mov dword ptr HMBR,eax invoke SetFilePointer,HMBR,0x00,0x00,FILE_BEGIN invoke ReadFile,HMBR,buf,512,bytesread,0x00 cmp eax,0x00 jz Comp_read invoke printf,error_read jmp near return Comp_read: invoke printf,complete_read cld lea esi,[buf] mov ecx,512 mov byte ptr count1,0x00 .lp: lodsb movzx eax,al mov dword [var1],eax cmp byte ptr count1,0x0c jnz .continue mov byte ptr count1,0x00 invoke putchar,0x0a .continue: inc byte ptr count1 mov eax,dword [var1] cinvoke printf,msg,eax loop .lp error_open: jmp short continue error_open_msg db '[-] Error open PhysicalDriver0',0x0a,0x00 continue: invoke printf,error_open_msg jmp short @f return: invoke CloseHandle,HMBR @@: invoke ExitProcess,0x00 section '.code' import data readable executable library Kernel32,'Kernel32.dll',\ msvcrt,'msvcrt.dll',\ user32,'user32.dll' import Kernel32,\ ExitProcess,'ExitProcess',\ CreateFile,'CreateFileA',\ CloseHandle,'CloseHandle',\ ReadFile,'ReadFile',\ WriteFile,'WriteFile',\ SetFilePointer,'SetFilePointer' import msvcrt,printf,'printf',putchar,'putchar'
Там бэкслэшей в имени диска от души. А должно быть три. И дальше там указатель вместо хэндла в ReadFile и в SetFilePointer.
Anonymous
Да я посмотрел столько люди и используют слешей
Eugene
Да я посмотрел столько люди и используют слешей
Кстати, да. Ты смотришь в Си, там они дублируются.
Anonymous
Да дублируются
Eugene
А в асме нет, поэтому в 2 раза меньше пиши.
Anonymous
а ну да
Anonymous
filename db '\\.\PhysicalDrive0',0
Anonymous
все равно также
Leon
А у тебя случайно не gpt?
Anonymous
Нет mbr
­
Передайте (кто может и кому интересно), что тип разметки не зависит от [не]успешности считывания первых 512 байт с накопителя: даже если там gpt, то должны быть и 55aa, и валидный раздел на весь накопитель (так называемая protective mbr record, для обратной совместимости с mbr-only софтом, чтобы дел нехороших с диском не натворить).
Anonymous
Наверное надо использовать virtalloc
s54820
Наверное надо использовать virtalloc
Среди прочих проблем, ecx не сохраняется вызываемыми функциями, поэтому loop входит во вкус и повторяется сильно дольше, чем ему сказано.
Eugene
Добрался до твоего исходника. Давай по порядку... 1. В случае ошибки CreateFile возвращается не 0, а INVALID_HANDLE_VALUE.
Anonymous
Да
Anonymous
Но у меня 0
Eugene
Инвалид... = -1, почему у тебя 0 ?
Eugene
2. Т.к. это начало диска (файла, так сказать), то invoke SetFilePointer,HMBR,0x00,0x00,FILE_BEGIN делать необязательно. Хотя тут бы я, конечно, уточнил у других людей, но по логике должно быть так. Уверен на 99.999999999%, что так :))
Eugene
3. Не invoke ReadFile,HMBR,buf,512,bytesread,0x00 — тут ты передаёшь АДРЕС хендла, а не хендл а invoke ReadFile,[HMBR],buf,512,bytesread,0x00
Eugene
cmp eax,0x00, кстати, можно сократить до test eax,eax, но это уже лирика, а не суть.
Eugene
4. А вот суть: cmp eax,0x00 jz Comp_read как раз в случае нуля это ошибка, а надо jnz
Eugene
5. Про ecx уже сказали, так что меняй на ebx, а loop — на dec ebx jnz .lp
Eugene
ой
Eugene
вот так, исправил
Eugene
У меня всё работает (с ипсравлениями)
Anonymous
а ну да)
Anonymous
у меня не открывается
Anonymous
format PE use32 include 'C:\fasm\INCLUDE\win32ax.inc' section '.bss' readable writable HMBR rd 1 buf rb 512 var1 rd 1 count1 rb 1 bytesread rd 1 section '.text' readable executable entry _start filename db '\\.\PhysicalDrive0',0 error_read db '[-] Error read MBR',0x0a,0x00 complete_read db '[+] Complete read mbr',0x0a,'[*] MBR: ',0x00,0x0a msg db '%002X ',0x00 _start: invoke CreateFile,filename, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0 test eax,eax jnz error_open mov dword ptr HMBR,eax invoke SetFilePointer,HMBR,0x00,0x00,FILE_BEGIN invoke ReadFile,[HMBR],buf,512,bytesread,0x00 cmp eax,0x00 jz Comp_read invoke printf,error_read jmp near return Comp_read: invoke printf,complete_read cld lea esi,[buf] mov bx,512 mov byte ptr count1,0x00 .lp: lodsb movzx eax,al mov dword [var1],eax cmp byte ptr count1,0x0c jnz .continue mov byte ptr count1,0x00 invoke putchar,0x0a .continue: inc byte ptr count1 dec bx mov eax,dword [var1] cinvoke printf,msg,eax test bx,bx jnz .lp error_open: jmp short continue error_open_msg db '[-] Error open PhysicalDriver0',0x0a,0x00 continue: invoke printf,error_open_msg return: invoke CloseHandle,[HMBR] invoke ExitProcess,0x00 section '.code' import data readable executable library Kernel32,'Kernel32.dll',\ msvcrt,'msvcrt.dll',\ user32,'user32.dll' import Kernel32,\ ExitProcess,'ExitProcess',\ CreateFile,'CreateFileA',\ CloseHandle,'CloseHandle',\ ReadFile,'ReadFile',\ WriteFile,'WriteFile',\ SetFilePointer,'SetFilePointer' import msvcrt,printf,'printf',putchar,'putchar'
Anonymous
[-] Error open PhysicalDriver0
Anonymous
а блин*
Eugene
Пилять... см. п.1 :)
Eugene
У тебя всё, что не 0 после CreateFile летит в error. Хоть нормальный хендл, хоть инвалид_хендл_велью.
Anonymous
format PE use32 include 'C:\fasm\INCLUDE\win32ax.inc' section '.bss' readable writable HMBR rd 1 buf rb 512 var1 rd 1 count1 rb 1 bytesread rd 1 section '.text' readable executable entry _start filename db '\\.\PhysicalDrive0',0 error_read db '[-] Error read MBR',0x0a,0x00 complete_read db '[+] Complete read mbr',0x0a,'[*] MBR: ',0x00,0x0a msg db '%002X ',0x00 _start: invoke CreateFile,filename, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0 test eax,eax jz error_open mov dword ptr HMBR,eax invoke SetFilePointer,HMBR,0x00,0x00,FILE_BEGIN invoke ReadFile,[HMBR],buf,512,bytesread,0x00 cmp eax,0x00 jnz Comp_read invoke printf,error_read jmp near return Comp_read: invoke printf,complete_read cld lea esi,[buf] mov bx,512 mov byte ptr count1,0x00 .lp: lodsb movzx eax,al mov dword [var1],eax cmp byte ptr count1,0x0c jnz .continue mov byte ptr count1,0x00 invoke putchar,0x0a .continue: inc byte ptr count1 dec bx mov eax,dword [var1] cinvoke printf,msg,eax test bx,bx jnz .lp jmp short return error_open: jmp short continue error_open_msg db '[-] Error open PhysicalDriver0',0x0a,0x00 continue: invoke printf,error_open_msg return: invoke CloseHandle,[HMBR] invoke ExitProcess,0x00 section '.code' import data readable executable library Kernel32,'Kernel32.dll',\ msvcrt,'msvcrt.dll',\ user32,'user32.dll' import Kernel32,\ ExitProcess,'ExitProcess',\ CreateFile,'CreateFileA',\ CloseHandle,'CloseHandle',\ ReadFile,'ReadFile',\ WriteFile,'WriteFile',\ SetFilePointer,'SetFilePointer' import msvcrt,printf,'printf',putchar,'putchar'
Anonymous
есть ура
Anonymous
это моя рассеяность и моя
Eugene
Пость лучше через pastebin или т.п. А то такие портянки длинные...
Anonymous
концентрация
Anonymous
ок
Eugene
Опять test eax,eax jz error_open вот! cmp eax,INVALID_HANDLE_VALUE je error_open
Eugene
invoke SetFilePointer,HMBR,0x00,0x00,FILE_BEGIN здесь тоже [HMBR] надо
Anonymous
я думал указатель
Eugene
dec ebx ... test bx,bx jnz .lp это избыточно (и почему bx?)... просто в конце: dec ebx jnz .lp
Eugene
я думал указатель
Ну MSDN открой же!