Wake of Gods Forum | Форум Во Имя Богов

Full Version: Исследование героев
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
(01.09.2010 21:22)Berserker Wrote: [ -> ]Хотя может МОР что посоветует, он вроде как обходился без азов программирования.
Ну... что я делал без азов программирования? Баловался с Артмани и только. Правда, мне удалось увеличить кол-во монстров и артефактов, но ведь это и не требовало знаний асма. Просто перенаправление указателей, перенесение таблиц и увеличение максимального кол-ва по некоторым адресам. Что к чему лежит и что представляют собой циферки в окошке АртМани - оставалось тёмным лесом.
А первое, что я сделал в Olly - отключил Маскировку и передал контроль её колдовства ERM-функции. Просто подсмотрел, как такое проделал Феанор с книжкой колдовства Сказочного Дракона. На тот момент единственной мне понятной командой асма была jmp.
(01.09.2010 21:45)Berserker Wrote: [ -> ]на прочтение одной лишь спецификации по которым уйдёт пол жизни
а можно мне эту спецификацию? хоть раз в жизни почитаю.
Страуструп "Язык программирования C++"
Стандарты СИ 89, 99
(01.09.2010 21:22)Berserker Wrote: [ -> ]
Quote:О Боже... Х_Х
Я бы начал с обычного: wasm.ru Введение в крекинг с нуля. Хотя может МОР что посоветует, он вроде как обходился без азов программирования.

Bers, самое интересное, что я с этого и начал. Ab Нравится, хорошее руководство, и впрямь для чайников. А то с Калашниковым как-то не пошло...
Я в своё время Калашникова прочитал, только тольку-то? ДОС уже мёртв, как и 16-битный режим. Фактически, под винду совсем другой ассемблер. Ещё можно глянуть туториалы Изелона. Там, правда, основной упор на WinApi, это чуть позже.
У меня тоже Калашников есть. Sm Тоже читал... засыпая над одной и той же главой. То есть, обучение получилось чисто практическое - OllyDbg + справка по командам ассемблера.
Собственно, для реверсинженеринга нужен именно язык с близостью к ассемблеру и минимальной типизацией. Паскалевские указатели наводят на меня тоску, необходимость явного приведения типов чуть ли не при перегоне из символа в число - напрягает.
___________________
Я реверсинженерингом Героев занялся после успешной сдачи экзамена по АЭВМ (ну то бишь по основам ассемблера).
До этого правда был небольшой опыт ковыряния дампов мобильников
(брр..отсутствие толковых отладчиков, любая ошибка в коде роняет все к чертям собачьим, никакая плавающая арифметика - короче, адЪ кромешный)
, но ARM таки несколько отличается от x86 :D
(01.09.2010 22:06)Berserker Wrote: [ -> ]Страуструп "Язык программирования C++"
Стандарты СИ 89, 99
и что там такого страшного?
Quote:Собственно, для реверсинженеринга нужен

   Для обратного инжиниринга нужен отладчкик и/или дизассемблер. А вот писать плагины и серьёзные вещи нужно как раз-таки на безопасных языках. Ассемблер в паскале толковый, приведение типов нужно редко (и уж точно не для перевода символ-код для которых везде есть функции ord/chr), а когда нужно - делается осознанно и остаётся при этом низкоуровневым. Символ ^ - дело привычки. Выглядит не элегантно, но не так ужасно, как, простите, уродливая перегрузка математического оператора "*" или СИ++ вариант перегрузки СИ++ операции И "&". Впрочем, ко всему привыкаешь, я синтаксиса специально не касался.
   Тот, кто пишет часто на динамических языках, понимает, насколько сильно важна строгая типизация для создания хоть сколько-нибудь надёжных систем. Мой опыт программирования на PHP и JavaScript твердит, что даже эмуляция типизации позволяет словить орду ошибок ещё на ранних стадиях выполнения. Иначе мы имеем дело с уже известным законом, что написание кода отнимает 10% времени, отладка 90% + никакой гарантии, что код корректен или в будущем не обвалится.
   В общем всё это субъективный опыт, так что лучше вернёмся к предмету темы.
Добавлено:
Quote:и что там такого страшного?
Ничего, кроме over 1100 страниц текста + бесконечного упоминания, что реализация той или иной фичи зависит от компилятора.
Как-то содержание темы немного стало выходить за пределы "Героев". Ab
Пфф, прочитал и почти полностью осилил первые 4 статьи из "Введения в крэкинг с нуля". На сегодня хорош, а завтра повторим.
Сразу большая просьба к тем, кто давно этим занимается: было бы, наверное, неплохо составить список адресов - какой адрес за что отвечает. И отправить этот список, например, в первый пост. Первое, что привожу на данную тему, - адрес, найденный Сергроем:

0x4DAF06 - после повышения уровня любого героя
Камрады, пожалуйста, подскажите, какой адресок отвечает за активацию/деактивацию кнопки "Журнал" на карте приключений. Или, что тоже неплохо, подскажите способ поиска этого адреса. Искать пробовал так: ставил герою 999 копейщиков, ставил штук 20 стражей прохода с требованием принести 1 копейщика и, подходя к очередному стражу, отдавал или не отдавал копейщика. В артмани искал неизвестное значение, и, в зависимости от отдачи или невыдачи копейщика и изменения кнопки "Журнал" (всегда старался, чтобы в журнале было максимум одно задание), нажимал "Отсеять -> значение изменилось/не изменилось". Не нашел. Впрочем, тут и способ дурной.
Простейший способ - сменить id кнопки на какой-нибудь незаюзанный:
Кнопка теперь будет иметь CM:I = 50, станет нажимаемой всегда, но утратит свою функцию и подсказки по ПКМ и наведении мыши. Но это, думаю, то, что тебе и надо.
Reference URL's