Перейти к содержанию

Адрес в памяти по имени функции [CE]


Рекомендуемые сообщения

Исследовал игру Terraria наткнулся на такие адреса в CE:

За каждой такой текстовой записью CE закрепляет адрес.
 

Terraria.NPC::Transform
Terraria.NPC::SpawnSkeletron
Terraria.NPC::SpawnWOF
Terraria.NPC::SpawnNPC
Terraria.Player::ItemCheck
Terraria.Player::Hurt
Terraria.Player::ItemCheck

Эти записи полностью идентичны функциям из исходников игры. Например класс Player и его функция Hurt итп.

Как CE смог это получить?

7e665e2c26d1.png

Ссылка на комментарий
Поделиться на другие сайты

12 часа назад, uhx сказал:

Тут вроде как может быть только одно: таблица экспорта

Выгрузил все модули, просканировал их на содержание экспорта приведенных функций, но так и ничего подобного не нашел. Возможно, это как то связанно с памятью .NET?

Ссылка на комментарий
Поделиться на другие сайты

22 часа назад, Zer0 сказал:

Как CE смог это получить?

 

Просто дизассемблер получил имена функций т.к. в .net, vb они подписаны по стандарту, это что-то типа файла содержащего  отладочную информацию и информацию о состоянии проекта, которую использует Visual Studio вшитого сразу в экзешник. В c++ такая информация генерируется в отдельный .pdb файл к примеру.

 

Таблицы экспорта это совсем не то, она используются для "связи" между файлами, чтобы можно было использовать модули, а не месить весь код в один файл.

 

ur6yZaUXUWI.jpg

Изменено пользователем partoftheworlD
Ссылка на комментарий
Поделиться на другие сайты

38 минут назад, partoftheworlD сказал:

 

Просто дизассемблер получил имена функций т.к. в .net, vb они подписаны по стандарту, это что-то типа файла содержащего  отладочную информацию и информацию о состоянии проекта, которую использует Visual Studio вшитого сразу в экзешник. В c++ такая информация генерируется в отдельный .pdb файл к примеру.

 

Таблицы экспорта это совсем не то, она используются для "связи" между файлами, чтобы можно было использовать модули, а не месить весь код в один файл.

 

Скрытый текст

ur6yZaUXUWI.jpg

Откуда это взято? Можно эту информацию получить самому? Есть решение на каком либо ЯП или просто список действий, которые нужно выполнить? Кстати найти такое я смог только в CE, x64dbg или ольга не выдают подобного(возможно просто я не нашел).

Ссылка на комментарий
Поделиться на другие сайты

5 часов назад, partoftheworlD сказал:

Таблицы экспорта это совсем не то, она используются для "связи" между файлами

Да, я в курсе. Вообще у них конечно другое предназначение, чем просто "разбиение, чтоб не месить в один файл" :)

Я думал здесь именно на модули и разбита игра, ибо не знал что CE способен вытаскивать подобную инфу, думал он только функции из экспорта подписывает.

В таком случае все это можно вытащить через какой-нибудь .NET Reflector.

 

PS IDA Pro как-то очень стремно этот код на шарпе дизассемблирует))

Изменено пользователем uhx
Ссылка на комментарий
Поделиться на другие сайты

13 часа назад, partoftheworlD сказал:

Просто дизассемблер получил имена функций т.к. в .net, vb они подписаны по стандарту, это что-то типа файла содержащего  отладочную информацию и информацию о состоянии проекта, которую использует Visual Studio вшитого сразу в экзешник. В c++ такая информация генерируется в отдельный .pdb файл к примеру.

Совершенно не обязательно. Если при/после компиляции не была применена обфускация кода, то СЕ все функции увидит, как на ладони. Тот же S.T.A.L.K.E.R. - в нем все функции видны, хотя он собран без отладочной информации. Надо в СЕ просто поставить галочку "Show symbols"

Ссылка на комментарий
Поделиться на другие сайты

8 часов назад, uhx сказал:

PS IDA Pro как-то очень стремно этот код на шарпе дизассемблирует))

А разве IDA умеет дизассемблировать .NET приложения? Они же в байт-код компилируются.

Ссылка на комментарий
Поделиться на другие сайты

21 час назад, Xipho сказал:

А разве IDA умеет дизассемблировать .NET приложения?

Да

PEUQuCHt9n8.jpg

, для декомпиляция .Net ilspy только

 

21 час назад, Xipho сказал:

Надо в СЕ просто поставить галочку "Show symbols"

Он обычно выводит только библиотечные функции. Хотя может мне с играми не везёт.

 

В 20.06.2017 в 17:10, Zer0 сказал:

Откуда это взято?

IDA, но думаю можно на любом ЯП задампить. Это не сложно.

Изменено пользователем partoftheworlD
Ссылка на комментарий
Поделиться на другие сайты

1 час назад, partoftheworlD сказал:

Он обычно выводит только библиотечные функции. Хотя может мне с играми не везёт.

У него есть два вида символов - kernel symbols или как-то так - это как раз библиотечные. А есть еще просто symbols - это как раз внутренние.

Ссылка на комментарий
Поделиться на другие сайты

11 час назад, Xipho сказал:

У него есть два вида символов - kernel symbols или как-то так - это как раз библиотечные. А есть еще просто symbols - это как раз внутренние.


Во как, даже с моим уровнем знаний частенько открываю что-то новое для себя на форуме.

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.