| Посл.ответ | 
Сообщение | 
 Ранг: 10.8 (новичок) Активность: 0=0 Статус: Участник 
 
 | 
Создано: 26 июля 2007 10:43 · Поправил: fdiller   · Личное сообщение ·  #1 
как сделать патч, загруженного в память процесса, чтобы находил значения строки  '78 77 65' и менял их на значения '70 72 65'? тоже самое как в ArtMoney...
   | Сообщение посчитали полезным:  | 
 | 
  Ранг: 238.8 (наставник), 67thx Активность: 0.2↘0 Статус: Участник CyberHunter 
 
 | 
Создано: 26 июля 2007 10:49   · Личное сообщение ·  #2 
CreateProcessA
 OpenProcess
 VirtualProtect
 WriteProcessMemory
 CloseHandle
 ----- Nulla aetas ad discendum sera  | Сообщение посчитали полезным:  | 
 Ранг: 222.2 (наставник), 115thx Активность: 0.14↘0.01 Статус: Участник 
 
 | 
Создано: 26 июля 2007 10:59   · Личное сообщение ·  #3 
Юзай готовые патчеры, Dup2 например (там есть serch & replace патч памяти) или Yoda Process Patcher
 Flint пишет:
 CreateProcessA
 OpenProcess
 VirtualProtect
 WriteProcessMemory
 CloseHandle 
так бы  fdiller пытался сделать, если бы постил свой топик в разделе "Програмирование" ))
 ----- все багрепорты - в личные сообщения  | Сообщение посчитали полезным:  | 
 Ранг: 10.8 (новичок) Активность: 0=0 Статус: Участник 
 
 | 
Создано: 26 июля 2007 11:12 · Поправил: fdiller   · Личное сообщение ·  #4 
HandMill пишет:
 Юзай готовые патчеры, Dup2 например (там есть serch & replace патч памяти) 
нужно чтобы вначале программа была загружена и потом патчить... в dup2 лоадер только создается
   | Сообщение посчитали полезным:   | 
 Ранг: 196.0 (ветеран), 72thx Активность: 0.14↘0.02 Статус: Участник 
 
 | 
Создано: 26 июля 2007 11:27   · Личное сообщение ·  #5 
fdiller пишет:
 нету там патч памяти уже юзал 
Search & Replace- а это чё такое?Найти и заменить-тошто тебе как раз и нужно.Или мы тебя не так поняли?
   | Сообщение посчитали полезным:   | 
 Ранг: 10.8 (новичок) Активность: 0=0 Статус: Участник 
 
 | 
Создано: 26 июля 2007 11:44   · Личное сообщение ·  #6 
Djeck пишет:
 Search & Replace- а это чё такое?Найти и заменить-тошто тебе как раз и нужно.Или мы тебя не так поняли? 
да патч создается, но тока он патчит программу не загруженную... если загружена , то ошибку выдает патч... как сделать, чтобы загруженную пропатчить?
   | Сообщение посчитали полезным:   | 
 Ранг: 161.0 (ветеран) Активность: 0.12↘0 Статус: Участник 
 
 | 
Создано: 26 июля 2007 11:54   · Личное сообщение ·  #7 
Дык для этого нужны лоадеры. =)
   | Сообщение посчитали полезным:  | 
 Ранг: 196.0 (ветеран), 72thx Активность: 0.14↘0.02 Статус: Участник 
 
 | 
Создано: 26 июля 2007 12:26   · Личное сообщение ·  #8 
fdiller пишет:
 да патч создается, но тока он патчит программу не загруженную 
Парни может я чё перекурил и давно не пользовался DUP,но помойму для того,чтобы просто пропатчить программу(не загруженную) там существует offset patch,а патч в процессе как раз и есть Search & Replace???А может я и загнался!!!
   | Сообщение посчитали полезным:   | 
 Ранг: 221.3 (наставник), 135thx Активность: 0.19↘0.07 Статус: Участник
  
 
 | 
Создано: 26 июля 2007 13:04   · Личное сообщение ·  #9 
fdiller
Как тебе здесь сказали, тебе нужен лоадер, а не патч.
 В нете много исходников, поищи, а если нужно готовое решение, то юзой t.p.e. aka tola's patching engine,
 ну или на кройняк Yoda Process Patcher.
 ----- xchg dword [eax], eax  | Сообщение посчитали полезным:   | 
 Ранг: 226.0 (наставник), 67thx Активность: 0.16↘0 Статус: Участник 
 
 | 
Создано: 26 июля 2007 16:02   · Личное сообщение ·  #10 
fdiller пиши лоадер. Ставь хук на какой нибуть апик, а потом ищи и патч.
 Вот тебе готовая  --> процедура <--
  | Сообщение посчитали полезным:   | 
 Ранг: 72.4 (постоянный), 33thx Активность: 0.05↘0.03 Статус: Участник
  
 
 | 
Создано: 26 июля 2007 16:39   · Личное сообщение ·  #11 
Если нада пропатчить прям после запуска, то делай типа этого(delphi):
 var
   WIN,PID,TID,HND : integer;
   WRT,Poke,addr : cardinal;
 poke:=$657270; //нада писать наоборот
   addr = $;//адрес
      WIN := FindWindow(nil,'йа окно');
      GetWindowThreadProcessId(WIN,@PID);
      HND := OpenProcess(PROCESS_ALL_ACCESS,False,PID);
      virtualprotectex(HND,ptr(addr),2,PAGE_READWRITE,WRT); // если нада
      WriteProcessMemory(HND,ptr(addr),@poke,3,WRT);
      closehandle(HND);
   | Сообщение посчитали полезным:  | 
  Ранг: 990.2 (! ! !), 380thx Активность: 0.68↘0 Статус: Модератор Author of DiE 
 
 | 
Создано: 26 июля 2007 16:46   · Личное сообщение ·  #12 
ValdikSS пишет:
 WIN := FindWindow(nil,'йа окно'); 
 GetWindowThreadProcessId(WIN,@PID); 
зачем так извращаться, не проще ли самому запустить процесс?   
----- [nice coder and reverser]  | Сообщение посчитали полезным:   | 
 Ранг: 222.2 (наставник), 115thx Активность: 0.14↘0.01 Статус: Участник 
 
 | 
Создано: 26 июля 2007 17:04   · Личное сообщение ·  #13 
Да исходников и так валом, ребята, что тут писать то? Человек просто скорее всего не умеет пользоваться патчерами, а писать свой лоадер для него помоему очень тяжело, вот тому подтверждение:
 fdiller пишет:
 Djeck пишет:
 Search & Replace- а это чё такое?Найти и заменить-тошто тебе как раз и нужно.Или мы тебя не так поняли?
 да патч создается, но тока он патчит программу не загруженную... если загружена , то ошибку выдает патч... как сделать, чтобы загруженную пропатчить? 
Search & Replace для ЛОАДЕРА нельзя что ли подручными средствами Dup'а сделать уже или тебе нужны скриншоты и видеоролик?
 ----- все багрепорты - в личные сообщения  | Сообщение посчитали полезным:  | 
 Ранг: 221.3 (наставник), 135thx Активность: 0.19↘0.07 Статус: Участник
  
 
 | 
Создано: 26 июля 2007 17:08   · Личное сообщение ·  #14 
Имхо тема топега уже исчерпала себя, на вопрос ответили уже.
 fdiller
Или пиши сам лоадер, или юзой какой нить генератор лоадеров.
 ----- xchg dword [eax], eax  | Сообщение посчитали полезным:  | 
 Ранг: 10.8 (новичок) Активность: 0=0 Статус: Участник 
 
 | 
Создано: 26 июля 2007 17:49   · Личное сообщение ·  #15 
ValdikSS пишет:
 Если нада пропатчить прям после запуска, то делай типа этого(delphi): 
 var 
 WIN,PID,TID,HND : integer; 
 WRT,Poke,addr : cardinal; 
 poke:=$657270; //нада писать наоборот 
 addr = $;//адрес 
 WIN := FindWindow(nil,'йа окно'); 
 GetWindowThreadProcessId(WIN,@PID); 
 HND := OpenProcess(PROCESS_ALL_ACCESS,False,PID); 
 virtualprotectex(HND,ptr(addr),2,PAGE_READWRITE,WRT); // если нада 
 WriteProcessMemory(HND,ptr(addr),@poke,3,WRT); 
 closehandle(HND); 
тогда как сделать, чтобы находил все адреса строки '78 77 65'
   | Сообщение посчитали полезным:   | 
 Ранг: 226.0 (наставник), 67thx Активность: 0.16↘0 Статус: Участник 
 
 | 
Создано: 26 июля 2007 17:52   · Личное сообщение ·  #16 
fdiller пишет:
 тогда как сделать, чтобы находил все адреса строки '78 77 65' 
через ReadProcessMemory
   | Сообщение посчитали полезным:   | 
  Ранг: 340.0 (мудрец), 22thx Активность: 0.12↘0 Статус: Участник THETA 
 
 | 
Создано: 26 июля 2007 17:58   · Личное сообщение ·  #17 
v0id2k пишет:
 Или пиши сам лоадер, или юзой какой нить генератор лоадеров. 
Только этих два варианта и есть.   
Если не можешь или не хочешь писать свой лоадер, воспользуйся готовыми решениями, например DUP2, позволяющей найти определенные байты и заменить их, причем даже в запакованной проге. Есть и масса других решений, а также примеры сырцов на всех языках, наверное. Просто скачай готовый пример и посмотри как реализуется. 
 Вот и все, ничего другого тебе тут не посоветуют.
 ----- Программист SkyNet  | Сообщение посчитали полезным:   | 
 Ранг: 226.0 (наставник), 67thx Активность: 0.16↘0 Статус: Участник 
 
 | 
Создано: 26 июля 2007 18:04   · Личное сообщение ·  #18 
Или договаривайся с кем-то чтоб тебе написал...
   | Сообщение посчитали полезным:  | 
 Ранг: 221.3 (наставник), 135thx Активность: 0.19↘0.07 Статус: Участник
  
 
 | 
Создано: 26 июля 2007 23:54   · Личное сообщение ·  #19 
fdiller
Если вы кодите на делфе, то в аттаче лоадер, измените как нужно и скомпелируйте.   d4ad_26.07.2007_CRACKLAB.rU.tgz - loader.dpr
 ----- xchg dword [eax], eax  | Сообщение посчитали полезным:   | 
 Ранг: 25.3 (посетитель) Активность: 0.01↘0 Статус: Участник 
 
 | 
Создано: 27 июля 2007 10:18   · Личное сообщение ·  #20 
Вот уж и растянули тему. Что тут говорить, не умея писать программ можно и не браться за взлом. Потому что в этом деле не всегда подходит стандартный инструмент,а писать приходится самому.
   | Сообщение посчитали полезным:  | 
 Ранг: 10.8 (новичок) Активность: 0=0 Статус: Участник 
 
 | 
Создано: 27 июля 2007 10:34   · Личное сообщение ·  #21 
v0id2k пишет:
 Если вы кодите на делфе, то в аттаче лоадер, измените как нужно и скомпелируйте. 
ну это опять почти тоже самое, что ValdikSS давал... нет процедуры , которая переберет все байты и найдет строки от начала, загруженного процесса в память до конца
   | Сообщение посчитали полезным:   | 
 Ранг: 221.3 (наставник), 135thx Активность: 0.19↘0.07 Статус: Участник
  
 
 | 
Создано: 27 июля 2007 10:53   · Личное сообщение ·  #22 
fdiller пишет:
 нет процедуры , которая переберет все байты и найдет строки от начала, загруженного процесса в память до конца 
Сами допешите, в чем проблема то?
 ----- xchg dword [eax], eax  | Сообщение посчитали полезным:   | 
 Ранг: 10.8 (новичок) Активность: 0=0 Статус: Участник 
 
 | 
Создано: 27 июля 2007 13:22   · Личное сообщение ·  #23 
v0id2k пишет:
 Сами допешите, в чем проблема то? 
еслиб знал я здесь бы не писал
   | Сообщение посчитали полезным:   | 
 Ранг: 10.8 (новичок) Активность: 0=0 Статус: Участник 
 
 | 
Создано: 27 июля 2007 13:25   · Личное сообщение ·  #24 
ни dup2 ни другие не подходят ... т.е. это только надо писать самому
   | Сообщение посчитали полезным:  | 
 Ранг: 221.3 (наставник), 135thx Активность: 0.19↘0.07 Статус: Участник
  
 
 | 
Создано: 27 июля 2007 15:14   · Личное сообщение ·  #25 
fdiller
Как я понял нужен лоадер, который бы запускал нужный процесс и находил значение строки по адресу $хххххххх и менял его на значение строки по адресу $yyyyyyyy, так?
 ----- xchg dword [eax], eax  | Сообщение посчитали полезным:   | 
 Ранг: 10.8 (новичок) Активность: 0=0 Статус: Участник 
 
 | 
Создано: 28 июля 2007 09:44 · Поправил: fdiller   · Личное сообщение ·  #26 
v0id2k пишет:
 Как я понял нужен лоадер, который бы запускал нужный процесс и находил значение строки по адресу $хххххххх и менял его на значение строки по адресу $yyyyyyyy, так? 
нет ... как найти адрес процесса, загруженного в память, с которого искать и адрес до которого  искать ?
 чтобы зацыклить перебор байтов
   | Сообщение посчитали полезным:   | 
 Ранг: 10.8 (новичок) Активность: 0=0 Статус: Участник 
 
 | 
Создано: 28 июля 2007 13:41   · Личное сообщение ·  #27 
лоадер написал... Спасибо кто отозвался!
   | Сообщение посчитали полезным:  | 
 Ранг: 72.4 (постоянный), 33thx Активность: 0.05↘0.03 Статус: Участник
  
 
 | 
Создано: 28 июля 2007 19:03   · Личное сообщение ·  #28 
Hellspawn
зачем так извращаться, не проще ли самому запустить процесс? 
 Ему ж нада пропатчить когда он уже запущен. или я че недопонял?
   | Сообщение посчитали полезным:   |