Сейчас на форуме: (+5 невидимых)

 eXeL@B —› Программирование —› патч
Посл.ответ Сообщение

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

Создано: 26 июля 2007 10:43 · Поправил: fdiller
· Личное сообщение · #1

как сделать патч, загруженного в память процесса, чтобы находил значения строки '78 77 65' и менял их на значения '70 72 65'? тоже самое как в ArtMoney...




Ранг: 238.8 (наставник), 67thx
Активность: 0.20
Статус: Участник
CyberHunter

Создано: 26 июля 2007 10:49
· Личное сообщение · #2

CreateProcessA
OpenProcess
VirtualProtect
WriteProcessMemory
CloseHandle

-----
Nulla aetas ad discendum sera




Ранг: 222.2 (наставник), 115thx
Активность: 0.140.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.140.02
Статус: Участник

Создано: 26 июля 2007 11:27
· Личное сообщение · #5

fdiller пишет:
нету там патч памяти уже юзал

Search & Replace- а это чё такое?Найти и заменить-тошто тебе как раз и нужно.Или мы тебя не так поняли?



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

Создано: 26 июля 2007 11:44
· Личное сообщение · #6

Djeck пишет:
Search & Replace- а это чё такое?Найти и заменить-тошто тебе как раз и нужно.Или мы тебя не так поняли?

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



Ранг: 161.0 (ветеран)
Активность: 0.120
Статус: Участник

Создано: 26 июля 2007 11:54
· Личное сообщение · #7

Дык для этого нужны лоадеры. =)



Ранг: 196.0 (ветеран), 72thx
Активность: 0.140.02
Статус: Участник

Создано: 26 июля 2007 12:26
· Личное сообщение · #8

fdiller пишет:
да патч создается, но тока он патчит программу не загруженную

Парни может я чё перекурил и давно не пользовался DUP,но помойму для того,чтобы просто пропатчить программу(не загруженную) там существует offset patch,а патч в процессе как раз и есть Search & Replace???А может я и загнался!!!



Ранг: 221.3 (наставник), 135thx
Активность: 0.190.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.160
Статус: Участник

Создано: 26 июля 2007 16:02
· Личное сообщение · #10

fdiller пиши лоадер. Ставь хук на какой нибуть апик, а потом ищи и патч.

Вот тебе готовая --> процедура <--



Ранг: 72.4 (постоянный), 33thx
Активность: 0.050.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.680
Статус: Модератор
Author of DiE

Создано: 26 июля 2007 16:46
· Личное сообщение · #12

ValdikSS пишет:
WIN := FindWindow(nil,'йа окно');
GetWindowThreadProcessId(WIN,@PID);


зачем так извращаться, не проще ли самому запустить процесс?

-----
[nice coder and reverser]




Ранг: 222.2 (наставник), 115thx
Активность: 0.140.01
Статус: Участник

Создано: 26 июля 2007 17:04
· Личное сообщение · #13

Да исходников и так валом, ребята, что тут писать то? Человек просто скорее всего не умеет пользоваться патчерами, а писать свой лоадер для него помоему очень тяжело, вот тому подтверждение:

fdiller пишет:
Djeck пишет:
Search & Replace- а это чё такое?Найти и заменить-тошто тебе как раз и нужно.Или мы тебя не так поняли?
да патч создается, но тока он патчит программу не загруженную... если загружена , то ошибку выдает патч... как сделать, чтобы загруженную пропатчить?


Search & Replace для ЛОАДЕРА нельзя что ли подручными средствами Dup'а сделать уже или тебе нужны скриншоты и видеоролик?

-----
все багрепорты - в личные сообщения




Ранг: 221.3 (наставник), 135thx
Активность: 0.190.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.160
Статус: Участник

Создано: 26 июля 2007 17:52
· Личное сообщение · #16

fdiller пишет:
тогда как сделать, чтобы находил все адреса строки '78 77 65'

через ReadProcessMemory




Ранг: 340.0 (мудрец), 22thx
Активность: 0.120
Статус: Участник
THETA

Создано: 26 июля 2007 17:58
· Личное сообщение · #17

v0id2k пишет:
Или пиши сам лоадер, или юзой какой нить генератор лоадеров.

Только этих два варианта и есть.
Если не можешь или не хочешь писать свой лоадер, воспользуйся готовыми решениями, например DUP2, позволяющей найти определенные байты и заменить их, причем даже в запакованной проге. Есть и масса других решений, а также примеры сырцов на всех языках, наверное. Просто скачай готовый пример и посмотри как реализуется.
Вот и все, ничего другого тебе тут не посоветуют.

-----
Программист SkyNet




Ранг: 226.0 (наставник), 67thx
Активность: 0.160
Статус: Участник

Создано: 26 июля 2007 18:04
· Личное сообщение · #18

Или договаривайся с кем-то чтоб тебе написал...



Ранг: 221.3 (наставник), 135thx
Активность: 0.190.07
Статус: Участник

Создано: 26 июля 2007 23:54
· Личное сообщение · #19

fdiller
Если вы кодите на делфе, то в аттаче лоадер, измените как нужно и скомпелируйте.

d4ad_26.07.2007_CRACKLAB.rU.tgz - loader.dpr

-----
xchg dword [eax], eax




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

Создано: 27 июля 2007 10:18
· Личное сообщение · #20

Вот уж и растянули тему. Что тут говорить, не умея писать программ можно и не браться за взлом. Потому что в этом деле не всегда подходит стандартный инструмент,а писать приходится самому.



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

Создано: 27 июля 2007 10:34
· Личное сообщение · #21

v0id2k пишет:
Если вы кодите на делфе, то в аттаче лоадер, измените как нужно и скомпелируйте.

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



Ранг: 221.3 (наставник), 135thx
Активность: 0.190.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.190.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.050.03
Статус: Участник

Создано: 28 июля 2007 19:03
· Личное сообщение · #28

Hellspawn
зачем так извращаться, не проще ли самому запустить процесс?

Ему ж нада пропатчить когда он уже запущен. или я че недопонял?


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


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