Сейчас на форуме: -Sanchez-, Alf (+4 невидимых)

 eXeL@B —› Софт, инструменты —› нужен генератор лоадеров под 64-x битные программы
. 1 . 2 . >>
Посл.ответ Сообщение

Ранг: 1.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 05 декабря 2015 21:05
· Личное сообщение · #1

В поиске генераторы лоадеров под 64-x битные программы.



Ранг: 45.7 (посетитель), 40thx
Активность: 0.030
Статус: Участник

Создано: 05 декабря 2015 21:27
· Личное сообщение · #2

А в гугле вас уже забанили?Чем dup не устраивает?



Ранг: 30.1 (посетитель)
Активность: 0.070
Статус: Участник

Создано: 06 декабря 2015 12:13
· Личное сообщение · #3

Во, а dup разве 64-х битный? Чего-то я первый раз слышу об этом.



Ранг: 95.1 (постоянный), 247thx
Активность: 0.260.01
Статус: Участник

Создано: 06 декабря 2015 13:11 · Поправил: unknownproject
· Личное сообщение · #4

https://exelab.ru/f/action=vthread&forum=6&topic=17825

WriteProcessMemory function

-----
TEST YOUR MIGHT




Ранг: 45.7 (посетитель), 40thx
Активность: 0.030
Статус: Участник

Создано: 07 декабря 2015 00:04
· Личное сообщение · #5

Kuzya69 пишет:
Во, а dup разве 64-х битный

Нет,x32,что не мешает ему создавать патчи и лоадеры для x64 программKuzya69 пишет:
Чего-то я первый раз слышу об этом.

Читайте больше




Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 07 декабря 2015 01:19
· Личное сообщение · #6

igorca пишет:
не мешает ему создавать патчи и лоадеры для x64 программ

патчи - возможно, а вот с лоадерами тяжко, так как 32битная версия WriteProcessMemory принимает, как ни странно, только 32битный адрес участка памяти - и это ограничивает доступное для правки пространство первыми 4мя гигабайтами, что далеко не всегда является приемлимым вариантом в х64 процессах.



Ранг: 30.1 (посетитель)
Активность: 0.070
Статус: Участник

Создано: 07 декабря 2015 02:15
· Личное сообщение · #7

А исходники дуп-а никто не встречал? Может в таком случае перекомпилить его под 64-х битную WriteProcessMemory ?



Ранг: 431.7 (мудрец), 391thx
Активность: 0.730.32
Статус: Участник

Создано: 07 декабря 2015 02:22 · Поправил: dosprog
· Личное сообщение · #8

Kuzya69 пишет:
А исходники дуп-а никто не встречал?


Зачем нужны исходники dup'а? Там что, высшая математика, что ли?
Понадобится лоадер под х64 - брать лоадер под х32 и править. Любой.
Віше дали ссылку на тему, там есть х32 пример от PE_KILL'а.





Ранг: 30.1 (посетитель)
Активность: 0.070
Статус: Участник

Создано: 07 декабря 2015 02:50 · Поправил: Kuzya69
· Личное сообщение · #9

И где тут обращение по 64-х битному адресу? Если размерность DWord.
Code:
  1. ExeBase: DWord;
  2. ...............
  3. WriteProcessMemory(pi.hProcess, Pointer(ExeBase + $C9D8), @Data, 4, Data)
  4. ...............

Например у меня надо изменить байт по адресу $00000001401ab8e0.
(Где ExeBase=$0000000140000000 и смещение в файле = 1ab8e0 ).
И как это воспримет этот лоадер?




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 07 декабря 2015 13:29
· Личное сообщение · #10

Kuzya69 ну так поправить руками знаний не хватает? интересней же самому.

-----
[nice coder and reverser]




Ранг: 30.1 (посетитель)
Активность: 0.070
Статус: Участник

Создано: 07 декабря 2015 16:39
· Личное сообщение · #11

Hellspawn
Действительно, не хватает знаний. Намекни поближе к истине, плиз.
Не может же быть так просто (Dword --> Cardinal) ?




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 07 декабря 2015 17:01
· Личное сообщение · #12

Kuzya69 в delphi 7 уже есть вроде UIN64 и INT64
cardinal это тот же dword

-----
[nice coder and reverser]




Ранг: 30.1 (посетитель)
Активность: 0.070
Статус: Участник

Создано: 07 декабря 2015 17:06 · Поправил: Kuzya69
· Личное сообщение · #13

И этого хватит? Ф-ция WriteProcessMemory отработает как надо в 64-х битной системе, если лоадерная ф-ция поиска базы найдет правильный адрес?
Извиняюсь, что так надоедаю. Просто Win7 (64-х битная), только на работе. Дома все 32-х битное. Вот и хочу подготовиться заранее. Чтоб на работе не терять время.




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 07 декабря 2015 17:13
· Личное сообщение · #14

Kuzya69

вроде бы ZwWow64ReadVirtualMemory64 и ZwWow64WriteVirtualMemory64 нужно юзать.

-----
[nice coder and reverser]


| Сообщение посчитали полезным: Kuzya69

Ранг: 30.1 (посетитель)
Активность: 0.070
Статус: Участник

Создано: 07 декабря 2015 21:32 · Поправил: Kuzya69
· Личное сообщение · #15

Ну вот и первый затык, на чужом компе проверили. Скомпилировал на 32-х битной Делфи. А проверял скомпиленный лоадер на 64-х битной Win7, прога-жертва тоже 64-х битная.
API GetSystenInfo неверно определяет границы приложения в памяти.
Когда приложение 32-х битное, все правильно, а когда 64-х битное, то границы определяются как для 32-х битного приложения. Следовательно никакой базы приложения потом и не находится.
Функцию GetNativeSystemInfo, мой Делфи вообще не признает. Как быть?



Ранг: 431.7 (мудрец), 391thx
Активность: 0.730.32
Статус: Участник

Создано: 07 декабря 2015 21:48
· Личное сообщение · #16

Kuzya69 пишет:
Как быть?


--> Link <--




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 07 декабря 2015 22:46
· Личное сообщение · #17

Что мешает собрать в х64 или выкинуть дельфи и использовать язык, который в состоянии адекватно работать со всеми апи?

| Сообщение посчитали полезным: elch


Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 07 декабря 2015 23:13
· Личное сообщение · #18

Kuzya69
базу можно получить и другими способами))) или собрать сразу в 64 постввив XE

-----
[nice coder and reverser]




Ранг: 30.1 (посетитель)
Активность: 0.070
Статус: Участник

Создано: 08 декабря 2015 01:57 · Поправил: Kuzya69
· Личное сообщение · #19

А если из PE-заголовка взять базу, она всегда будет соответствовать действительности ? Или в 64-битках это не правило?
Чета, у меня GetNativeSystemInfo еще большую ересь показывает.
Archer
Просто из всех языков, которых я знаю плохо, Дельфи я знаю лучше.




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 08 декабря 2015 12:12
· Личное сообщение · #20

Что в х86, что в х64 реальная база может не соответствовать базе из хедера. !Гугл таблица релокаций.



Ранг: 30.1 (посетитель)
Активность: 0.070
Статус: Участник

Создано: 08 декабря 2015 13:11
· Личное сообщение · #21

А тогда какой способ поиска ImageBase будет наиболее верным для 64-х битного приложения запущенного в suspend режиме? Имеется ввиду, что лоадер будет 32-х битным. Я хочу сделать лоадер так сказать "не зависимым от разрядности". Потому-что прорамма-жертва есть и 32-х и 64-х битная.




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 08 декабря 2015 13:31
· Личное сообщение · #22

Наиболее верного не будет. Будет недокументированный костыль. Сделай 2 нормальных файла под разные архитектуры и на ходу дропай и запускай просто нужный, как это process explorer делает.




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 08 декабря 2015 14:30
· Личное сообщение · #23

Kuzya69 можно вот так, но код только на си, выдрал из проекта
Code:
  1.     PROCESS_BASIC_INFORMATION_WOW64 pbi;
  2.     ZeroMemory(&pbi, sizeof(pbi));
  3.  
  4.     if (!NT_SUCCESS(NtQueryInfoProcess(hProcess, ProcessBasicInformation, &pbi, sizeof(pbi), NULL)))
  5.         return FALSE;
  6.          
  7.          static DWORD pebSize = 0x40;
  8.          BYTE buf[0x1000] = {0};
  9.  
  10.     if (!NT_SUCCESS(NtWow64ReadVirtualMemory64(hProcess, pbi.PebBaseAddress, buf, pebSize, NULL)))
  11.         return FALSE;
  12.          
  13.          PPEB64 ppeb = (PPEB64)buf;
  14.          *memStart = ppeb->ImageBaseAddress; <-- base


-----
[nice coder and reverser]





Ранг: 337.6 (мудрец), 224thx
Активность: 0.210.1
Статус: Участник
born to be evil

Создано: 08 декабря 2015 15:12
· Личное сообщение · #24

мне всегда было интересно, откуда Archer и Hellspawn обладают специфичными знаниями
Kuzya69
--> Link <-- - поройся. в плане описания функций и вообще

-----
От многой мудрости много скорби, и умножающий знание умножает печаль




Ранг: 30.1 (посетитель)
Активность: 0.070
Статус: Участник

Создано: 08 декабря 2015 17:35 · Поправил: Kuzya69
· Личное сообщение · #25

Словами можно объяснить, что делает этот оператор?
Code:
  1. PPEB64 ppeb = (PPEB64)buf;

Чтоб попробовать его на Делфи перенести. Прошу пардона, но пытаюсь врубиться в код от Hellspawn.
Про указатели и разименование вроде понял (последний оператор).



Ранг: 441.3 (мудрец), 297thx
Активность: 0.410.04
Статус: Участник

Создано: 08 декабря 2015 17:43
· Личное сообщение · #26

Kuzya69 пишет:
Словами можно объяснить этот оператор?

на дэлфи это будет примерно так
Code:
  1. type
  2.   TPEB64 = packed record
  3.      ..
  4.   end;
  5. var
  6.   ppeb: TPEB64;
  7. begin
  8.   copymemory(@ppeb,@buf,sizeof(ppeb));
  9. end;




Ранг: 3.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 08 декабря 2015 20:31 · Поправил: carpucio
· Личное сообщение · #27

дэльфэ гавно, кардиналы, пакед рекорды, костыли под апи, мракобесие. в sdk все хидеры изкаробки идут под 64бит без наживания дополнительного геммороя аля дэльфэ




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 08 декабря 2015 20:50
· Личное сообщение · #28

Не будет там copymemory, это тупо присваивание указателя.
Может стоит уже почитать матчасть, прежде чем вываливать сюда вопросы по основам?



Ранг: 441.3 (мудрец), 297thx
Активность: 0.410.04
Статус: Участник

Создано: 08 декабря 2015 23:34
· Личное сообщение · #29

Archer пишет:
Не будет там copymemory, это тупо присваивание указателя.

гы-гы сколько пишу в дэлфи, ни разу не знал что так можно делать
Code:
  1. type
  2.   TPEB64 = packed record
  3.      ..
  4.   end;
  5. var
  6.   ppeb: ^TPEB64;
  7. begin
  8.   ppeb:=@buf;
  9.   memStart:=ppeb^.ImageBaseAddress;
  10. end;

спасибо



Ранг: 431.7 (мудрец), 391thx
Активность: 0.730.32
Статус: Участник

Создано: 09 декабря 2015 00:16 · Поправил: dosprog
· Личное сообщение · #30

)) Кстати, жутким костылём по Си-шным понятиям считается вот это (присваивание без приведения типа):
Code:
  1.   ppeb:=@buf;
- А в делфи ничего, прокатывает.


. 1 . 2 . >>
 eXeL@B —› Софт, инструменты —› нужен генератор лоадеров под 64-x битные программы
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати