![]() |
eXeL@B —› Вопросы новичков —› Вопросец по поводу asm кода |
Посл.ответ | Сообщение |
|
Создано: 18 июля 2007 02:11 · Личное сообщение · #1 Вопрос простой, просто сам туплю чего-то. Когда в asm виде вызвается некая функция то часто помимо передачи параметров устанавличвается определенное значение регистра ECX например: PUSH -1 PUSH ECX MOV ECX,DWORD PTR [EaX+4103] CALL Func1 Ну так вот, если установку ecx убрать или изменить то все упадет, причем что интересно у многих функций этот ECX равный перед вызовом функции хотя функции делают совершенно разные вещи. Что это за ecx и почему он не передается в виде параметра? ![]() |
|
Создано: 18 июля 2007 05:23 · Личное сообщение · #2 sliderZ Хз. над, чем ты там паришься, но это похоже на гавнокод который оставляют после себя компиляторы ЯВУ, для получения служебной информации типа хендлы и т. д… Вполне возможно, что прога имеет в теле у себя отладочную инфу, юзает компоненты, COM интерфейс и etc,… а в EAX указатель на структуру(таблицу) с "общими данными"… Менять естественно нельзя и к параметрам функи отношение только косвенное… ----- ЗЫ: истЕна где-то рядом, Welcome@Google.com ![]() |
|
Создано: 18 июля 2007 05:28 · Личное сообщение · #3 |
|
Создано: 18 июля 2007 11:11 · Личное сообщение · #4 |
|
Создано: 18 июля 2007 11:42 · Личное сообщение · #5 |
|
Создано: 18 июля 2007 11:48 · Личное сообщение · #6 |
|
Создано: 18 июля 2007 15:10 · Личное сообщение · #7 |
|
Создано: 18 июля 2007 16:52 · Личное сообщение · #8 |
|
Создано: 18 июля 2007 17:09 · Личное сообщение · #9 |
|
Создано: 18 июля 2007 22:28 · Личное сообщение · #10 |
|
Создано: 19 июля 2007 05:09 · Поправил: Demon666 · Личное сообщение · #11 1nn0cent Ога! Тоже самое только терминологистее… sliderZ А вообще в таких случаях надо 1. с инета слить для ИДЫ файлы для разных компиляторов с расширением *.sig 2. открыть подопытную прогу надо в ИДЕ и выбрать Menu->View->Open Subviews->Signatures(Shift+F5) и там ПКМ->Apply new signature… и выбрать для компилятора нужную базу сигнатур, ида пометит участки кода, которые не посредственно принадлежат компилятору, но при этом также надо еще и не пренебрегать воспользоваться старыми версиями баз так как там более свежие сигны могут не все найти Для примера есть для дельфина 7 но использовать и для 6, 5, 3 а также еще можно прихватить от билдера С.. подобных, в зависимости какие компоненты используются в проге… таким методом можно добиться более качественного парсинга приги чем в dede, но это зависит от желания и знаний естественно… 3. после того как ида распарсит статик код в проге мы будем видеть код, который написал сам программист, сталобыть все как на ладони… 4. и еще примочка которую нужно делать чтобы крякозябры в иде не отображались а были нормальные имена фунок Иногда помогает Menu->Option->Demangled names… и выбрать Names ----- ЗЫ: истЕна где-то рядом, Welcome@Google.com ![]() |
|
Создано: 31 июля 2007 15:13 · Личное сообщение · #12 |
|
Создано: 31 июля 2007 15:48 · Личное сообщение · #13 sliderZ пишет: PUSH -1 PUSH ECX MOV ECX,DWORD PTR [EaX+4103] CALL Func1 такое часто бывает, в Delphi программах, например. скорее всего, Func1 - метод какого-то класса, принимает два аргумента. а в ECX адрес самого объекта. когда заглядываешь в такие функции, то скорее всего там где-нибудь в начале mov esi, ecx (или mov в какой-нибудь другой "устойчивый" регистр типа edi и ebx), и потом это esi всюду используется... ![]() |
|
Создано: 31 июля 2007 15:50 · Личное сообщение · #14 |
![]() |
eXeL@B —› Вопросы новичков —› Вопросец по поводу asm кода |