Парни, помогите дизасмить прогу. Прога посылает в порт АТА-команды. Мне нужно знать их синтаксис, ибо делает она это в фоновом режиме. Прога: http://gameprobe.at.tut.by/HFUF04.EXE 60Кб внтурях есть команды: WritеSpеcial (синтаксис) RеadSpеcial (синтаксис) Но! Перед посылкой этих команд в накопитель, есть еще одна команда, которая отсылается в первую очередь. Спецкоманда для доступа к служебной области винта. Она тоже находится внутри этой проги. Вот именно это мне и нужно узнать.
Прошу прощения... скажите, а IDA Pro поможет мне дизасмить эту прогу? И мне, как крайне неопытному, реально ли увидеть что-то полезное из того, что я ищу?
Возьми отладчик еще правда тебе ее нужно запускать под DOS, ну тогда в виртуальную машину Хоть пока ее ресетишь ждать не надо, можно в сапер поиграть Это да. Под DOS трудней чем под WIN32
по xref'ам попадешь сюда: Код (Text): seg000:152F mov ax, 3 seg000:1532 push ax seg000:1533 push word ptr [bp+8] seg000:1536 push word ptr [bp+6] seg000:1539 call sub_AE seg000:1539 seg000:153E cmp ax, 0 seg000:1541 jnz short write_special seg000:1541 seg000:1543 jmp loc_1563 seg000:1543 seg000:1546 ; --------------------------------------------------------------------------- seg000:1546 seg000:1546 write_special: ; CODE XREF: seg000:1541j seg000:1546 mov ax, offset aWritespecial ; "WriteSpecial" seg000:1549 mov dx, ds seg000:154B push dx seg000:154C push ax seg000:154D push seg_CCF6 seg000:1551 push word_CCF4 seg000:1555 call _printf Возможно, sub_AE - то, что тебе надо.
вот тут нашел немного. но в асме... тяжело мне. выручайте! вот код: Код (Text): seg000:1665 les bx, [bp+6] //тут выбор порта seg000:1668 mov byte ptr es:[bx], 0FCh ; '№' //загрузка FC в регистр 0 seg000:166C les bx, [bp+6] seg000:166F mov al, es:[bx+1Ch] //загрузка А0 в регистр 1 seg000:1673 cbw seg000:1674 or ax, 0A0h //всего 7 регистров. (0-6). не могли бы прокомментировать, что он кидает в остальные 5 регистров? seg000:1677 les bx, [bp+6] seg000:167A mov es:[bx+1], al seg000:167E les bx, [bp+6] seg000:1681 mov ax, es:[bx+18h] seg000:1685 mov cx, 8 seg000:1688 shr ax, cl seg000:168A les bx, [bp+6] seg000:168D mov es:[bx+2], al seg000:1691 les bx, [bp+6] seg000:1694 mov ax, es:[bx+18h] seg000:1698 and ax, 0FFh seg000:169B les bx, [bp+6] seg000:169E mov es:[bx+3], al seg000:16A2 les bx, [bp+6] seg000:16A5 mov ax, es:[bx+1Ah] seg000:16A9 sar ax, 1 seg000:16AB sar ax, 1 seg000:16AD sar ax, 1 seg000:16AF sar ax, 1 seg000:16B1 les bx, [bp+6] seg000:16B4 mov es:[bx+4], al seg000:16B8 les bx, [bp+6] seg000:16BB mov ax, es:[bx+1Ah] seg000:16BF shl ax, 1 seg000:16C1 shl ax, 1 seg000:16C3 shl ax, 1 seg000:16C5 shl ax, 1 seg000:16C7 and ax, 0F0h seg000:16CA les bx, [bp+6] seg000:16CD mov es:[bx+5], al seg000:16D1 les bx, [bp+6] seg000:16D4 mov al, es:[bx+1Dh] seg000:16D8 les bx, [bp+6] seg000:16DB mov es:[bx+6], al seg000:16DF les bx, [bp+6] seg000:16E2 mov al, es:[bx+1Eh] seg000:16E6 cbw seg000:16E7 cmp ax, 0 seg000:16EA jnz loc_16EF seg000:16EC jmp loc_16F7 seg000:16EF ; --------------------------------------------------------------------------- seg000:16EF seg000:16EF loc_16EF: ; CODE XREF: seg000:16EAj seg000:16EF les bx, [bp+6] seg000:16F2 or byte ptr es:[bx+5], 8 seg000:16F7 seg000:16F7 loc_16F7: ; CODE XREF: seg000:16ECj seg000:16F7 les bx, [bp+6] seg000:16FA mov al, es:[bx+1Fh] seg000:16FE cbw seg000:16FF cmp ax, 0 seg000:1702 jnz loc_1707 seg000:1704 jmp loc_170F seg000:1707 ; --------------------------------------------------------------------------- seg000:1707 seg000:1707 loc_1707: ; CODE XREF: seg000:1702j seg000:1707 les bx, [bp+6] seg000:170A or byte ptr es:[bx+5], 1 seg000:170F seg000:170F loc_170F: ; CODE XREF: seg000:1704j seg000:170F push word ptr [bp+10h] seg000:1712 push word ptr [bp+0Eh] seg000:1715 push word ptr [bp+8] seg000:1718 push word ptr [bp+6] seg000:171B call sub_7A0 seg000:1720 cmp ax, 0 seg000:1723 jnz loc_1728 seg000:1725 jmp loc_1735 seg000:1728 ; --------------------------------------------------------------------------- seg000:1728 seg000:1728 loc_1728: ; CODE XREF: seg000:1723j seg000:1728 les bx, [bp+6] seg000:172B mov al, es:[bx+7] seg000:172F and ax, 0FFh seg000:1732 jmp loc_1887 seg000:1735 ; --------------------------------------------------------------------------- seg000:1735 seg000:1735 loc_1735: ; CODE XREF: seg000:1725j seg000:1735 push word ptr [bp+10h] seg000:1738 push word ptr [bp+0Eh] seg000:173B mov ax, 8 seg000:173E push ax seg000:173F mov ax, 0 seg000:1742 push ax seg000:1743 mov ax, 3 seg000:1746 push ax seg000:1747 push word ptr [bp+8] seg000:174A push word ptr [bp+6] seg000:174D call sub_AE seg000:1752 cmp ax, 0 seg000:1755 jnz loc_175A seg000:1757 jmp loc_1777 seg000:175A ; --------------------------------------------------------------------------- seg000:175A seg000:175A loc_175A: ; CODE XREF: seg000:1755j seg000:175A mov ax, offset aReadspecial ; "ReadSpecial" seg000:175D mov dx, ds seg000:175F push dx seg000:1760 push ax seg000:1761 push seg_CCF6 seg000:1765 push word_CCF4 seg000:1769 call sub_5F6C seg000:176E add sp, 8 seg000:1771 mov ax, 1 seg000:1774 jmp loc_1887 seg000:1777 ; --------------------------------------------------------------------------
Можешь попробовать мой логгер (in/out команд). Основан на сервисе EMM (I/O permission map), работает в DOS.
Да, логгирование включается по горячей клавише: HotKey equ 1208h ; alt+Scroll Lock, 0208h - left alt Компилляция: Echo On tasm.exe %1.asm if errorlevel 1 goto MakeError tlink.exe %1.obj /t /3 if errorlevel 1 goto MakeError del *.obj del *.map :AllDone Echo Done !!! exit :MakeError Echo Make Error exit VIEW_L1.ASM - утилита для просмотра лога.
Chingachguk а как можно привести в божеский вид вьювер? хотя бы с паузой чтоб отображал лог. или в файл кидал для последующего просмотра...
Otebebe Zong? И вы в гостях? Кто привел в мой лес? Серёжа? Ридспешиал вроде разрулил, но там хитрая вещь есть. Он не посылает команд как таковых, вернее он посылает, но на основе уже принятых.
kibernetics Кто привел в мой лес? Серёжа? Нее...Я сам по себе гуляю.А кто это Серёжа ? Он не посылает команд как таковых, вернее он посылает, но на основе уже принятых. Так про любую команду можно сказать.(Напр. посылается Identify Device.Если не Fujitsu-выход. Или если на S/On => ABRT--->exit).Т.е префикс-информация конечно используется. Не буду мешать