Возможно ли создание базонезависимого кода на C/C++ (например внедрение части кода в другой исполняемый файл) На асме-то ноу проблем, а вот на ЯВУ.... Ссылки с кодом на УРА! З.Ы. Заранее спасибо
2 FreeMan Да мне на геморой пофигу (когда писал вирус на асме гемороя тоже не мало,так может гемороя на С с переносимостью меньше будет чем все на асме колбасить) Ты по-подробнее, ссылочку кинь или еще чего-нить )
Щас,сформулирую конкретнее! Мне необходимо например часть своего кода с процедурами внедрить в процесс,потом исполниться в нем (как реализуется на асме - знаю,делал) . Мы заранее не знаем по какому аресу будем распологаться поэтому используем относительную адресацию.Так вот,как реализуется относительный вызов процедур на С/С++
можешь на асме исходник выложить ? а на Си я и сам ищю как это сделаеться. если найдёшь вылоиж тоже пожалуйста.
Лови (только там 1300 строк и я на твоем месте бы забил,почитай статьи на wasm там все есть) FreeMan ну куда же ты делся ! сказал можно но хоть примерчик дай ^_^
AksakaL Жуть Зачем на каждом шагу dword ptr и offset втыкать? А по поводу сабжа тоже хотел бы просветлиться. p.s. Народ, а никто не писал что-нибудь вроде invoke, только чтобы с базонезависимым кодом использовать можно было?
тогда проще всего генерить бинарник с фиксапами проинжектить его полностью (по любому адрессу), после чего обработать их (пример на форуме уже выкладывался, юзай поиск) а базонезависимый код на c/cpp - имхо, уж очень гемморно да и хз всегда возможно ли
А это чтоб потом каждый раз под отладчиком не лазить и смотреть а не пихнул ли я по ошибке абсолютный адресок или наоборот смещение вместо значения (зато когда потом разгребаешь все понятно : где значение где смещение)-это раз (+ базонезависимость - это 2) Коммент к исходнику
WIN32 В чем сложности базо-независимого вызова? 1. Ищем дельта смещения - это разница между текущим расположением какой либо части кода и тем адресом который предположил компиллер 2. Добавляй к значению вызова эту дельту 3. ВСЕ )
А вообще, есть поиск по форуму. Из результатов поиска можно увидеть слова Dr.Golova, что функция написанная только с локальными и только с ними уже базо-независима )
Хмм че ето у тя написано?В Masme точно не переваривается (Мне не совсем понятно Proc2_ADDR[ecx]-что делается этой командой?)
В масме это переваривается. А этой командой заталкивается в стек значение Proc2_ADDR. Компилятор сгенерирует такой код push [ecx+xxxxxx] p.s. какой топик оживлённый Не успеешь слово сказать, тебе уже 2 скажут.