ДизассСмблСр Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

ДизассСмблСр

ДизассС́мблСр β€” транслятор, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π² тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° языкС ассСмблСра.

По Ρ€Π΅ΠΆΠΈΠΌΡƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ дСлятся Π½Π°

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ автоматичСских дизассСмблСров ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ Sourcer. Π’Π°ΠΊΠΈΠ΅ дизассСмблСры Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ листинг, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π² тСкстовом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ β€” IDA. Он позволяСт ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π° дизассСмблирования ΠΈ являСтся вСсьма ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ инструмСнтом для исслСдования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

ДизассСмблСры Π±Ρ‹Π²Π°ΡŽΡ‚ ΠΎΠ΄Π½ΠΎΠΏΡ€ΠΎΡ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΡ€ΠΎΡ…ΠΎΠ΄Π½Ρ‹Π΅. Основная Ρ‚Ρ€ΡƒΠ΄Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ дизассСмблСра β€” ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚ машинного ΠΊΠΎΠ΄Π°, поэтому Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π°Ρ… автоматичСски ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ собираСтся информация ΠΎ Π³Ρ€Π°Π½ΠΈΡ†Π°Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π° Π½Π° послСднСм ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π΅ формируСтся ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ листинг. Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ позволяСт ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ этот процСсс, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ просматривая Π΄Π°ΠΌΠΏ дизассСмблируСмой области памяти, программист ΠΌΠΎΠΆΠ΅Ρ‚ сразу Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ строковыС константы, Π΄Π°Ρ‚ΡŒ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° извСстным Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌ Π²Ρ…ΠΎΠ΄Π°, ΠΏΡ€ΠΎΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π½Π½Ρ‹Π΅ ΠΈΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π§Π°Ρ‰Π΅ всСго дизассСмблСр ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ для Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (ΠΈΠ»ΠΈ Π΅Π΅ части), исходный тСкст ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ нСизвСстСн β€” с Ρ†Π΅Π»ΡŒΡŽ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, копирования ΠΈΠ»ΠΈ Π²Π·Π»ΠΎΠΌΠ°. Π Π΅ΠΆΠ΅ β€” для поиска ошибок (Π±Π°Π³ΠΎΠ²) Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΈ компиляторах, Π° Ρ‚Π°ΠΊΠΆΠ΅ для Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ создаваСмого компилятором машинного ΠΊΠΎΠ΄Π°.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ΄Π½ΠΎΠΏΡ€ΠΎΡ…ΠΎΠ΄Π½Ρ‹ΠΉ дизассСмблСр (ΠΊΠ°ΠΊ ΠΈ построчный ассСмблСр) являСтся составной Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ДизассСмблСр своими Ρ€ΡƒΠΊΠ°ΠΌΠΈ

Π—Π½Π°Π½ΠΈΠ΅ структуры ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ ΡƒΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅Ρ‚ Π½Π΅ являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ ΠΌΠΎΠ³ Π½Π°Π·Π²Π°Ρ‚ΡŒ сСбя программистом. ЕстСствСнно Ρ‚Π°ΠΊ Π±Ρ‹Π»ΠΎ Π½Π΅ всСгда. Π”ΠΎ появлСния ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ассСмблСров ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΠ»ΠΎΡΡŒ нСпосрСдствСнно Π² машинном ΠΊΠΎΠ΄Π΅. ΠšΠ°Ρ‚ΠΎΡ€ΠΆΠ½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π°, сопряТСнная с большим количСством ошибок. Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ассСмблСры ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ (Π² Ρ€Π°Π·ΡƒΠΌΠ½ΠΎΠΉ стСпСни) Π°Π±ΡΡ‚Ρ€Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ ΠΆΠ΅Π»Π΅Π·Π°, ΠΌΠ΅Ρ‚ΠΎΠ΄Π° кодирования ΠΊΠΎΠΌΠ°Π½Π΄. Π§Ρ‚ΠΎ ΡƒΠΆ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ компиляторах высокоуровнСвых языков. Они ΠΏΠΎΡ€Π°ΠΆΠ°ΡŽΡ‚ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ своСй Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Ρ‚ΠΎΠΉ простотой, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ программисту позволяСтся ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ исходный ΠΊΠΎΠ΄ Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ (ΠΏΡ€ΠΈΡ‡Π΅ΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ, Π² достаточной стСпСни, ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎ). ΠžΡ‚ программиста трСбуСтся лишь Π·Π½Π°Π½ΠΈΠ΅ любимого языка/ IDE. Π—Π½Π°Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²ΠΎ Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ компилятор исходный листинг вовсС Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ.
Π’Π΅ΠΌ ΠΆΠ΅, ΠΊΠΎΠΌΡƒ интСрСсно Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС структуры кодирования ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄, ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ исходный ΠΊΠΎΠ΄ дизассСмблСра для x86 Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, Π΄ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ дизассСмблСра для x86 Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ являСтся, хотя Π·Π°Π΄Π°Ρ‡Π΅ΠΉ ΠΈ Π½Π΅ особо слоТной, Π½ΠΎ всС, ΠΆΠ΅ довольно спСцифичной. ΠžΡ‚ программиста Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° знания – знания Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ микропроцСссор распознаСт ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ β€œΠ±Π°ΠΉΡ‚ΠΈΠΊΠΎΠ²β€ Π² машинном ΠΊΠΎΠ΄Π΅. Π”Π°Π»Π΅ΠΊΠΎ Π½Π΅ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²ΡƒΠ·Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ знания Π² объСмС достаточном для написания ΠΏΠΎΠ»Π½ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ соврСмСнного дизассСмблСра – приходится ΠΈΡΠΊΠ°Ρ‚ΡŒ самому (ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π½Π° английском языкС). Π”Π°Π½Π½Ρ‹ΠΉ пост Π½Π΅ ΠΏΡ€Π΅Ρ‚Π΅Π½Π΄ΡƒΠ΅Ρ‚ Π½Π° ΠΏΠΎΠ»Π½ΠΎΡ‚Ρƒ освСщСниС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ создания дизассСмблСра, Π² Π½Π΅ΠΌ лишь ΠΊΡ€Π°Ρ‚ΠΊΠΎ рассказываСтся Ρ‚ΠΎ, ΠΊΠ°ΠΊ Π±Ρ‹Π» написан дизассСмблСр для x86 Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, 32-разрядного Ρ€Π΅ΠΆΠΈΠΌΠ° исполнСния ΠΊΠΎΠΌΠ°Π½Π΄. Π’Π°ΠΊ ΠΆΠ΅ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… нСточностСй ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… понятий ΠΈΠ· ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ спСцификации.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΊΠΎΠΌΠ°Π½Π΄ для intel x86

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ:
β€’ ΠžΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ прСфиксы (ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ прСфикс ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ 1 Π±Π°ΠΉΡ‚)
β€’ ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠΏΠΊΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ (1 ΠΈΠ»ΠΈ 2 Π±Π°ΠΉΡ‚Π°)
β€’ Mod_R/M – Π±Π°ΠΉΡ‚ΠΈΠΊ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ структуру ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ β€” ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ.
β€’ ΠžΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Π±Π°ΠΉΡ‚Ρ‹, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ (ΠΈΠ½ΠΎΠ³Π΄Π° Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΎ ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ‚ поля SIB[Scale, Index, Base], смСщСния ΠΈ нСпосрСдствСнного значСния).

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ прСфиксы:
ΠŸΠ΅Ρ€Π²Ρ‹Π΅ ΡˆΠ΅ΡΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ сСгмСнтный рСгистр, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ ячСйкС памяти.
β€’ 0x26 – прСфикс Π·Π°ΠΌΠ΅Π½Ρ‹ сСгмСнта ES
β€’ 0x2E – прСфикс Π·Π°ΠΌΠ΅Π½Ρ‹ сСгмСнта CS
β€’ 0x36 – прСфикс Π·Π°ΠΌΠ΅Π½Ρ‹ сСгмСнта SS
β€’ 0x3E – прСфикс Π·Π°ΠΌΠ΅Π½Ρ‹ сСгмСнта DS
β€’ 0x64 – прСфикс Π·Π°ΠΌΠ΅Π½Ρ‹ сСгмСнта FS
β€’ 0x65 – прСфикс Π·Π°ΠΌΠ΅Π½Ρ‹ сСгмСнта GS

β€’ 0x0F – прСфикс Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ (ΠΈΠ½ΠΎΠ³Π΄Π° Π΅Π³ΠΎ Π½Π΅ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ Π·Π° настоящий прСфикс – Π² этом случаС считаСтся, Ρ‡Ρ‚ΠΎ ΠΎΠΏΠΊΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ состоит ΠΈΠ· Π΄Π²ΡƒΡ… Π±Π°ΠΉΡ‚, ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… 0x0F)

β€’ 0x66 – прСфикс пСрСопрСдСлСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° (ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, вмСсто рСгистра eax Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ax)
β€’ 0x67 – прСфикс пСрСопрСдСлСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° адрСса (см Π½ΠΈΠΆΠ΅)
β€’ 0x9B – прСфикс оТидания (WAIT)
β€’ 0xF0 – прСфикс Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ (LOCK с Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ рСализуСтся синхронизация ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ)
β€’ 0xF2 – прСфикс ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΡŒΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ REPNZ – Ρ€Π°Π±ΠΎΡ‚Π° с ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡΠΌΠΈ Π±Π°ΠΉΡ‚ (строками)
β€’ 0xF3 – прСфикс ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΡŒΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ REP – Ρ€Π°Π±ΠΎΡ‚Π° с ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡΠΌΠΈ Π±Π°ΠΉΡ‚ (строками)

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· этих прСфиксов мСняСт сСмантику ΠΈ (ΠΈΠ»ΠΈ) структуру машинной инструкции (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΅Π΅ Π΄Π»ΠΈΠ½Ρƒ ΠΈΠ»ΠΈ Π²Ρ‹Π±ΠΎΡ€ ΠΌΠ½Π΅ΠΌΠΎΠ½ΠΈΠΊΠΈ).

ΠžΠΏΠΊΠΎΠ΄Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄.
Опкод ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½, ΠΈΠ½ΠΎΠ³Π΄Π° вмСсти с прСфиксом (Π°ΠΌΠΈ) ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ опрСдСляСт ΠΌΠ½Π΅ΠΌΠΎΠ½ΠΈΠΊΡƒ (Π½Π°Π·Π²Π°Π½ΠΈΠ΅) ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Команд ΠΌΠ½ΠΎΠ³ΠΎ. И ΠΏΡ€ΠΈ услоТнСнии соврСмСнных микропроцСссоров ΠΈΡ… количСство Π½Π΅ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ – Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ, Π° ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ Π½Π΅ ΠΈΡΡ‡Π΅Π·Π°ΡŽΡ‚ (обратная ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ). Бписок ΠΎΠΏΠΊΠΎΠ΄ΠΎΠ² ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ ассоциированных с Π½ΠΈΠΌΠΈ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сайтах ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ микропроцСссоров.

Π‘Π°ΠΉΡ‚ Mod_R/M состоит ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠΎΠ»Π΅ΠΉ:

β€’ Mod – ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π° Π±ΠΈΡ‚Π° (Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚ 0 Π΄ΠΎ 3)
β€’ R/M – ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Ρ€ΠΈ Π±ΠΈΡ‚Π° (Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚ 0 Π΄ΠΎ 7)
β€’ Value of ModR/M – ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Ρ€ΠΈ Π±ΠΈΡ‚Π° (Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚ 0 Π΄ΠΎ 7)

Для написания дизассСмблСра ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ страничку: http://ref.x86asm.net/geek32.html.

ΠœΡ‹ Π²ΠΈΠ΄ΠΈΠΌ нСсколько Ρ‚Π°Π±Π»ΠΈΡ†. Π’ сущности, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ эти Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ описаниС ΠΈΡ… ΠΏΠΎΠ»Π΅ΠΉ Π½Π°ΠΌ ΠΈ понадобятся, для написания дизассСмблСра. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ трСбуСтся ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΊ логичСскому Ρ€Π°ΡΡΡƒΠΆΠ΄Π΅Π½ΠΈΡŽ ΠΈ свободноС врСмя.
Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ прСдставлСн список ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄, Π½Π΅ содСрТащих прСфикс 0x0F. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ список ΠΊΠΎΠΌΠ°Π½Π΄ содСрТащих этот прСфикс (Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ этих ΠΊΠΎΠΌΠ°Π½Π΄ появились Π² микропроцСссорах сСмСйства β€œPentium with MMX” ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΡ…).
Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Ρ€ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π±Π°ΠΉΡ‚ Mod_R/M Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для 32-Π±ΠΈΡ‚Π½ΠΎΠ³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ° ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ каТдая ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΈΠ· этих Ρ‚Ρ€Π΅Ρ… Ρ‚Π°Π±Π»ΠΈΡ† уточняСт Ρ€Π°Π·Π±ΠΎΡ€ Mod_R/M Π±Π°ΠΉΡ‚Π° частных случаСв ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.
ПослСдняя Ρ‚Π°Π±Π»ΠΈΡ†Π° позволяСт ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π±Π°ΠΉΡ‚ Mod_R/M Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для 16-Π±ΠΈΡ‚Π½ΠΎΠ³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ° ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ считаСтся, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° кодируСтся Π² 32-Π±ΠΈΡ‚Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. Для смСны Ρ€Π΅ΠΆΠΈΠΌΠ° ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ прСфикс пСрСопрСдСлСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° адрСса (0x67).

ΠŸΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, это пСрСнСсти ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π² ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ структуры Π΄Π°Π½Π½Ρ‹Ρ…. На Ρ‚ΠΎΠΌ ΠΆΠ΅ сайтС ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ xml-вСрсии Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ†, ΠΈ ΡƒΠΆΠ΅ ΠΈΡ… ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π² красивыС ΡΠΈΡˆΠ½Ρ‹Π΅ структуры. Π― ΠΆΠ΅ поступил ΠΈΠ½Π°Ρ‡Π΅ – Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠ» html Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π² Excel, ΠΈ ΡƒΠΆΠ΅ Ρ‚Π°ΠΌ, написав нСслоТный скриптик Π½Π° VBA, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» исходный ΡΠΈΡˆΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, ΡƒΠΆΠ΅ послС Ρ€ΡƒΡ‡Π½Ρ‹Ρ… исправлСний прСдставлял собой Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Π΅ структуры Π΄Π°Π½Π½Ρ‹Ρ….

Π‘Π°ΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ дизассСмблирования достаточно прост:

β€’ БобираСтся список прСфиксов, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ машинной инструкции
β€’ Π˜Ρ‰Π΅Ρ‚ΡΡ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π΄Π²ΡƒΡ… Ρ‚Π°Π±Π»ΠΈΡ† ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΠΏΠΎΠ»Π΅ Π² зависимости ΠΎΡ‚ ΠΎΠΏΠΊΠΎΠ΄Π°, прСфиксов ΠΈ поколСния (ΠΌΠΎΠ΄Π΅Π»ΠΈ) Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ (искомого) микропроцСссора.
β€’ НайдСнная Π½Π°ΠΌΠΈ запись характСризуСтся списком ΠΏΠΎΠ»Π΅ΠΉ Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅ (модСль) микропроцСссора, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ появилась ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΠ»ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, список Ρ„Π»Π°Π³ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ данная ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ. Нас ΠΆΠ΅, Π² основном, ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‚ лишь ΠΌΠ½Π΅ΠΌΠΎΠ½ΠΈΠΊΠ° (Π½Π°Π·Π²Π°Π½ΠΈΠ΅) ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ список ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ². ΠŸΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π² всС ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΉ ΠΈ поля Π±Π°ΠΉΡ‚Π° Mod_R/M, ΠΌΡ‹ смоТСм ΡƒΠ·Π½Π°Ρ‚ΡŒ тСкстовоС прСдставлСниС ΠΈ Π΄Π»ΠΈΠ½Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠΎΠ»Π΅Π±Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ нуля Π΄ΠΎ Ρ‚Ρ€Π΅Ρ…. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ содСрТат Π±ΠΎΠ»Π΅Π΅ сотни Ρ‚ΠΈΠΏΠΎΠ² ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ². НСкоторыС ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ – Ρƒ Π½ΠΈΡ… Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ названия, Π½ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ дСйствий ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Mod_R/M Π±Π°ΠΉΡ‚Π° (ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π±Π°ΠΉΡ‚ΠΎΠ²) Ρƒ Π½ΠΈΡ… ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Π°.

Для просмотра ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° дизассСмблирования ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ β€œHello world” ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ исходный ΠΊΠΎΠ΄ дизассСмблСра для компилятора C++ Builder 6.

PS:
НС Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ ΠΈΠ· ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π²ΡˆΠΈΡ… этот пост, ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ понадобится информация, почСрпнутая ΠΈΠ· Π½Π΅Π³ΠΎ (дизассСмблСры ΠΏΠΈΡˆΡƒΡ‚ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹), Π½ΠΎ, Π² любом случаС этот дизассСмблСр тСстировался ΠΈ Π΄Π°ΠΆΠ΅ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² состав достаточно большСго коммСрчСского ΠΏΡ€ΠΎΡ‚Π΅ΠΊΡ‚ΠΎΡ€Π°, исходники ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ ΠΈ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡŽΡ‚ΡΡ свободно )

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π§Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ Π΄ΠΈΠ·Π°ΡΡΠ΅ΠΌΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ? Волько ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ понятно.

Π²ΠΎΡ‚ этот ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΈ Π΅ΡΡ‚ΡŒ дизассСмблированиС.

ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ примСняСтся для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΡΠ»ΠΎΠΌΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΠΎΠ½Π° Π½Π΅ просила ΠΊΠ»ΡŽΡ‡ рСгистрации ΠΈ Ρ‡Ρ‚ΠΎ Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π² этом Ρ€ΠΎΠ΄Π΅

ДизассС́мблСр β€” транслятор, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π² тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° языкС ассСмблСра.

По Ρ€Π΅ΠΆΠΈΠΌΡƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ дСлятся Π½Π°

АвтоматичСскиС
Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅
ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ автоматичСских дизассСмблСров ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ Sourcer. Π’Π°ΠΊΠΈΠ΅ дизассСмблСры Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ листинг, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π² тСкстовом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ β€” IDA. Он позволяСт ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π° дизассСмблирования ΠΈ являСтся вСсьма ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ инструмСнтом для исслСдования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

ДизассСмблСры Π±Ρ‹Π²Π°ΡŽΡ‚ ΠΎΠ΄Π½ΠΎΠΏΡ€ΠΎΡ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΡ€ΠΎΡ…ΠΎΠ΄Π½Ρ‹Π΅. Основная Ρ‚Ρ€ΡƒΠ΄Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ дизассСмблСра β€” ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚ машинного ΠΊΠΎΠ΄Π°, поэтому Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π°Ρ… автоматичСски ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ собираСтся информация ΠΎ Π³Ρ€Π°Π½ΠΈΡ†Π°Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π° Π½Π° послСднСм ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π΅ формируСтся ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ листинг. Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ позволяСт ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ этот процСсс, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ просматривая Π΄Π°ΠΌΠΏ дизассСмблируСмой области памяти, программист ΠΌΠΎΠΆΠ΅Ρ‚ сразу Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ строковыС константы, Π΄Π°Ρ‚ΡŒ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° извСстным Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌ Π²Ρ…ΠΎΠ΄Π°, ΠΏΡ€ΠΎΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π½Π½Ρ‹Π΅ ΠΈΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π±Ρ‹Π»ΠΎ: AE 00
Π° стало: mov ax, 0

ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π² ΠΌΠ΅ΠΌΠΎ-ΠΊΠΎΠ΄

ДизассС́мблСр β€” транслятор, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π² тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° языкС ассСмблСра.

По Ρ€Π΅ΠΆΠΈΠΌΡƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ дСлятся Π½Π°

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ автоматичСских дизассСмблСров ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ Sourcer[1]. Π’Π°ΠΊΠΈΠ΅ дизассСмблСры Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ листинг, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π² тСкстовом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ β€” IDA. Он позволяСт ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π° дизассСмблирования ΠΈ являСтся вСсьма ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ инструмСнтом для исслСдования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

ДизассСмблСры Π±Ρ‹Π²Π°ΡŽΡ‚ ΠΎΠ΄Π½ΠΎΠΏΡ€ΠΎΡ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΡ€ΠΎΡ…ΠΎΠ΄Π½Ρ‹Π΅. Основная Ρ‚Ρ€ΡƒΠ΄Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ дизассСмблСра β€” ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚ машинного ΠΊΠΎΠ΄Π°, поэтому Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π°Ρ… автоматичСски ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ собираСтся информация ΠΎ Π³Ρ€Π°Π½ΠΈΡ†Π°Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π° Π½Π° послСднСм ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π΅ формируСтся ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ листинг. Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ позволяСт ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ этот процСсс, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ просматривая Π΄Π°ΠΌΠΏ дизассСмблируСмой области памяти, программист ΠΌΠΎΠΆΠ΅Ρ‚ сразу Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ строковыС константы, Π΄Π°Ρ‚ΡŒ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° извСстным Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌ Π²Ρ…ΠΎΠ΄Π°, ΠΏΡ€ΠΎΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π½Π½Ρ‹Π΅ ΠΈΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π§Π°Ρ‰Π΅ всСго дизассСмблСр ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ для Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (ΠΈΠ»ΠΈ Π΅Ρ‘ части), исходный тСкст ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ нСизвСстСн β€” с Ρ†Π΅Π»ΡŒΡŽ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, копирования ΠΈΠ»ΠΈ Π²Π·Π»ΠΎΠΌΠ°. Π Π΅ΠΆΠ΅ β€” для поиска ошибок (Π±Π°Π³ΠΎΠ²) Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΈ компиляторах, Π° Ρ‚Π°ΠΊΠΆΠ΅ для Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ создаваСмого компилятором машинного ΠΊΠΎΠ΄Π°.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ΄Π½ΠΎΠΏΡ€ΠΎΡ…ΠΎΠ΄Π½Ρ‹ΠΉ дизассСмблСр (ΠΊΠ°ΠΊ ΠΈ построчный ассСмблСр) являСтся составной Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ДизассСмблСр

По Ρ€Π΅ΠΆΠΈΠΌΡƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ дСлятся Π½Π° автоматичСскиС ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ автоматичСских дизассСмблСров ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ Sourcer. Π’Π°ΠΊΠΈΠ΅ дизассСмблСры Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ листинг, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π² тСкстовом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ β€” IDA. Он позволяСт ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π° дизассСмблирования ΠΈ являСтся вСсьма ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ инструмСнтом для исслСдования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

ДизассСмблСры Π±Ρ‹Π²Π°ΡŽΡ‚ ΠΎΠ΄Π½ΠΎΠΏΡ€ΠΎΡ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΡ€ΠΎΡ…ΠΎΠ΄Π½Ρ‹Π΅. Основная Ρ‚Ρ€ΡƒΠ΄Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ дизассСмблСра β€” ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚ машинного ΠΊΠΎΠ΄Π°, поэтому Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π°Ρ… автоматичСски ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ собираСтся информация ΠΎ Π³Ρ€Π°Π½ΠΈΡ†Π°Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π° Π½Π° послСднСм ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π΅ формируСтся ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ листинг. Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ позволяСт ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ этот процСсс, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ просматривая Π΄Π°ΠΌΠΏ дизассСмблируСмой области памяти, программист ΠΌΠΎΠΆΠ΅Ρ‚ сразу Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ строковыС константы, Π΄Π°Ρ‚ΡŒ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° извСстным Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌ Π²Ρ…ΠΎΠ΄Π°, ΠΏΡ€ΠΎΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π½Π½Ρ‹Π΅ ΠΈΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ΄Π½ΠΎΠΏΡ€ΠΎΡ…ΠΎΠ΄Π½Ρ‹ΠΉ дизассСмблСр (ΠΊΠ°ΠΊ ΠΈ построчный ассСмблСр) являСтся составной Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°.

Π§Π°Ρ‰Π΅ всСго дизассСмблСр ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ для Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (ΠΈΠ»ΠΈ Π΅Ρ‘ части), исходный тСкст ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ нСизвСстСн β€” с Ρ†Π΅Π»ΡŒΡŽ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, копирования ΠΈΠ»ΠΈ Π²Π·Π»ΠΎΠΌΠ°. Π Π΅ΠΆΠ΅ β€” для поиска ошибок (Π±Π°Π³ΠΎΠ²) Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΈ компиляторах, Π° Ρ‚Π°ΠΊΠΆΠ΅ для Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ создаваСмого компилятором машинного ΠΊΠΎΠ΄Π°.

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с исполняСмым ΠΊΠΎΠ΄ΠΎΠΌ ΠΈΠ»ΠΈ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ΠΎΠΌ, созданным Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… языках высокого уровня (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, java) имССтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ тСкст Π½Π° языкС ассСмблСра, Π½ΠΎ Π΄Π°ΠΆΠ΅ ΠΈ структуру классов ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π° Ссли ΠΏΡ€ΠΈ компиляции исполняСмого Ρ„Π°ΠΉΠ»Π° Π½Π΅ Π±Ρ‹Π»Π° ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π° отладочная информация β€” Ρ‚ΠΎ ΠΈ исходный тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Для ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ‚Π°ΠΊΠΈΡ… возмоТностСй ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ обфускация.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π›ΡƒΡ‡ΡˆΠΈΠ΅ инструмСнты пСнтСстСра: ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΈ ΠΈ дизассСмблСры

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ

OllyDbg

Π’ΡƒΡ‚ Π½Π°Π΄ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ стал OllyDbg стандартным user-land ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ, взятым
Π½Π° Π²ΠΎΠΎΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Ρ…Π°ΠΊΠ΅Ρ€Π°ΠΌΠΈ ΠΈ ΠΎΠ½ΠΈ Ρ‚ΡƒΡ‚ ΠΆΠ΅ Π·Π°Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π΅Π³ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ. Появилось мноТСство
нСстандартных сборок: ΠΎΠ΄Π½ΠΈ фиксят ошибки Ольги, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»,
Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈ – ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ Π΅Π΅ ΠΎΡ‚ ΠΏΡ€ΠΎΡ‚Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ². НСдостаток β€” «Π΄Π²ΠΈΠΆΠΎΠΊ» ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚
Ρ‡Π΅Ρ€Π΅Π· MS Debugging API, ΡΡ‚Ρ€Π°Π΄Π°ΡŽΡ‰ΠΈΠΉ ΠΊΡƒΡ‡Π΅ΠΉ Π²Ρ€ΠΎΠΆΠ΄Π΅Π½Π½Ρ‹Ρ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ, ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Π·Π°
собой мноТСство трудноудаляСмых слСдов ΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Π»Π΅Π³ΠΊΡƒΡŽ мишСнь для
Π°Π½Ρ‚ΠΈΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ.

Immunity Debugger

Π˜Π·Π²Π΅ΡΡ‚Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½ΠΎΠΉ Ρ„ΠΈΡ€ΠΌΡ‹, ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉΡΡ Π½Π° бСзопасности ΠΈ
ΡΠΊΡ€Π΅ΡΡ‚ΠΈΠ²ΡˆΠ΅ΠΉ ΠžΠ»ΡŒΠ³Ρƒ 1.10 с ΠŸΠΈΡ‚ΠΎΠ½ΠΎΠΌ – ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ языком, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΡ‡Π΅Π½ΡŒ
Π»Π΅Π³ΠΊΠΎ ΠΈ быстро ΠΏΠΈΡΠ°Ρ‚ΡŒ скрипты. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ прямо Π² ОльгС, Π½ΠΎ это Π½Π΅
слишком ΡƒΠ΄ΠΎΠ±Π½ΠΎ, всС приходится Π΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΈ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ (Ρ‚ΠΈΠΏΠ°
поиска Π² памяти), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ Π΄Π°Π²Π½ΠΎ Ρ€Π΅ΡˆΠ΅Π½Ρ‹.

Π’ Immunity Debugger Π²Ρ…ΠΎΠ΄ΠΈΡ‚ мноТСство Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, написанных Π½Π° ΠŸΠΈΡ‚ΠΎΠ½Π΅ ΠΈ
Π·Π°Ρ‚ΠΎΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄ хакСрскиС Π½ΡƒΠΆΠ΄Ρ‹. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΈΠ· ΠŸΠΈΡ‚ΠΎΠ½ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ,
срСди ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… значится ΠΈ searchcrypt.py – ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠ΅ срСдство ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ
ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… криптографичСских Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ²: AES, BLOWFISH, CAMELLIA, CAST, MD5, RC2,
RC5, RIPEMD160, SHA1, SHA256, SHA512.

Immunity Debugger ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ спСциалисты ΠΏΠΎ бСзопасности,
Π²Ρ‹ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ proof-of-concept expolit’Ρ‹, написанныС Π½Π° ΠŸΠΈΡ‚ΠΎΠ½Π΅ ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅
для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π² срСдС Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°. И хотя Ρ…Π°ΠΊΠ΅Ρ€ с Π³ΠΎΠ»ΠΎΠ²ΠΎΠΉ
разбСрСтся Π² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ exploit’Π° ΠΈ Π±Π΅Π· Immunity Debugger’Π°, портируя
exploit Π½Π° любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ язык, Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ оказываСтся Π½Π°
ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ ΡΡ‚Π°Π½ΠΎΠ²ΡΡΡŒ основным инструмСнтом, Π²Ρ‹Ρ‚Π΅ΡΠ½ΡΡŽΡ‰ΠΈΠΌ ΠžΠ»ΡŒΠ³Ρƒ.

ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½Ρ‹ΠΉ ΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ ΠΌΠΎΠ΄, основанный Π½Π° ОльгС 1.10 ΠΈ ΡΠΎΠ±Ρ€Π°Π²ΡˆΠΈΠΉ Π² своСм
дистрибутивС ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², скриптов, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΡƒΡ‡Ρƒ Π΄Ρ€ΡƒΠ³ΠΈΡ…
ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… инструмСнтов. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Immunity Debugger’Π°, ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π½Π°
спСциалистов ΠΏΠΎ бСзопасности, YDbg писался Ρ…Π°ΠΊΠ΅Ρ€Π°ΠΌΠΈ ΠΈ для Ρ…Π°ΠΊΠ΅Ρ€ΠΎΠ², Π»ΠΎΠΌΠ°ΡŽΡ‰ΠΈΡ…
Π·Π°Ρ‰ΠΈΡ‚Ρ‹ с ΠΏΡ€ΠΎΡ‚Π΅ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ (Ρ‚Π΅ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΡΠΎΠΏΡ€ΠΎΡ‚ΠΈΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΎΠΌΡƒ полоТСнию Π΄Π΅Π» ΠΈ
Π½Π°ΠΏΠΈΡ‡ΠΊΠ°Π½Ρ‹ Π°Π½Ρ‚ΠΈ-ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΠ°ΠΌΠΈ, Ρ€Π°ΡΠΏΠΎΠ·Π½Π°ΡŽΡ‰ΠΈΠΌΠΈ присутствиС Ольги ΠΏΠΎ Π³Π»Π°Π²Π½ΠΎΠΌΡƒ
ΠΎΠΊΠ½Ρƒ с Π΅Π΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ ΠΏΡƒΠ½ΠΊΡ‚Π°ΠΌ мСню). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ бросаСтся Π² Π³Π»Π°Π·Π° ΠΏΡ€ΠΈ
запускС YDbg (исполняСмый Ρ„Π°ΠΉΠ» ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ ΠΈΠ· OLLYDBG.EXE Π² SND.exe),
это «ΠΏΠΎΠΊΠΎΡ€Π΅ΠΆΠ΅Π½Π½Ρ‹Π΅» ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ мСню. Π’ частности, «Memory» ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΠ»ΠΎΡΡŒ Π² «M3m0ry», «SEH
chain» Π² «S3H chain», «Breakpoints» Π² «Br3akp01nts» ΠΈ Ρ‚. Π΄. Π‘Π»ΠΎΠ²ΠΎΠΌ, всС
«Ρ…акСрскиС» ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ – ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉ ΠΈΡ… Π½Π°ΠΉΡ‚ΠΈ (СстСствСнно, Π² Π½ΠΎΠ²Ρ‹Ρ… вСрсиях
ΠΏΡ€ΠΎΡ‚Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² навСрняка появится дСтСкция YDbg, Π½ΠΎ ΠΏΠΎΠΊΠ° ΠΎΠ½ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ скрываСтся ΠΎΡ‚
ΠΊΡƒΡ‡ΠΈ Π·Π°Ρ‰ΠΈΡ‚, палящих ΠžΠ»ΡŒΠ³Ρƒ). Π’ состав дистрибутива YDbg Π²Ρ…ΠΎΠ΄ΠΈΡ‚ 36 популярных
ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² (ΠΈ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Ρ‹ΡΠΊΠ°Ρ‚ΡŒ ΠΏΠΎ Π‘Π΅Ρ‚ΠΈ Π² ΠΈΡ… поисках). Π‘Ρ€Π΅Π΄ΠΈ Π½ΠΈΡ… затСсался
настоящий Π±Ρ€ΠΈΠ»Π»ΠΈΠ°Π½Ρ‚ – IDA Sigs, Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ само Π·Π° сСбя. Π”Π°-Π΄Π°!
Π­Ρ‚ΠΎ ΠΏΠ»Π°Π³ΠΈΠ½, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ IDA-сигнатуры ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΠΉ ΠΈΡ… Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΊ
Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΌ функциям Π² ОльгС ΠΈΠ»ΠΈ Π² YDbg. Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΏΠ»Π°Π³ΠΈΠ½ – red-hawk
(«ΠΊΡ€Π°ΡΠ½Ρ‹ΠΉ ястрСб») прСдставляСт собой ΠΏΠ°Π½Π΅Π»ΡŒΠΊΡƒ инструмСнтов, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΡƒΡŽ, Π²
частности, ΠΎΠ΄Π½ΠΈΠΌ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΌΡ‹ΡˆΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΠΈ останова Π½Π° Π½ΡƒΠΆΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
(Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Visual Basic’Π΅ это Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ‚ΠΈΠΏΠ° __vbaStrCmp ΠΈΠ»ΠΈ __vbaStrCopy,
ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ для сравнСния ΠΈ копирования строк, соотвСтствСнно). ΠΠ°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅
Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ просто Π²ΠΈΠ·ΠΆΠ°Ρ‚ ΠΎΡ‚ восторга, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ красный ястрСб фактичСски являСтся
ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠΎΠΌ ΠΏΠΎ Π²Π·Π»ΠΎΠΌΡƒ, Π° Ρ‚Π°ΠΊ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉ Π΄ΠΎΠ³Π°Π΄Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ! ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ \SCRIPT
содСрТит 637 скриптов, Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… для снятия Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ…
ΠΏΡ€ΠΎΡ‚Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ²/ΡƒΠΏΠ°ΠΊΠΎΠ²Ρ‰ΠΈΠΊΠΎΠ² исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ всяких Ρ€ΡƒΡ‚ΠΈΠ½Π½Ρ‹Ρ… Π΄Π΅Π».

SoftICE

ВсСм извСстный (Π΄Π°ΠΆΠ΅ Ρ‚Π΅ΠΌ, ΠΊΡ‚ΠΎ ΠΊ крякингу Π΄Π°ΠΆΠ΅ Π±Π»ΠΈΠ·ΠΊΠΎ Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΠ») ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ
для Windows, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π΄Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ядра. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°, ΠΊΠ°ΠΊ
Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ OllyDbg, SoftICE способСн ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² Windows, Ρ‡Ρ‚ΠΎ
ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ². Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² ΠΎΠ±Ρ…ΠΎΠ΄ MS Debugging API, Ρ‡Ρ‚ΠΎ
Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ услоТняСт Π°Π½Ρ‚ΠΈΠΎΡ‚Π»Π°Π΄ΠΊΡƒ, ΠΎΠ΄Π½Π°ΠΊΠΎ, учитывая, Ρ‡Ρ‚ΠΎ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π·Π°Ρ‰ΠΈΡ‚
soft-ice – Π²Ρ€Π°Π³ Π½ΠΎΠΌΠ΅Ρ€ ΠΎΠ΄ΠΈΠ½, практичСски всС ΠΏΡ€ΠΎΡ‚Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ Π»Π΅Π³ΠΊΠΎ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°ΡŽΡ‚ Π΅Π³ΠΎ
присутствиС Π² систСмС. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ Π±Π΅Π· ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ
(ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ упомянСм дальшС). SoftICE Π±Ρ‹Π» ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ NuMega,
которая Π²ΠΊΠ»ΡŽΡ‡Π°Π»Π° Π΅Π³ΠΎ Π² ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для быстрой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ
Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Driver Studio, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ
впослСдствии Π±Ρ‹Π» ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Ρ‘Π½ Compuware. Помнишь, сколько всСвозмоТных ΠΌΠ°Π½ΡƒΠ°Π»ΠΎΠ²
Π±Ρ‹Π»ΠΎ ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ установки Soft-Ice’Π° ΠΏΠΎΠ΄ Windows XP? Π£Π²Ρ‹, начиная с висты,
ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ приостановили Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π² Π°ΠΏΡ€Π΅Π»Π΅ 2006 Π³ΠΎΠ΄Π°.
На ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ сайтС Π΅Π³ΠΎ Π½Π΅ Π½Π°ΠΉΡ‚ΠΈ ΠΈ доступСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Ρ‚ΠΎΡ€Ρ€Π΅Π½Ρ‚Π°Ρ….

Microsoft Debugger

Π’Ρ…ΠΎΠ΄ΠΈΡ‚ Π² состав WDK (Windows Driver Kit β€” Π±Ρ‹Π²ΡˆΠΈΠΉ Driver Development Kit ΠΈΠ»ΠΈ
DDK), Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ Debugging Tools. Оба ΠΎΠ½ΠΈ бСсплатны, Π½ΠΎ WDK Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ
большС ΠΏΠΎ ΠΎΠ±ΡŠΠ΅ΠΌΡƒ ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ рСгистрации для получСния Windows
Live ID, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Debugging Tools раздаСтся Π±Π΅Π· рСгистрации вмСстС с SDK,
Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ докумСнтация, Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ нСсколько
ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², ΠΊΠ°ΠΊ Π½Π°Π΄ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹.

ΠŸΠΎΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ΡΡ Π² Π΄Π²ΡƒΡ… рСдакциях: windbg.exe – графичСский интСрфСйс ΠΈ cdb.exe β€”
интСрфСйс ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ строки. И Ρ‚Π° ΠΈ другая ΡΠ²Π»ΡΡŽΡ‚ΡΡ лишь Ρ‚ΠΎΠ½ΠΊΠΈΠΌΠΈ ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠ°ΠΌΠΈ Π²ΠΎΠΊΡ€ΡƒΠ³
dbgeng.dll, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ, собствСнно, ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ основной ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹ΠΉ «Π΄Π²ΠΈΠΆΠΎΠΊ»,
Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΎΠ±ΠΌΠ΅Π½Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ Ρ€Π°Π· Π½Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ
трассСр с нуля, dbgeng.dll ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² качСствС «Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°» ΠΏΡ€ΠΈ
написании ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Ρ… распаковщиков исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ².

Syser Kernel Debugger

GNU Debugger – основной ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ ΠΏΠΎΠ΄ UNIX, ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π½Π° ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΈΠ½ΠΎΠΉ
Ρ‚ΠΈΠΏ ΠΌΡ‹ΡˆΠ»Π΅Π½ΠΈΡ, Ρ‡Π΅ΠΌ всС Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Π΅ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΈ. Π­Ρ‚ΠΎ Π½Π΅ просто ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ
ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ, скорСС это станок с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ, Π³ΠΈΠ±ΠΊΠΈΠΌ ΠΈ ΠΌΠΎΡ‰Π½Ρ‹ΠΌ
интСрфСйсом. ΠžΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ с Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ «Ρ‡Π΅ΡΡ‚Π½Ρ‹Π΅» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ β€” ΠΎΠ΄Π½ΠΎ ΡƒΠ΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΈΠ΅,
Π½ΠΎ Π² ΠΏΠ»Π°Π½Π΅ Π°Π½Ρ‚ΠΈΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π΄Π΅Π»Π° обстоят ΠΏΠ»ΠΎΡ…ΠΎ. GDB Π΄Π°ΠΆΠ΅ Π½Π΅ пытаСтся ΡΠΎΠΏΡ€ΠΎΡ‚ΠΈΠ²Π»ΡΡ‚ΡŒΡΡ ΠΈ
Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‡Π΅Ρ€Π΅Π· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ptrace (которая Π½Π° самом Π΄Π΅Π»Π΅ никакая Π½Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, Π°
систСмный Π²Ρ‹Π·ΠΎΠ²). GDB ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ нСспособСн ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅
хотят, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡ… ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Π»ΠΈ. А Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠ°Π»ΠΎ-ΠΏΠΎΠΌΠ°Π»Ρƒ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ.

ЕстСствСнно, ΠΏΠΎΠΌΠΈΠΌΠΎ GDB ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΈ для никсов, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€,
Lin-Ice, Π½ΠΎ ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π°Π½Ρ‚ΠΈΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΏΠΎΠ΄ UNIX Ρ‚ΠΎΠ»ΡŒΠΊΠΎ-Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚
Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒΡΡ, Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Π²ΠΏΠΎΠ»Π½Π΅ ΡΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΈ GDB.

IDA Pro

Hex-Rays

W32DASM

ΠΠ°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΡ‹Ρ‚Ρ‹Π²Π°ΡŽΡ‚ большиС трудности ΠΏΡ€ΠΈ Π²Π·Π»ΠΎΠΌΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ,
написанных Π½Π° Delphi ΠΈ Builder, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ классичСскиС Ρ‚Ρ€ΡŽΠΊΠΈ, Ρ‚ΠΈΠΏΠ° бряка Π½Π°
GetWindowTextA, Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚. Для дСкомпиляции ΠΊΠΎΠ΄Π°, написанного Π½Π° Delphi/Borland
C++ Builder, Ρ‚.Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ VCL ΠΎΡ‚ Borland, Π½ΡƒΠΆΠ΅Π½
ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, ΠΈ ΠΎΠ½ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π΅ DeDe. По сути, это СдинствСнный
Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ дСкомпилятор для Delphi-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ смотря Π½ΠΈ Π½Π° Ρ‡Ρ‚ΠΎ Π½ΠΈΠΊΠ°ΠΊ
Π½Π΅ ΡƒΠΌΠΈΡ€Π°ΡŽΡ‚. DaFixer, Π°Π²Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΊ соТалСнию, забросил Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ своим
Π΄Π΅Ρ‚ΠΈΡ‰Π΅ΠΌ, поэтому ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ страницы Ρƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π΅Ρ‚.
ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠΎΠ²Π»Π°Π΄Π°Ρ‚ΡŒ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ Π½Π° Delphi, Ρ‡ΠΈΡ‚Π°ΠΉ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ «Π’Π·Π»ΠΎΠΌ
Π‘ΠΎΡ€Π»Π°Π½Π΄ΠΈΠΈ: изящная дСкомпиляция Delphi».

PE Explorer

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *