Сейчас на форуме: igorcauret, Rio (+6 невидимых)

 eXeL@B —› Вопросы новичков —› Вопросы по "Дневники чайника".
<< . 1 . 2 .
Посл.ответ Сообщение

Ранг: 2.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 07 апреля 2012 20:40 · Поправил: Bulochkin
· Личное сообщение · #1

Я создал эту тему для новичков (потому как сам им являюсь) и для тех кто вообще ничего не шарят и определении никаких не знают. Начал изучать "Дневники чайника" и
1) на теме "Знакомство c MASM32 и Win32" в чтиве 0 и виток 0 в разделе .386 не понял "В exe эта информация записывается в самом начале после заголовка PE. Если интересно, найдите в exe-файле буквы PE. Потом идут два нулевых байта, так как заголовок PE - это dword (4 байта).". Запустил пример exe через Ollydog и не нашел эти буквы PE. Где и как их найти? Или через другой отладчик?
2) на теме "Стек" тоже в чтиве 0 и виток 0 в конце "Ну что ж, отладчик Olly - ваш лучший друг. При открытии впишите ключ в поле "Arguments". Не торопитесь, подумайте что к чему." тоже не нашел это поле "Arguments". Искал через Ollydog так и не нашел.
3) также на теме "Стек" после описании команд Push и Pop идет пример который лучше открыть Softice'ом дабы точно видеть как меняется значение регистра ESP. Но Softice работает только под WinXP SP2. Есть ли еще какой-нибудь отладчик который подходит для данного примера и работает под WinXP SP3? Я пробовал запустить пример через Syser Debager, но у меня вообще вылетал синий BSOD экран когда открываю exe файл.
4) кроме того кто-нибудь может поделится таблицей байтов?
Я запутался word - вроде как 1 байт, а почему dword - 4 байта? или я че-то путаю
5) последние. Определения. Может кто-нибудь может расписать хотя б мини словарь.
ОС (и ОСЬ) - Операционная Система (это понятно)
а что такое ВПП?



Ранг: 0.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 08 июля 2014 19:46 · Поправил: andrush
· Личное сообщение · #2

чтива 0, виток 1
prax12.asm
всё работает,только децл не пойму как
Code:
  1.       .586
  2.       .model flat, stdcall
  3.        option casemap :none   ; case sensitive
  4. ;#########################################################################
  5.       include \masm32\include\windows.inc
  6.       include \masm32\include\user32.inc
  7.       include \masm32\include\kernel32.inc
  8.       includelib \masm32\lib\user32.lib
  9.       includelib \masm32\lib\kernel32.lib
  10. ;#########################################################################
  11.         .data
  12.        HexBytes db 0E5h,0DCh,0BAh,98h,76h,54h,32h,10h,0Fh,0Eh,0Dh,0Ch,0Bh,0Ah,09h,08h
  13. ; Константа NBytes на предварительном этапе компиляции будет равна длине переменной HexBytes:
  14.     NBytes = sizeof HexBytes             
  15. ; Будущая текстовая строка длиной HexBytes*2
  16. ; (так как на выходе будет в 2 раза больше), +1 байт 00 на конце строки.
  17. ; Заполняем BBh только для наглядности в отладчике:
  18.      sResult byte NBytes*2+1 dup (0BBh)  
  19.   MsgCaption db "Результат перевода",0   ; Заголовок сообщения
  20. ;##########################################################################
  21.     .code
  22.  
  23. start:
  24. push NBytes
  25. push offset HexBytes
  26. push offset sResult
  27. call ASCIIzHEX
  28. invoke MessageBox, NULL, addr sResult,addr MsgCaption, MB_OK
  29. invoke ExitProcess,0
  30. ;------------------------------------------------------------------------------
  31. ;HEX-число в ASCIIz-строку
  32. ;------------------------------------------------------------------------------
  33. ASCIIzHEX proc pString:dword, pHex:dword, Count:dword 
  34. ; Вход:
  35. ; pString - указатель на строку, которую будем заполнять
  36. ; pHex - указатель на hex-значения
  37. ; Count - количество байт для обработки
  38. ; Выход: ничего
  39. push ECX
  40. push EDI
  41. push ESI
  42. mov   ECX, Count              ;######## ТУТ !
  43. mov   ESI, pHex                 
  44. mov   EDI, pString
  45. loopHex:
  46.     dec   ECX                 ;уменьшаем счётчик
  47. js  HexFin                    ;если уже меньше нуля, то прыг
  48.  
  49.     movzx EAX, byte ptr [ESI] ;допустим, AX = 00E5h
  50.     rol   EAX, 4              ;AX = 0E50h
  51.     ror    AL, 4              ;AX = 0E05h
  52.  
  53.     cmp    AH, 9              ;сравниваем с девятью
  54. jbe DecDigit                  ;если не больше, то прыг
  55.     add    AH, 7              ;иначе корректируем символы от A до F
  56. DecDigit:
  57.     add    AH, 30h            ;получаем код символа
  58.     mov [EDI], AH             ;сохраняем результат
  59.  
  60.     cmp    AL, 9              ;сравниваем с девятью
  61. jbe DecDigit2                 ;если не больше, то прыг
  62.     add    AL, 7              ;иначе корректируем символы от A до F
  63. DecDigit2:
  64.     add    AL, 30h            ;получаем код символа
  65.     mov    [EDI+1], AL        ;сохраняем результат
  66.     add   EDI, 2              ;увеличиваем указатель строки на 2
  67.     inc   ESI                 ;увеличиваем указатель исходного байта на 1
  68. jmp loopHex
  69.  
  70. HexFin:
  71. mov byte ptr [EDI],0          ;в конце строки не забудем добавить байт 00
  72. pop ESI
  73. pop EDI
  74. pop ECX
  75. ret
  76. ASCIIzHEX endp                ;конец функции
  77. ;-------------------------------------------------------------------------
  78.  
  79. end start                     ;конец программы

вот тут :
start:
push NBytes
push offset HexBytes
push offset sResult
call ASCIIzHEX
...
mov ECX, Count
mov ESI, pHex
mov EDI, pString
как оно понимает что именно в регистры засунуть,,в ollydbf не могу понять откуда берется смещение [ebp+10] ?
перед этим же в стек уже положили другое,Или процедуры (mov'ы) автоматом берут со стека,точто перед их вызовом туда положили, если ей не указать явно ?




Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 08 июля 2014 20:50 · Поправил: plutos
· Личное сообщение · #3

andrush пишет:
не могу понять откуда берется смещение [ebp+10]


Почитайте здесь: http://www.opennet.ru/base/dev/stack_intro.txt.html
Там хорошо и подробно обьясняется, как работает стек.

| < параметр 3 > |[ ebp + 0x10 ]
+-----------------------+-----------------
| < параметр 2 > | [ ebp + 0xC ]
+-----------------------+-----------------
| < параметр 1 > | [ ebp + 0x8 ]
+-----------------------+-----------------
| < адрес возврата > | [ ebp + 0x4 ]
+-----------------------+-----------------
EBP -->| значение EBP | [ ebp ]
+-----------------------+-----------------
| | [ ebp - 0x4 ]
| Область |
| локальных |
| данных функции |
| (X байт) |
ESP -->+-----------------------+<--[ ebp - X ]

-----
Give me a HANDLE and I will move the Earth.


| Сообщение посчитали полезным: andrush

Ранг: 0.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 29 октября 2014 00:53 · Поправил: Roolon
· Личное сообщение · #4


00000000: 90 41 90 41-90 90 41 41-42 42 42 | РAРAРРAABBB
Переставьте курсор в конец кода и нажмите F3 (редактировать). Введите 2 байта "CD20" и сохраните изменения в файл (F9).
Вот вы и написали первую программу. Запустите её...
А чего вы хотели от нескольких букв?!
Если вы всё правильно сделали, то сообщения об ошибке появиться не должно. Но и интересного ничего произойти не может. Давайте разбирать эту программу.

Люди, far (и не только он) все время выдает ошибку при попытке открыть com файл (даже все файлы с тем же расширением из папки с примерами). Помогите пожалуйста разобраться столько желания и столько отчаяния на первых порах =) Понимаю, что я кому то омерзителен со своей нубостью...
Видел обрывки текста про необходимость эмуляции dos на windows 7 но ничего не нашел кроме эмулятора досовских игр, но как открыть там фар и запусить там файл я не знаю




Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 29 октября 2014 01:08
· Личное сообщение · #5

Com files это уже даже не "вчера".
Не тратьте времени впустую.

-----
Give me a HANDLE and I will move the Earth.




Ранг: 0.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 29 октября 2014 01:43 · Поправил: Roolon
· Личное сообщение · #6

plutos пишет:

Очень заинтересовал материал и его подача. То есть в моем случае в этих статьях ничего кроме перелома мозга не получишь, при попытке открыть примеры автора в фаре? Может перенаправите куда ? Спасибо за ответ.
ЗЫ просто очень хочется степ бай степ, а тут эти com-ы... дремучим людям тоже иногда хочется развиваться =)




Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 29 октября 2014 06:59
· Личное сообщение · #7

Возьмите любой учебник/туториал по ассемблеру, но только не 16-bit под DOS, а 32-bit под Windows и в любом случае будете ближе к истине, чем тратя время на com files.
Если читаете по-английски, то рекомендую уроки Iczelion: http://win32assembly.programminghorizon.com/tutorials.html
Там все разжевано с азов, шаг за шагом. Впрочем думаю, что эти уроки и на русском имеются, нужно только поискать.
Удачи!

-----
Give me a HANDLE and I will move the Earth.


| Сообщение посчитали полезным: Roolon


Ранг: 1131.7 (!!!!), 447thx
Активность: 0.670.2
Статус: Участник

Создано: 29 октября 2014 09:49
· Личное сообщение · #8

http://wasm.ru/wault/

| Сообщение посчитали полезным: Roolon
<< . 1 . 2 .
 eXeL@B —› Вопросы новичков —› Вопросы по "Дневники чайника".
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати