Справка по программному обеспечению RE для начинающих, адреса ОЗУ, загрузка библиотеки, с чего начать?

Для начала я использую OS X, основанную на UNIX.

У меня есть начальные теоретические знания в C++, и я хотел бы расширить свои знания с помощью обратного проектирования программного обеспечения. Каждое руководство, в которое я попадаю, кажется, прыгает на полпути, и я, кажется, пропускаю гигантский пробел в информации, необходимой для запуска. Моя конечная цель — успешно создать работающую dylib для любого приложения. С чего начать изучение Ram-адресов, как они работают, как загружаются библиотеки и какого черта я вообще начинаю читать, какую тему. Все, что я узнал до сих пор, имеет четкую отправную точку, определенный синтаксис, но я просто нахожу, что все использует терминологию, которую я не понимаю. Я обнаруживаю, что просто разветвляюсь все больше и больше, потому что в статье использовалось ключевое слово, которое я не понимаю, я гуглил его, в другой использовалось пять, которых я не понимаю, и я просто застрял. Рассматриваемое приложение не имеет изменяющихся адресов памяти, но хотелось бы также узнать, как это компенсировать с помощью смещений.

С чего начать?!


person DanielS21    schedule 04.06.2015    source источник
comment
Хороший reverse engineer должен быть инженером-программистом с 5-20-летним опытом. Вам нужно понять, как работают все эти технологии (в основном), прежде чем пытаться строить теории о деконструкции существующей системы. Просто идти в ногу с современными технологиями (если у вас есть работа, которая мешает), будет хорошей задачей в первые годы после получения степени CS. Я бы порекомендовал разместить этот вопрос на Quora.com, так как этот сайт процветает благодаря такого рода вопросам. Наверняка там уже ответили. Удачи.   -  person shellter    schedule 04.06.2015


Ответы (1)


Прежде чем приступить к реверс-инжинирингу, вам потребуется нечто большее, чем простое теоретическое знание языка Си. Забудьте пока о C++, C проще и настолько низкоуровневый, что как только вы освоите его, вы поймете, как программы работают внутри. Приобретите копию книги Брайана Кернигана и Денниса Ритчи «Язык программирования Си» и прочтите всю книгу.

Как только вы почувствуете себя комфортно при написании программ на C, познакомьтесь со стандартами UNIX, такими как POSIX, а затем перейдите к специфическим для OS X материалам. Лучшим ресурсом для программирования OS X является http://developer.apple.com. Ссылка ниже объясняет, как динамические библиотеки работают в OS X. Как только вы хорошо поймете C, все станет понятно.

https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/OverviewOfDynamicLibraries.html

person fernan    schedule 04.06.2015