Подкинте пожалуйста оп код,который по image base адресу библиотеки даст адрес определенной Api функции.Или поделитесь ссылочкой на ресурс где такой код есть. Помогите плиз,давно интересует эта тема. Вот например мне нужно внедрить в сторонние ехе такой код: push 400 push 200 call Kernel32.Beep Я ведь немогу в ехе записать этот код: Code: call Kernel32.Beep его нужно записать так: Code: call rva адрес функции Как мне узнать RVA функции? Нужно к базовому адресу по которому спроецирована dll добавить VA интересующей меня функции,и так я получу RVA? Данная инфа меня интересует только в целях самообразования.
kernel32 - это системная либа которая грузится всегда по одному и томуже адерсу в пределах всех процессов в конкретной винде. По этому делай всё проще. В проге которая внедряет этот код, получи адрес нужной функции, а затем его юзай там где надо. И будет пахать отлично (проверено от win 2k до win7)/ И можешь заюзать абсолютный переход а не относительный. И тогда в твоем случае будет так: push 400 push 200 mov eax, адерс_Kernel32_Beep call eax
самый простой способ - на стеке находясь в EP будет лежать адрес функи из кернел32, то есть адрес внутри нужной длл у тебя уже есть, ищешь базу кернел32, делаешь адрес кратным 10000h в сторону убывания адресов и далее начинаешь отнимать также по 10000h, ища спроецированную в виртуальную память сигнатуру пе-файла, то есть MZ - таким образом находишь базу кернел32, далее разбираешь пе-заголовок ища адрес таблицы экспорта функций, далее разбираешь саму таблицу экспорта ища нужную тебе функцию по имени, ну или адрес функции GetProcAddress, для этого нужно конечно же немного почитать по структуре пе-файла, расписывать здесь это не имеет смысла ибо уже триста раз описано в пятистах мануалах например недурственно описано тут: http://wasm.ru/series.php?sid=14 или вообщем куча матчасти по теме тут: http://wasm.ru/publist.php?list=6