NoX World - форум об игре NoX

 
Пожалуйста, войдите или зарегистрируйтесь.

Войти
Расширенный поиск  
Сейчас онлайн стрима нет!
Сейчас на сервере никого нет!

Обязательно все ознакомьтесь с новыми Правилами Портала!

Актуальные новости:
Официальная игра №149! 11 декабря 17-00 по Москве!
Отключена авторизация на сервере и изменён IP! Подробности.


Важные темы:
Как играть по сети? Понятное руководство!
Правила Сервера NoxWorld.
Как помочь форуму финансово?

Автор Тема: Помощь с IDA  (Прочитано 2649 раз)

0 Пользователей и 1 Гость смотрят эту тему.

2530

  • Гильдия The Pinnacle
  • Старожил
  • *
  • Карма: 79
  • Оффлайн Оффлайн
  • Сообщений: 665
  • Не вижу смысла в Nox 2
  • Awards Победитель конкурса "Угадай Автора Карты" 2015
    • Просмотр профиля
    • Nox Infinity Project
    • Awards
Помощь с IDA
« Ответ #0 : 25/12/2014 13:57:38 »

Всем привет.
Каждый день я вижу как всплывает тонна новой информации касательно памяти в Nox. Казалось бы, это не может не радовать. Но в какой-то момент я понимаю что именно те, кто занимаются разбором памяти Nox, самые полезные люди в любом Nox комьюнити. Ибо скрипты-обёртки на lua может налепить любой худо-бедно выучивший синтаксис и умеющий копипастить. Это меня лично расстроило. И твёрдо решил заняться вопросом изучения памяти.
Как-то раз мне доводилось беседовать с Dio и он сказал, что все роют данные при помощи IDA. Спустя некоторое время я получил эту программу и даже несколько раз открывал её. И через 10 минут бессилия закрывал. Я никак не понимаю как можно с помощью этого отследить данные, так как там сплошной ассемблер и фиг его знает когда что вызывается. Я долгое время бился с этим, но так и ничего не понял. Видимо программист из меня хреновый и это не исправить.
Может быть поможете постичь тайны дизассембла? С чего мне следует начать? Какой ассемблер нужно учить? Каким образом нужно искать данные? Google не даст ответы на эти вопросы точно, так как гайда "Как дизассемблить Nox" там нет.
Начальные данные:
1. Знание C\C++ на уровне "учим в институте(МАИ факультет 8) + изучал WINAPI для проекта и чем больше я узнаю, тем больше кажется, что нихрена не знаю".
2. Знание Lua на уровне "Круто для Unimod.". Не трогал сабрутины, коллектор мусора, стандартные lua библиотеки (require'ы) и программирование оконных приложений. Знаком с интеграцией C# в lua.
3. Знание утилит для распаковки\обработки Nox данных на уровне: "Знал бы метод кодирования, написал бы свою утилиту" и "Добавить новый объект могу, но с оговорками".
4. Нулевое знание assembler. Известен только тот факт, что "У разных семейств процессоров свой ассемблер".
5. Знание IDA менее 1%. Описать можно так: "Открыть базу могу и прочитать некоторую информацию. Открыть exe с нуля не могу.". На этом конец.
6. Желание освоить что-то новое. Процентов 70%. Остальные 30% на "готов развить старое".
7. Знание Unimod реакций и команд на уровне: "Всё наизусть не помню, но ума хватает чтоб открыть исходники и глянуть как всё работает. Пишу плагины."
P.S>Всё на что меня хватило - это управление уровнем Nox Quest и состоянием-анимацией игрока и сделано это было не через IDA, а через наблюдение за переменной по смещению или перебором разных значений в WinHack. Хотелось бы надыбать больше информации.
Записан
Карма рассчитана на индикацию среднего отношения к участнику, а не степень важности человека. Не гонитесь за ней.
Nox Infinity 0.9.0A в процессе разработки.
Мой Twitch
Все мои видео и Twitch стримы

Evengard

  • SysAdmin
  • Администратор
  • Старожил
  • ***
  • Карма: 185
  • Оффлайн Оффлайн
  • Сообщений: 2724
  • Director
  • Awards Столп форума 2012 Активным участникам сходок - 2013 За сервер Орден 'За заслуги перед форумом I степени'
    • Просмотр профиля
    • Awards
Помощь с IDA
« Ответ #1 : 25/12/2014 14:31:00 »

Ух ё, это такая обширная тема, к тому же которую на этом форуме знают только я, Дио, Сим да мобыть ещё КирКонджурер с Ларбоссом (хм, если так подумать, не так уж мало народу).

Ассемблер используется x86. Так и пишешь в гугле x86 assembler. На самом деле он достаточно простой, там элементарные команды вроде "записать то-то в память по такому то адресу, проверить это равно ли тому, прыгнуть туда-то, вызвать то-то" и тд. Конечно тонкости есть... Но в общем и целом ассемблер простой язык. Проблема в том, что он настолько простой, что сложную логику на нём писать приходится с самых основ ^^ в этом и есть сложность.

Насчёт Иды... Ну, скажем так - я ещё не видел такой интуитивно непонятной программы, да. Они все сочетания клавиш свои сделали, причём абсолютно неочевидным образом, мдя... На самом деле там достаточно знать несколько сочетаний клавиш чтоб нормально в ней ориентироваться. Типа нажатия кнопки X на названии функции, то что поиск там по ALT+T ну и прочие такие мелочи.

В общем тема очень обширная, и лучшим способом было бы одновременный разбор чего-то вместе, дабы как это делается было видно наглядно - другой вопрос у кого на это время найдётся. И да, перед этим вспомни теорию указателей в С/С++, тебе в ассемблере это ОЧЕНЬ понадобится, если хочешь понять как там в память писать.
Записан
Не упоминай администраторов всуе...
С уважением, TriOptimum Corporation

PS: Покаяние - Признание своей вины в чем-либо, обычно с просьбой о прощении

2530

  • Гильдия The Pinnacle
  • Старожил
  • *
  • Карма: 79
  • Оффлайн Оффлайн
  • Сообщений: 665
  • Не вижу смысла в Nox 2
  • Awards Победитель конкурса "Угадай Автора Карты" 2015
    • Просмотр профиля
    • Nox Infinity Project
    • Awards
Помощь с IDA
« Ответ #2 : 25/12/2014 15:54:57 »

...
В общем тема очень обширная, и лучшим способом было бы одновременный разбор чего-то вместе, дабы как это делается было видно наглядно - другой вопрос у кого на это время найдётся. И да, перед этим вспомни теорию указателей в С/С++, тебе в ассемблере это ОЧЕНЬ понадобится, если хочешь понять как там в память писать.
1. Теорию указателей в C\C++ активно использую на практике, а значит проблем с этим не будет.
2. Если же у кого-нибудь найдётся, буду рад. В скайпе бываю практически каждый день.

За информацию об ассемблере огромное человеческое спасибо ^_^. Погуглим. Одной непоняткой меньше.

А что за отладчик в IDA? Кто-нибудь может рассказать?
Записан
Карма рассчитана на индикацию среднего отношения к участнику, а не степень важности человека. Не гонитесь за ней.
Nox Infinity 0.9.0A в процессе разработки.
Мой Twitch
Все мои видео и Twitch стримы

Evengard

  • SysAdmin
  • Администратор
  • Старожил
  • ***
  • Карма: 185
  • Оффлайн Оффлайн
  • Сообщений: 2724
  • Director
  • Awards Столп форума 2012 Активным участникам сходок - 2013 За сервер Орден 'За заслуги перед форумом I степени'
    • Просмотр профиля
    • Awards
Помощь с IDA
« Ответ #3 : 25/12/2014 17:42:33 »

Отладчик либо свой какой-то, либо майкрософтовский (не помню уже как зовётся), либо эмуль BOCHS. Я пользуюсь его своим Win32 debugger так и называется.
Записан
Не упоминай администраторов всуе...
С уважением, TriOptimum Corporation

PS: Покаяние - Признание своей вины в чем-либо, обычно с просьбой о прощении

TheSim

  • Клан "NoX Craft"
  • Постоялец
  • *
  • Карма: 31
  • Оффлайн Оффлайн
  • Сообщений: 287
  • Awards Активным участникам сходок - 2013 За релиз ЮниМода Знак 'За тягу к тайнам Nox'
    • Просмотр профиля
    • Awards
Помощь с IDA
« Ответ #4 : 26/12/2014 11:24:56 »

Ну тогда вообще проблем не будет.
Главное что нужно сделать/понять

Ну и прочитать статью например на MSDN про Calling Convention
Записан

Evengard

  • SysAdmin
  • Администратор
  • Старожил
  • ***
  • Карма: 185
  • Оффлайн Оффлайн
  • Сообщений: 2724
  • Director
  • Awards Столп форума 2012 Активным участникам сходок - 2013 За сервер Орден 'За заслуги перед форумом I степени'
    • Просмотр профиля
    • Awards
Помощь с IDA
« Ответ #5 : 26/12/2014 11:32:12 »

Ну хз, мне режим графа как раз оч нравится.
Записан
Не упоминай администраторов всуе...
С уважением, TriOptimum Corporation

PS: Покаяние - Признание своей вины в чем-либо, обычно с просьбой о прощении

2530

  • Гильдия The Pinnacle
  • Старожил
  • *
  • Карма: 79
  • Оффлайн Оффлайн
  • Сообщений: 665
  • Не вижу смысла в Nox 2
  • Awards Победитель конкурса "Угадай Автора Карты" 2015
    • Просмотр профиля
    • Nox Infinity Project
    • Awards
Помощь с IDA
« Ответ #6 : 26/12/2014 11:33:34 »

Sim, для чего нужно переименование адреса? Я могу править exe через IDA?
Записан
Карма рассчитана на индикацию среднего отношения к участнику, а не степень важности человека. Не гонитесь за ней.
Nox Infinity 0.9.0A в процессе разработки.
Мой Twitch
Все мои видео и Twitch стримы

Evengard

  • SysAdmin
  • Администратор
  • Старожил
  • ***
  • Карма: 185
  • Оффлайн Оффлайн
  • Сообщений: 2724
  • Director
  • Awards Столп форума 2012 Активным участникам сходок - 2013 За сервер Орден 'За заслуги перед форумом I степени'
    • Просмотр профиля
    • Awards
Помощь с IDA
« Ответ #7 : 26/12/2014 12:16:01 »

Переименование - это чтоб для себя понять что есть что. Ида потом эти имена подставит везде где этот адрес упоминается. И нет, из Иды править экзешники нельзя, для этого я использую хекс редактор HxD. В Иде есть вкладка hex - находишь участок который хочешь подправить в нём (ида сама подсвечивает), ищешь это в хекс редакторе, и вручную заменяешь опкоды на нужные.
Записан
Не упоминай администраторов всуе...
С уважением, TriOptimum Corporation

PS: Покаяние - Признание своей вины в чем-либо, обычно с просьбой о прощении

2530

  • Гильдия The Pinnacle
  • Старожил
  • *
  • Карма: 79
  • Оффлайн Оффлайн
  • Сообщений: 665
  • Не вижу смысла в Nox 2
  • Awards Победитель конкурса "Угадай Автора Карты" 2015
    • Просмотр профиля
    • Nox Infinity Project
    • Awards
Помощь с IDA
« Ответ #8 : 26/12/2014 12:38:50 »

Хорошо. Прикрепление ассоциаций полезная штука.
А как строится structures и enums вкладки? Я сам определяю их или IDA должна сама найти?
Записан
Карма рассчитана на индикацию среднего отношения к участнику, а не степень важности человека. Не гонитесь за ней.
Nox Infinity 0.9.0A в процессе разработки.
Мой Twitch
Все мои видео и Twitch стримы

Evengard

  • SysAdmin
  • Администратор
  • Старожил
  • ***
  • Карма: 185
  • Оффлайн Оффлайн
  • Сообщений: 2724
  • Director
  • Awards Столп форума 2012 Активным участникам сходок - 2013 За сервер Орден 'За заслуги перед форумом I степени'
    • Просмотр профиля
    • Awards
Помощь с IDA
« Ответ #9 : 26/12/2014 13:39:31 »

Сам. Что-то конечно Ида постарается найти, какие нить стандартные сигнатуры, но в основном всё сам.
Записан
Не упоминай администраторов всуе...
С уважением, TriOptimum Corporation

PS: Покаяние - Признание своей вины в чем-либо, обычно с просьбой о прощении

TheSim

  • Клан "NoX Craft"
  • Постоялец
  • *
  • Карма: 31
  • Оффлайн Оффлайн
  • Сообщений: 287
  • Awards Активным участникам сходок - 2013 За релиз ЮниМода Знак 'За тягу к тайнам Nox'
    • Просмотр профиля
    • Awards
Помощь с IDA
« Ответ #10 : 30/12/2014 16:26:52 »

А как строится structures и enums вкладки? Я сам определяю их или IDA должна сама найти?
Енумы объявляются буквой M, поля структур  Ctrl+T
Позволяет написать не
mov eax, [ebx+0x48] а например
mov eax, [ebx+BigUnitStruct.updateData]
Записан

Lаrboss

  • Старожил
  • *****
  • Карма: 108
  • Оффлайн Оффлайн
  • Сообщений: 897
  • Абстрагирую
  • Awards Знак 'Властелин Сил Природы' За редактор шрифтов - 2013 Медаль 'За программу Nox Server Notificator' За программу Nox Binder Знак 'За тягу к тайнам Nox'
    • Просмотр профиля
    • Awards
Помощь с IDA
« Ответ #11 : 31/12/2014 23:27:19 »

Ну хз, мне режим графа как раз оч нравится.
Кстати, да, мне тоже им удобней пользоваться, как - то наглядней.

Видимо программист из меня хреновый и это не исправить.
Да дело не в этом. У тебя просто нет знаний и опыта как работать с этим, новым для тебя, инструментом. В гугле все есть... ты, конечно, не найдешь инструкцию вида делай 1, делай 2, делай 3 и получи результат для конкретной программы/игры. Каждая программа - свой пазл. Нужен индивидуальный подход, особенно в играх.

Есть специальные тренировочные проги, CrackMe всякие, на них тренируйся. Главное пойми общий принцип + команды ассемблера выучи + научись работать в конкретном дисассембреле (IDA в данном случае).

Из дебагерров Olly вроде не плох, точно не скажу.
Записан
Отец читеров

Evengard

  • SysAdmin
  • Администратор
  • Старожил
  • ***
  • Карма: 185
  • Оффлайн Оффлайн
  • Сообщений: 2724
  • Director
  • Awards Столп форума 2012 Активным участникам сходок - 2013 За сервер Орден 'За заслуги перед форумом I степени'
    • Просмотр профиля
    • Awards
Помощь с IDA
« Ответ #12 : 01/01/2015 07:09:40 »

Олька такой же дизассемблер + дебаггер как и Ида. И тут уже скорее вопрос личных предпочтений. Мне, честно, Олька как-то не пошла.
Записан
Не упоминай администраторов всуе...
С уважением, TriOptimum Corporation

PS: Покаяние - Признание своей вины в чем-либо, обычно с просьбой о прощении

TheSim

  • Клан "NoX Craft"
  • Постоялец
  • *
  • Карма: 31
  • Оффлайн Оффлайн
  • Сообщений: 287
  • Awards Активным участникам сходок - 2013 За релиз ЮниМода Знак 'За тягу к тайнам Nox'
    • Просмотр профиля
    • Awards
Помощь с IDA
« Ответ #13 : 01/01/2015 14:21:18 »

Сила IDA в том, что он ползает туда и сюда по функциям и строит базу ссылок (которые по X видны), Olly так не очень умеет.
Записан
Расширенный поиск  
 

Страница сгенерирована за 0.045 секунд. Запросов: 20.