Kuzya69 пишет: Во, а dup разве 64-х битный Нет,x32,что не мешает ему создавать патчи и лоадеры для x64 программKuzya69 пишет: Чего-то я первый раз слышу об этом. Читайте больше
igorca пишет: не мешает ему создавать патчи и лоадеры для x64 программ патчи - возможно, а вот с лоадерами тяжко, так как 32битная версия WriteProcessMemory принимает, как ни странно, только 32битный адрес участка памяти - и это ограничивает доступное для правки пространство первыми 4мя гигабайтами, что далеко не всегда является приемлимым вариантом в х64 процессах.
Ранг: 431.7 (мудрец), 391thx Активность: 0.73↘0.32 Статус: Участник
Создано: 07 декабря 2015 02:22 · Поправил: dosprog · Личное сообщение · #8
Kuzya69 пишет: А исходники дуп-а никто не встречал?
Зачем нужны исходники dup'а? Там что, высшая математика, что ли? Понадобится лоадер под х64 - брать лоадер под х32 и править. Любой. Віше дали ссылку на тему, там есть х32 пример от PE_KILL'а.
Например у меня надо изменить байт по адресу $00000001401ab8e0. (Где ExeBase=$0000000140000000 и смещение в файле = 1ab8e0 ). И как это воспримет этот лоадер?
И этого хватит? Ф-ция WriteProcessMemory отработает как надо в 64-х битной системе, если лоадерная ф-ция поиска базы найдет правильный адрес? Извиняюсь, что так надоедаю. Просто Win7 (64-х битная), только на работе. Дома все 32-х битное. Вот и хочу подготовиться заранее. Чтоб на работе не терять время.
Ну вот и первый затык, на чужом компе проверили. Скомпилировал на 32-х битной Делфи. А проверял скомпиленный лоадер на 64-х битной Win7, прога-жертва тоже 64-х битная. API GetSystenInfo неверно определяет границы приложения в памяти. Когда приложение 32-х битное, все правильно, а когда 64-х битное, то границы определяются как для 32-х битного приложения. Следовательно никакой базы приложения потом и не находится. Функцию GetNativeSystemInfo, мой Делфи вообще не признает. Как быть?
А если из PE-заголовка взять базу, она всегда будет соответствовать действительности ? Или в 64-битках это не правило? Чета, у меня GetNativeSystemInfo еще большую ересь показывает. Archer Просто из всех языков, которых я знаю плохо, Дельфи я знаю лучше.
А тогда какой способ поиска ImageBase будет наиболее верным для 64-х битного приложения запущенного в suspend режиме? Имеется ввиду, что лоадер будет 32-х битным. Я хочу сделать лоадер так сказать "не зависимым от разрядности". Потому-что прорамма-жертва есть и 32-х и 64-х битная.
Наиболее верного не будет. Будет недокументированный костыль. Сделай 2 нормальных файла под разные архитектуры и на ходу дропай и запускай просто нужный, как это process explorer делает.
Словами можно объяснить, что делает этот оператор?
Code:
PPEB64 ppeb =(PPEB64)buf;
Чтоб попробовать его на Делфи перенести. Прошу пардона, но пытаюсь врубиться в код от Hellspawn. Про указатели и разименование вроде понял (последний оператор).
Ранг: 3.6 (гость) Активность: 0=0 Статус: Участник
Создано: 08 декабря 2015 20:31 · Поправил: carpucio · Личное сообщение · #27
дэльфэ гавно, кардиналы, пакед рекорды, костыли под апи, мракобесие. в sdk все хидеры изкаробки идут под 64бит без наживания дополнительного геммороя аля дэльфэ