Re: Як користуватись IP Sniffer'ом ???
нова пошта вам у поміч!
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → Інше → Як користуватись IP Sniffer'ом ???
Для відправлення відповіді ви повинні увійти або зареєструватися
ну я не зовсім наздогнав, що мені тре робити, але я поставив всі галочки в Api фільтрі і запустив гру, а потім, в правому віконці, в розділі API, шукав щось, що починається на CreateProc, і знайшов таку штуку
це воно?
Воно також. Для того фільтри й існують, щоб записувати лише потрібні функції. Має бути ще один виклик цієї функції.
А печиво спочатку Коалі треба надіслати
Ну ось ще один виклик функції
а навіщо коалі пічєнькі?
Тепер дивіться у стек викликів в API Monitor, треба визначити яка функція викликала CreateProcessA й переходьте за тією адресою в Оллі - там має бути call, а печенькі коалі - за підказку про делегацію викликів функцій. Мені самому було приємно вашу розмову почитати.
Тепер дивіться у стек викликів в API Monitor, треба визначити яка функція викликала CreateProcessA й переходьте за тією адресою в Оллі - там має бути call, а печенькі коалі - за підказку про делегацію викликів функцій. Мені самому було приємно вашу розмову почитати.
а, ну якщо ви про массив методів разом з данними то це тааак, то було круто хД
ну я виділив той CreateProcessA, а в стеці ось що
побігав по цим адресам, але ніде Call не побачив
Викладай тут ЕХЕ. Так, здаєтья це знайома мені низькорівнева чорна магія.
Викладай тут ЕХЕ. Так, здаєтья це знайома мені низькорівнева чорна магія.
Значить я трішки копнув ЕХЕ, тож маю такі результати:
* Використовується протектор - найімовірніше VMProtect
* Щоб бачити CALL за тими адресами потрібно: знати як діє команда CALL і розуміти чим OFFSET(зсув) одрізняється од VA(віртуальна адреса) й RVA(відносна віртуальна адреса). До того ж слід мати уявлення про структуру PE файла. Як зарадити вам із копанням даних я вже знаю, проте вищевказані знання значно полегшать роботу.
Ну кароч трохи почитав про то. Call значить працює так. Заносить адресу наступної команди на верх стека, потім викликає процедуру по заданій адресі, а коли доходить до ret, то береться адреса зверху стека і таким чином слідуюча команда, котра буде виконуватись, буде знаходитись відразу після команди call. Зі зсувом я не зовсім розібрався, бо їх там купа, я навіть команду таку в ассемблері бачив. Можливо, зсув - це відстань від початку програми до чогось там. Про VA, це значить просто якась адреса, а RVA - адреса від початку якогось блоку. Наприклад, в опціональному заголовку PE файла є значення AddressOfEntryPoint, так це RVA від початку точки входу в програму, а ще є RVA директорії іморту.
до речі, та гра розроблена з використанням Source engine.
Зсув я мав на увазі файловий (ПЕ32 формата), а тепер розберися як одне витікає з іншого. Наприклад, як отримати VA, знаючи offset і навпаки ( RVA <-> offset, RVA <-> VA, offset <-> VA) Бо зміниш щось у пам'яті, а потім треба буде порахувати як це змінити на диску. Після цього треба буде знайти зневадник, якого не бачить прога і встановити апаратні точки зупину (Hardware access breakpoint) на потрібні ділянки пам'яті. Таким чином можна легко відстежити шифрування, навіть не розуміючи систему команд процесора Чи програмної віртуальної машини.
Знаєте. Я щось не зовсім наздоганяю. Спочатку я гадав, що зсув, VA, RVA - це три різні речі. Але на одному з форумів я прочитав, що RVA це те ж саме, що й файловий зсув. Приклад з форуму - Якщо файл завантажується в віртуальну пам'ять за адресою 400000h, а виконуватись програма починає з адреси 401000h, то віртуальна адреса це 400000h, а RVA це 1000h.
Майже вірно, але... прочитайте ще про файлове вирівнювання (поле FileAlign) і тоді ви пізнаєте шизуху Майкрософта))
Приклад Vindictus:
FileAlignment (Файлове вирівнювання) = 0х200
ImageBase = (адреса завантаження образа) = 0х400000
AddressOfEntryPoint (точка входу) = 0x93182
Перша секція .text
поле VirtualAddress = 0x1000 - це насправді RVA
поле RawAddress = 0x400 - файловий зсув початку першої секції
Отож завдання змінити перший байт за адресою точки входу -
Точка входа знаходиться в першій секції.
Її VA буде AddressOfEntryPoint+ImageBase
Її RVA є AddressOfEntryPoint
Її файловий зсув буде AddressOfEntryPoint-(.text).VA+(.text).RawAddress
Так, іноді RVA і файловий зсув це одне і теж, але так не завжди.
І гляньте сюди Розібравши функцію додавання секції можна багато про що дізнатися.
Для відправлення відповіді ви повинні увійти або зареєструватися