Кто поможет дизассемлировать прогу? под ДОС...

Тема в разделе "WASM.BEGINNERS", создана пользователем kibernetics, 22 авг 2006.

  1. kibernetics

    kibernetics New Member

    Публикаций:
    0
    Регистрация:
    25 мар 2006
    Сообщения:
    28
    Адрес:
    Minsk
    Парни, помогите дизасмить прогу. Прога посылает в порт АТА-команды. Мне нужно знать их синтаксис, ибо делает она это в фоновом режиме. Прога: http://gameprobe.at.tut.by/HFUF04.EXE 60Кб

    внтурях есть команды:
    WritеSpеcial (синтаксис)
    RеadSpеcial (синтаксис)

    Но! Перед посылкой этих команд в накопитель, есть еще одна команда, которая отсылается в первую очередь. Спецкоманда для доступа к служебной области винта. Она тоже находится внутри этой проги.

    Вот именно это мне и нужно узнать.
     
  2. kibernetics

    kibernetics New Member

    Публикаций:
    0
    Регистрация:
    25 мар 2006
    Сообщения:
    28
    Адрес:
    Minsk
    Прошу прощения...
    скажите, а IDA Pro поможет мне дизасмить эту прогу? И мне, как крайне неопытному, реально ли увидеть что-то полезное из того, что я ищу?
     
  3. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    Отдизасмить поможет. Увидеть что-то полезное - хз.
     
  4. CnCVK

    CnCVK New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2006
    Сообщения:
    108
    Возьми отладчик еще:)
    правда тебе ее нужно запускать под DOS, ну тогда в виртуальную машину
    Хоть пока ее ресетишь ждать не надо, можно в сапер поиграть:)
    Это да. Под DOS трудней чем под WIN32 :dntknw:
     
  5. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    по xref'ам попадешь сюда:

    Код (Text):
    1. seg000:152F                 mov     ax, 3
    2. seg000:1532                 push    ax
    3. seg000:1533                 push    word ptr [bp+8]
    4. seg000:1536                 push    word ptr [bp+6]
    5. seg000:1539                 call    sub_AE
    6. seg000:1539
    7. seg000:153E                 cmp     ax, 0
    8. seg000:1541                 jnz     short write_special
    9. seg000:1541
    10. seg000:1543                 jmp     loc_1563
    11. seg000:1543
    12. seg000:1546 ; ---------------------------------------------------------------------------
    13. seg000:1546
    14. seg000:1546 write_special:                          ; CODE XREF: seg000:1541j
    15. seg000:1546                 mov     ax, offset aWritespecial ; "WriteSpecial"
    16. seg000:1549                 mov     dx, ds
    17. seg000:154B                 push    dx
    18. seg000:154C                 push    ax
    19. seg000:154D                 push    seg_CCF6
    20. seg000:1551                 push    word_CCF4
    21. seg000:1555                 call    _printf
    Возможно, sub_AE - то, что тебе надо.
     
  6. kibernetics

    kibernetics New Member

    Публикаций:
    0
    Регистрация:
    25 мар 2006
    Сообщения:
    28
    Адрес:
    Minsk
    вот тут нашел немного. но в асме... тяжело мне. выручайте!
    вот код:
    Код (Text):
    1. seg000:1665                 les     bx, [bp+6]            //тут выбор порта
    2. seg000:1668                 mov     byte ptr es:[bx], 0FCh ; '№'            //загрузка FC в регистр 0
    3. seg000:166C                 les     bx, [bp+6]
    4. seg000:166F                 mov     al, es:[bx+1Ch]            //загрузка А0 в регистр 1
    5. seg000:1673                 cbw
    6. seg000:1674                 or      ax, 0A0h
    7. //всего 7 регистров. (0-6). не могли бы прокомментировать, что он кидает в остальные 5 регистров?
    8. seg000:1677                 les     bx, [bp+6]
    9. seg000:167A                 mov     es:[bx+1], al
    10. seg000:167E                 les     bx, [bp+6]
    11. seg000:1681                 mov     ax, es:[bx+18h]
    12. seg000:1685                 mov     cx, 8
    13. seg000:1688                 shr     ax, cl
    14. seg000:168A                 les     bx, [bp+6]
    15. seg000:168D                 mov     es:[bx+2], al
    16. seg000:1691                 les     bx, [bp+6]
    17. seg000:1694                 mov     ax, es:[bx+18h]
    18. seg000:1698                 and     ax, 0FFh
    19. seg000:169B                 les     bx, [bp+6]
    20. seg000:169E                 mov     es:[bx+3], al
    21. seg000:16A2                 les     bx, [bp+6]
    22. seg000:16A5                 mov     ax, es:[bx+1Ah]
    23. seg000:16A9                 sar     ax, 1
    24. seg000:16AB                 sar     ax, 1
    25. seg000:16AD                 sar     ax, 1
    26. seg000:16AF                 sar     ax, 1
    27. seg000:16B1                 les     bx, [bp+6]
    28. seg000:16B4                 mov     es:[bx+4], al
    29. seg000:16B8                 les     bx, [bp+6]
    30. seg000:16BB                 mov     ax, es:[bx+1Ah]
    31. seg000:16BF                 shl     ax, 1
    32. seg000:16C1                 shl     ax, 1
    33. seg000:16C3                 shl     ax, 1
    34. seg000:16C5                 shl     ax, 1
    35. seg000:16C7                 and     ax, 0F0h
    36. seg000:16CA                 les     bx, [bp+6]
    37. seg000:16CD                 mov     es:[bx+5], al
    38. seg000:16D1                 les     bx, [bp+6]
    39. seg000:16D4                 mov     al, es:[bx+1Dh]
    40. seg000:16D8                 les     bx, [bp+6]
    41. seg000:16DB                 mov     es:[bx+6], al
    42. seg000:16DF                 les     bx, [bp+6]
    43. seg000:16E2                 mov     al, es:[bx+1Eh]
    44. seg000:16E6                 cbw
    45. seg000:16E7                 cmp     ax, 0
    46. seg000:16EA                 jnz     loc_16EF
    47. seg000:16EC                 jmp     loc_16F7
    48. seg000:16EF ; ---------------------------------------------------------------------------
    49. seg000:16EF
    50. seg000:16EF loc_16EF:                               ; CODE XREF: seg000:16EAj
    51. seg000:16EF                 les     bx, [bp+6]
    52. seg000:16F2                 or      byte ptr es:[bx+5], 8
    53. seg000:16F7
    54. seg000:16F7 loc_16F7:                               ; CODE XREF: seg000:16ECj
    55. seg000:16F7                 les     bx, [bp+6]
    56. seg000:16FA                 mov     al, es:[bx+1Fh]
    57. seg000:16FE                 cbw
    58. seg000:16FF                 cmp     ax, 0
    59. seg000:1702                 jnz     loc_1707
    60. seg000:1704                 jmp     loc_170F
    61. seg000:1707 ; ---------------------------------------------------------------------------
    62. seg000:1707
    63. seg000:1707 loc_1707:                               ; CODE XREF: seg000:1702j
    64. seg000:1707                 les     bx, [bp+6]
    65. seg000:170A                 or      byte ptr es:[bx+5], 1
    66. seg000:170F
    67. seg000:170F loc_170F:                               ; CODE XREF: seg000:1704j
    68. seg000:170F                 push    word ptr [bp+10h]
    69. seg000:1712                 push    word ptr [bp+0Eh]
    70. seg000:1715                 push    word ptr [bp+8]
    71. seg000:1718                 push    word ptr [bp+6]
    72. seg000:171B                 call    sub_7A0
    73. seg000:1720                 cmp     ax, 0
    74. seg000:1723                 jnz     loc_1728
    75. seg000:1725                 jmp     loc_1735
    76. seg000:1728 ; ---------------------------------------------------------------------------
    77. seg000:1728
    78. seg000:1728 loc_1728:                               ; CODE XREF: seg000:1723j
    79. seg000:1728                 les     bx, [bp+6]
    80. seg000:172B                 mov     al, es:[bx+7]
    81. seg000:172F                 and     ax, 0FFh
    82. seg000:1732                 jmp     loc_1887
    83. seg000:1735 ; ---------------------------------------------------------------------------
    84. seg000:1735
    85. seg000:1735 loc_1735:                               ; CODE XREF: seg000:1725j
    86. seg000:1735                 push    word ptr [bp+10h]
    87. seg000:1738                 push    word ptr [bp+0Eh]
    88. seg000:173B                 mov     ax, 8
    89. seg000:173E                 push    ax
    90. seg000:173F                 mov     ax, 0
    91. seg000:1742                 push    ax
    92. seg000:1743                 mov     ax, 3
    93. seg000:1746                 push    ax
    94. seg000:1747                 push    word ptr [bp+8]
    95. seg000:174A                 push    word ptr [bp+6]
    96. seg000:174D                 call    sub_AE
    97. seg000:1752                 cmp     ax, 0
    98. seg000:1755                 jnz     loc_175A
    99. seg000:1757                 jmp     loc_1777
    100. seg000:175A ; ---------------------------------------------------------------------------
    101. seg000:175A
    102. seg000:175A loc_175A:                               ; CODE XREF: seg000:1755j
    103. seg000:175A                 mov     ax, offset aReadspecial ; "ReadSpecial"
    104. seg000:175D                 mov     dx, ds
    105. seg000:175F                 push    dx
    106. seg000:1760                 push    ax
    107. seg000:1761                 push    seg_CCF6
    108. seg000:1765                 push    word_CCF4
    109. seg000:1769                 call    sub_5F6C
    110. seg000:176E                 add     sp, 8
    111. seg000:1771                 mov     ax, 1
    112. seg000:1774                 jmp     loc_1887
    113. seg000:1777 ; --------------------------------------------------------------------------
     
  7. Chingachguk

    Chingachguk New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2002
    Сообщения:
    340
    Можешь попробовать мой логгер (in/out команд). Основан на сервисе EMM (I/O permission map), работает в DOS.
     
  8. Chingachguk

    Chingachguk New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2002
    Сообщения:
    340
    Да, логгирование включается по горячей клавише:

    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 - утилита для просмотра лога.
     
  9. kibernetics

    kibernetics New Member

    Публикаций:
    0
    Регистрация:
    25 мар 2006
    Сообщения:
    28
    Адрес:
    Minsk
    надо попробовать...
     
  10. kibernetics

    kibernetics New Member

    Публикаций:
    0
    Регистрация:
    25 мар 2006
    Сообщения:
    28
    Адрес:
    Minsk
    Chingachguk
    а как можно привести в божеский вид вьювер? хотя бы с паузой чтоб отображал лог. или в файл кидал для последующего просмотра...
     
  11. Otebebe

    Otebebe New Member

    Публикаций:
    0
    Регистрация:
    3 апр 2006
    Сообщения:
    91
    LOCARNO.
    Я смотрю время не теряете. :) Всех подключили...
    Как с параметрами ReadSpecial ? :derisive:
     
  12. kibernetics

    kibernetics New Member

    Публикаций:
    0
    Регистрация:
    25 мар 2006
    Сообщения:
    28
    Адрес:
    Minsk
    Otebebe
    Zong? И вы в гостях?
    Кто привел в мой лес? Серёжа?
    Ридспешиал вроде разрулил, но там хитрая вещь есть. Он не посылает команд как таковых, вернее он посылает, но на основе уже принятых.
     
  13. Chingachguk

    Chingachguk New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2002
    Сообщения:
    340
    kibernetics

    Перенаправление вывода должно работать: VIEW_L1 > somefile.txt
     
  14. Otebebe

    Otebebe New Member

    Публикаций:
    0
    Регистрация:
    3 апр 2006
    Сообщения:
    91
    kibernetics
    Кто привел в мой лес? Серёжа?
    Нее...Я сам по себе гуляю.А кто это Серёжа ?

    Он не посылает команд как таковых, вернее он посылает, но на основе уже принятых.
    Так про любую команду можно сказать.(Напр. посылается Identify Device.Если не Fujitsu-выход.
    Или если на S/On => ABRT--->exit).Т.е префикс-информация конечно используется.
    Не буду мешать :)