В этой статье я хочу поделиться практическими методами отладки, модификации и устранения багов в 32-х и 64-х разрядных приложениях под ОС Windows, разработанных на языке C/C++, исходные коды которых по тем или иным причинам не стали достоянием общественности.
Этот пробел отчасти можно попытаться устранить, например, с помощью плагина Hex-Rays для IDA Pro, и зачастую удаётся довольно качественно восстановить нужный участок исходного кода, обнаружив в нём проблемное место. Но после этого всегда возникает вопрос - что с этим исправленным кодом делать дальше, как и где его можно использовать? На данном этапе мне всегда хотелось взять этот отдельно декомпилированный фрагмент программы, поменять в нём что-нибудь и затем каким-то чудесным образом «поместить обратно» в программу.
Далее будет описан один из возможных способов реализации этой идеи на практике.
В предыдущей статье был рассмотрен механизм защиты от клонирования адаптеров программатора XELTEK SuperPro 6100.
В этой статье будет описано создание собственного программного модуля к этому программатору, который, путем определенной модификации кода может быть приспособлен для работы с любыми другими типами микросхем — на данный момент не поддерживаемыми или, как в нашем случае, заявленными только формально.
Предыстория
В очередной раз у нас появилась задача, которая на первый взгляд решалась довольно просто — понадобилось сделать копию одной специализированной микросхемы флэш-памяти — mDOC H3 SDED5-512M.
Данная микросхема была разработана более десяти лет назад. Вот pdf (1) с ее описанием. Ниже приведена небольшая выдержка из русскоязычного анонса:
… компания msystems подготовила семейство mDOC, пригодное для использования в качестве «твердотельных дисков»…
Встроенное программное обеспечение TrueFFS, на которое возложены задачи управления флэш-памятью mDOC H3, выполняет собственный контроллер модуля, что превращает ее в завершенный, автономный блок, легко добавляемый к разнообразным карманным устройствам.…
Эта история началась с того, что нам как-то понадобилось прочесть/записать микросхему FLASH памяти типа SPANSION S29GL512 в корпусе TSOP56. До этого времени мы успешно эксплуатировали программатор XELTEK SuperPro 500P. Но, к сожалению, установленная в нем сокета с 48-ю контактами не позволяла этого сделать даже с применением переходника. Само собой, что и в программе на PC для этого программатора поддержка таких микросхем отсутствовала.
Пора обновляться, решили мы, и приобрели (не сочтите за рекламу) программатор того же производителя модели SuperPro 6100, в котором используются сменные адаптеры с различными сокетами. Также отдельно был приобретен необходимый, как нам тогда казалось, адаптер модели CX1011 с сокетой TSOP56 (в комплекте с программатором шел адаптер с сокетой ZIF48).
Условимся в дальнейшем называть программу программатора просто софтом, потому что «программа программатора» звучит не очень эстетично.
После получения всего этого мы собрали конструктор из программатора с адаптером и попытались начать с ним работу.