eXeL@B —› Вопросы новичков —› Как избавиться от релоков в длл. |
Посл.ответ | Сообщение |
|
Создано: 09 января 2017 14:14 · Личное сообщение · #1 Вообщем хотел чтобы в ollydbg либу можно было править в любом месте. Но из-за релоков при загрузке мой код ломается. Как бы это обойти. На экзешниках удалял прогой Stripreloc, а как быть с либами. Можете подкинуть вин апи для загрузки шифрованной либы в памяти и ее там расшифровке сначала, а только потом loadlibrarya, чтобы делать. |
|
Создано: 09 января 2017 14:22 · Личное сообщение · #2 |
|
Создано: 09 января 2017 14:49 · Личное сообщение · #3 yuryrce, а если либу зашифровать и расшифровывать в памяти, а потом делать loadlibrarya ? Только как правильно это сделать, не подскажите набор апи чтобы ее в память подгружать и расшифровывать, а то из-за релоков получается толком не написать ей в точку входа расшифровщик, а надо это делать из проги, которая ее грузит. |
|
Создано: 09 января 2017 15:03 · Поправил: Boostyq · Личное сообщение · #4 Ну, у твоей программы есть потенциальная база, и если база у тебя занята, то загрузчик должен выбрать другое свободное место. Если нужно двигать, то нужна таблица релокации, чтобы знать где править прыжки, иначе крашить будет. У exeшника, я думаю, можно удалить, т.к. вначале еще нет загруженных библиотек, но вот с dllками два варианта: 1) двигай базу через компилятор, и, если повезет и двигать не нужно, то можно удалить релоки. 2) оставлять таблицу По поводу шифрования можешь использовать любое, я например писала свой формат контейнера простенький, а затем загрузчик (аналог loadlibrary) Вот рабочий пример: https://www.codeproject.com/Tips/430684/Loading-Win-DLLs-manually-without-LoadLibrary П.с. так кстати некоторые анти-читы делают, для своих модулей ----- В облачке многоточия |
|
Создано: 09 января 2017 15:05 · Личное сообщение · #5 mazaxaker либо пиши базонезависимый код, либо добавь в таблицу адреса RelocEditor 8796_09.01.2017_EXELAB.rU.tgz - Reloc.rar |
|
Создано: 09 января 2017 15:13 · Личное сообщение · #6 SReg, на 7 64 бит пробую в проге релок таблицу длл получить, и она закрывается) Видать баг, попробую на виртуалке хпшной. А если загрузить длл через MapViewOfFile, провести расшифровку и потом передать адрес начала длл, который возвращает MapViewOfFile и передать его в LoadLibraryA, сможет ли она так понять и загрузить либу, то есть хочу после мапирования и расшифровки либы передать управление на DllMain либы таким образом. Добавлено спустя 11 минут Boostyq пишет: 1) двигай базу через компилятор А как, куда там лезть в свойства проекта как понимаю ? Пишу в visual studio c++ 2010. |
|
Создано: 09 января 2017 16:10 · Личное сообщение · #7 |
|
Создано: 09 января 2017 20:13 · Личное сообщение · #8 |
|
Создано: 11 января 2017 20:51 · Личное сообщение · #9 |
|
Создано: 11 января 2017 23:07 · Личное сообщение · #10 |
|
Создано: 11 января 2017 23:23 · Личное сообщение · #11 ёпта...поставь в пе_редаче флаг в хидере - релокстрипед, и будет тебе счастье.. ----- Чтобы юзер в нэте не делал,его всё равно жалко.. | Сообщение посчитали полезным: difexacaw |
|
Создано: 12 января 2017 01:20 · Личное сообщение · #12 |
|
Создано: 12 января 2017 02:26 · Поправил: dosprog · Личное сообщение · #13 |
|
Создано: 12 января 2017 15:48 · Личное сообщение · #14 mazaxaker Как сказали в #2 дллка не может быть не релокабельна, она не будет подгружена из за занятых адресов или возможно загрузка такого модуля блокируется загрузчиком по причинам безопасности, в любом случае так делать нельзя. Сначала нужно загрузить модуль, потом его изменять. Либо редактировать фиксапы. ----- vx |
|
Создано: 12 января 2017 15:56 · Личное сообщение · #15 |
|
Создано: 12 января 2017 20:51 · Поправил: dosprog · Личное сообщение · #16 |
|
Создано: 13 января 2017 04:25 · Личное сообщение · #17 |
eXeL@B —› Вопросы новичков —› Как избавиться от релоков в длл. |