Как изменить скомпилированную программу, возможно ли это вообще?
Имеется небольшая скомпилированная под линукс программа, исходники были на C. Надо вырезать/изменить условие одной проверки, либо вытащить рабочий вариант куска самой программы. Как и чем это делать?
P.S.
Были попробованы IDA PRO;RecStudio;boomerang;
RecStudio выдал неадаптируемый текст, boomerang - вырезание проверки условия и куска кода.
Вот IDA PRO как раз и нужно ковырять. В простом варианте найти проверку условия и изменить его, чуть более продвинуто - реверснуть всю логику (ну, и переписать ее на нужном языке).
pi314: У меня впринципе есть асмокод этой программы, спасибо иде. Примерно представляю что там надо и как изменить что-бы выполнить нужную мне задачу. Проблема в практически абсолютном незнании мою ассемблера и невозможности запустить итог по причике кучи ошибок.
Rubikoid: То, что кажется интуитивно "понятным" на уровне логики, может в ассемблере выглядеть совершенно неузнаваемо, благодаря оптимизациям компилятора. Иногда даже найти проверку того самого "простого" условия - задачка нетривиальная. Так что, или сами разбирайтесь, или обратитесь к кому-нибудь за помощью, т.к. иного пути, кроме изучения/понимания ассемблера тут нет :(
В результате использовались - IDA PRO;Hexplorer;W32dsmv.
В IDA PRO/W32dsmv находилась строка с условной проверкой, в моем случае - jle; В уголку IDA показывает адрес выделеной строки в самом файле. Далее - находи нужный адрес в Hexplorere и заменяем два байта на 90 и 90(nop);