Пишем упаковщик по шагам. Шаг восьмой. DLL и экспорты.
2012-09-26 14:47:07
Предыдущий шаг здесь. Наш упаковщик уже умеет все, кроме одной вещи - упаковки бинарников, имеющих ...
+ развернуть текст сохранённая копия
Предыдущий шаг здесь. Наш упаковщик уже умеет все, кроме одной вещи - упаковки бинарников, имеющих экспорты. Это, в частности, абсолютное большинство DLL-файлов и OCX-компоненты. Некоторые exe-файлы также имеют экспорты. Наш упаковщик должен пересобрать таблицу экспортов и расположить ее в доступном месте, чтобы загрузчик мог ею воспользоваться. Пока что можно немного расслабиться - в упаковщике кода [...]
Тэги:
assemble,
c/c++,
executable,
pack,
portable,
window,
новичок,
упаковщик
Пишем упаковщик по шагам. Шаг седьмой. Релокации.
2012-09-25 23:01:09
Предыдущий шаг здесь. Там, кстати, имелась ошибка в коде, я ее поправил. Она проявлялась, когда у ...
+ развернуть текст сохранённая копия
Предыдущий шаг здесь. Там, кстати, имелась ошибка в коде, я ее поправил. Она проявлялась, когда у файла было больше одного TLS-коллбэка. Появилась новая версия библиотеки для работы с PE-файлами (0.1.7). Перекачайте и пересоберите ее. Перейдем к следующей немаловажной части многих PE-файлов - релокациям. Они используются, когда невозможно загрузить образ по указанному в заголовке базовому адресу. [...]
Тэги:
c/c++,
executable,
pack,
portable,
window,
новичок,
упаковщик
Пишем упаковщик по шагам. Шаг шестой. TLS.
2012-09-21 23:39:14
Предыдущий шаг здесь. Появилась новая версия библиотеки для работы с PE-файлами (0.1.5). Перекачайте ...
+ развернуть текст сохранённая копия
Предыдущий шаг здесь. Появилась новая версия библиотеки для работы с PE-файлами (0.1.5). Перекачайте и пересоберите ее. Пришло время заняться обработкой такой важной вещи, как Thread Local Storage (TLS) - локальной памяти потока. Что она из себя представляет? Это небольшая структура, которая говорит загрузчику PE-файлов о том, где находятся данные, которые должны быть выделены в памяти [...]
Тэги:
assemble,
c++,
c/c++,
callback,
dll,
exe,
executable,
pack,
portable,
tls,
window,
новичок,
упаковщик
Пишем упаковщик по шагам. Шаг пятый. Ресурсы.
2012-09-19 15:11:36
Предыдущий шаг здесь. Пора усовершенствовать наш упаковщик. Он уже способен упаковывать и запускать ...
+ развернуть текст сохранённая копия
Предыдущий шаг здесь. Пора усовершенствовать наш упаковщик. Он уже способен упаковывать и запускать самые простые бинарники, имеющие лишь таблицу импорта. Бинарники с экспортами, ресурсами, TLS, DLL с релокациями ему пока что не под силу. Нужно над этим работать. Для начала сделаем обработку второй по важности вещи после импортов - директории ресурсов. Сначала добавим пару полей [...]
Тэги:
c++,
c/c++,
executable,
pack,
portable,
window,
новичок,
упаковщик
Пишем упаковщик по шагам. Шаг четвертый. Запускаем.
2012-09-18 00:00:12
Предыдущий шаг: здесь. Появилась новая версия библиотеки для работы с PE-файлами (0.1.4). ...
+ развернуть текст сохранённая копия
Предыдущий шаг: здесь. Появилась новая версия библиотеки для работы с PE-файлами (0.1.4). Перекачайте и пересоберите ее. Итак, из прошлых шагов мы имеем работающий упаковщик и базовый распаковщик, который пока что ничего не делает. В этом шаге мы добьемся запуска простых упакованных программ (которые не имеют ничего, кроме таблицы импорта и, возможно, релокаций). Первое, что нужно [...]
Тэги:
c++,
c/c++,
dll,
exe,
executable,
pack,
portable,
window,
новичок,
упаковщик