Всем привет! Нужно сделать такую задачку, как контроль запуска исполняемых файлов. Я наметил два пути: 1. Инжект моего окда в *.ехе 2. Инкапсуляция чужого кода в мой Для первого варианта нашел пример, но он не рабочай, бъет РЕ (http://vxheavens.com/lib/vbp00.html) и решил с этим не париться Второй вариант гораздо проще - вкомпилировать в мою аппу другую апапу, потом выгрузить ее в мэп и запустить. Вопрос - как заставить MASM вкомпилить в секцию данных ехе-шник и отследить его начало и размер внутри секции данных? Спасибо!
"Снова пиши в комерс" - ??? апуск из памяти походу нужен - естественно вопрос был в том - как файл вкомпилить!?
утилита eff из пакета ufmod умеет конвертить любые бинари в массивы нескольких форматов, в том числе С, masm, delphi
for(char* p = binBegin; p < binBegin + binLen; p++) printf(" 0x%.2X,", *p); // конкретный формат зависит от цели ? а как запускать из памяти пе-шку планируете? (это к ТС)
qqwe например в масм массив должен состоять из строк определенной длины, иначе не компилит типа такого Code (Text): db 010h, 000h, 000h, 000h, 001h, 000h, 001h, 000h, 022h, 056h, 000h, 000h, 022h, 056h, 000h, 000h db 001h, 000h, 008h, 000h, 064h, 061h, 074h, 061h, 086h, 09Dh, 000h, 000h, 080h, 080h, 080h, 080h db 080h, 080h, 080h, 080h, 081h, 085h, 090h, 097h, 08Dh, 075h, 066h, 070h, 080h, 082h, 07Fh, 07Fh так что алгоритм слегка придется усложнить
Asterix for(char* p = binBegin; p < binBegin + binLen; p++) printf( (p - binBegin) % MAX_IN_LINE ? ", 0x%.2X" : "\n\tdb 0x%.2X", *p); // конкретный формат зависит от цели курсы суперхэцккеров 5тый час. ходите на курсы суперхэцккеров! там вас научат правильно цвиркать ротом! (к ТС) главное решено. остались мелочи - запуск из памяти пе-бин-образа. ну, тут вы и сами одной левой
Asterix в самое сердце! впрочем, лучше так for(char* p = 0; printf(p % MAX_IN_LINE ? ", 0x%.2X" : "\n\tdb 0x%.2X", *(char*)(p + binBegin)) && p < binLen; p++); чтото мне говорит, что стоило б еще чуть укоротить не читал, хотя видел такую статью на рсдн. возникали определенные но к ней. впрочем, для простого случая пойдет