Если коротко я работаю с апи у которой нет документации, а исходники скрыты. У меня есть только псевдокод одной из первых версий этого апи и могу глянуть символы через дизассемблер. Мне нужно получить некоторые данные из класса этого апи, и с помощью псеводкода я узнал, что в этом классе есть нужные мне данные в каком-то из полей, но в псеводкоде не пишутся имена полей. Так вот, к сути вопроса.
Есть какие-то способы узнать имя этого поля?
Я прогаю с телефона и всякие Иды мне не помогут. Может есть что-то подобное на жабный рефлекшн? Чтоб получить имена всех полей класса? Там уже я дальше сам разберусь
C/C++
Получить имена полей класса c++
глупость какую-то спрашиваешь. зачем тебе имена? думаешь, поля как собачка по имени откликнутся?
вопрос задан плохо, так что давай гадать. судя по описанию, твое АПИ - это набор абстрактный классов. Тогда варианта 2.
1) "Реальные" классы - наследники абстрактных. Тогда просто скопируй экземпляр класса в массив размером sizeof и перебирай, пытаясь поймать корректные значения полей.
2) "Реальные" классы просто содержат указатель на имплементацию. Тут можно пробовать через "вариант 1" вытащить указатель на импл и уже его по "варианту 1" разбирать, но никто не может гарантировать, что внутри импла не будет указателя на следующий импл и т.д.
вопрос задан плохо, так что давай гадать. судя по описанию, твое АПИ - это набор абстрактный классов. Тогда варианта 2.
1) "Реальные" классы - наследники абстрактных. Тогда просто скопируй экземпляр класса в массив размером sizeof и перебирай, пытаясь поймать корректные значения полей.
2) "Реальные" классы просто содержат указатель на имплементацию. Тут можно пробовать через "вариант 1" вытащить указатель на импл и уже его по "варианту 1" разбирать, но никто не может гарантировать, что внутри импла не будет указателя на следующий импл и т.д.
Страшная тайна заключается в том, что у полей и методов нет имен. IDE с++ подсказывает имя метода класса, имя его поля, только потому что разработчик библиотеки этого класса, предоставил специально для этой IDE специальную библиотеку с этими именами (вроде lib называется, но не уверен). Да и если подумать зависит ли что-то от имени?
(с) Кажется его зовут Х**й, только пишется с двумя Х )
(с) Кажется его зовут Х**й, только пишется с двумя Х )
С помощью программатора сн341а. Там все раскрывается тайные коды.
David Xubunaia
А что нибудь по проще??
У ж меня ведро
У ж меня ведро
Один из способов узнать имена полей класса C++ - это использовать такой инструмент, как cppinsight, который анализирует исходный код класса C++ и автоматически создает над ним слой абстракции. С помощью этого вы можете получить доступ к списку членов и классов, которые отображаются в этом классе. Кроме того, инструменты обратного инжиниринга, такие как IDA Pro и OllyDbg, позволяют вам разбирать исполняемые файлы, создавая представление о том, что делает программа, предоставляя такие элементы, как имена символов, строки, ссылки на данные, функции и т.д.
David Xubunaia
Ну ида эт на пк. Остальное чекну, но палагаю, тут все для пк?
Похожие вопросы
- Помогите понять отношения между классами / C/C++
- Лёгкое задание с классами C++
- Синтаксическая ошибка класса. C++
- Информатика, 8 класс. C++
- Написать программу на C++.Создать класс vector3d, задаваемый тройкой координат. Создать конструктор...
- Класс Poll и класс Variant (тема инкапсуляция) C++
- Передача в метод класса указателя на функцию C++
- Как в C++ продолжить классы разные сгруппировано в файлах .h и .cpp, при этом не переопределяя классы эти?
- Работа с классами в C++
- C++ класс Реализация класс стека,
1 вариант уже пробовал, но запарился от крашей проги (которая по минут 10 запускается)
Крч.
Для начала у меня идет хедер класса этогт апи
class A {
public:
всякие методы которые я взял из символов апишки
};
Дальше я хукаю метод класса этого апи по символу и получаю экземпляр класса А
Дальше мне нужно получить поле с данными, но для этого мне нужно узнать имя этого поля, чтобы в хедере прописать
Нужно, чтоб имя поля в хедере совпало с нужным именем поля в апи.
А так насчёт оффсетов.
Мне как то знакомый показывал такой способ получения полей по оффсетам
SomeData* sm = (SomeData*)((char*) someClazz + оффсет);
Так можна?
Еще был какой-то способ, но я не смог найти переписку