Сейчас на форуме: ==DJ==[ZLO], Magister Yoda (+6 невидимых)

 eXeL@B —› Основной форум —› Помогите beginner'у насчет пропатчивания!
. 1 . 2 . >>
Посл.ответ Сообщение

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

Создано: 14 февраля 2005 20:39
· Личное сообщение · #1

Помогите пжалста! Я знаю что многие из вас просто обругают меня за глупые вопросы и скажут поискать ещё на форуме или в FAQ (где я ничего не нашёл) а то и просто закроют тему. Я буду очень рад если это не так.
Я не могу понять как мне вписывать в начале процедуры xor eax,eax inc eax ret . Сам смысл понятен, но где это "в начале процедуры"?? И как это начало искать? Я читал это в статьях Fess'а но там толком не написано (ну может просто это я такой тупой - обьясните пожалуйста!). Заранее спасибо!!!




Ранг: 536.4 (!), 171thx
Активность: 0.660.13
Статус: Администратор
Создатель CRACKL@B

Создано: 14 февраля 2005 20:42
· Личное сообщение · #2

Нда, в двух словах не объяснишь... Софтайсом умеешь пользоваться ?

-----
Всем не угодишь




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

Создано: 14 февраля 2005 20:55
· Личное сообщение · #3

2Bad_guy:
Не держи меня за лоха пожалуйста! Скорее уже Qview'ом ;)
Ладно, так что там сделать?



Ранг: 103.1 (ветеран), 3thx
Активность: 0.070.01
Статус: Участник

Создано: 14 февраля 2005 21:31
· Личное сообщение · #4

Serge
ты что думаешь что начало процедуры просто так с неба?
её так просто не найдёшь.
Одним qView ты ничего не сделаешь.

Или ты хочешь узнать как перейти по уже известному адресу что бы изминить там что-либо?

Serge пишет:
Не держи меня за лоха пожалуйста!



-----
Crack your mind, save the planet




Ранг: 200.3 (наставник)
Активность: 0.090
Статус: Участник

Создано: 14 февраля 2005 21:31
· Личное сообщение · #5

Serge:
2Bad_guy:
Не держи меня за лоха пожалуйста!
-крутовато для бигинера


-----
Само плывет в pуки только то, что не тонет.




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

Создано: 14 февраля 2005 21:36
· Личное сообщение · #6

DrFits пишет:
Не держи меня за лоха пожалуйста!-крутовато для бигинера

По твоему новички лохи ?



Ранг: 103.1 (ветеран), 3thx
Активность: 0.070.01
Статус: Участник

Создано: 14 февраля 2005 21:51
· Личное сообщение · #7

LORD
Понимаешь, BG ни чего такого не сказал, что бы так думать!

-----
Crack your mind, save the planet




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

Создано: 14 февраля 2005 22:08
· Личное сообщение · #8

2Styx:
Об этом то и речь !!! Я знаю что для нахождения начала процедуры нужно юзать WinDASM, но не знаю что надо делать! (как говорил Bad_guy - в отладчике посмотреть, однако у Fess'а про это ничего нет!) (вроде я даже знаю что после этого надо сделать - обнуляем и +1 к eax потом вых.из процедуры т.е. xor eax,eax inc eax ret а оставшиеся байты занопить - так ведь)

2DrFits:
Я ожидал таких ответов! Но я говорю то что думаю! Знаешь, я не из тех кто не зная элементарных вещей, лезет в форум, отвлекая других по пустякам... я отвлекаю других по пустякам когда их не понимаю =)))))))))))) (последнее - шутка)

2LORD:
респект)))



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

Создано: 14 февраля 2005 22:12
· Личное сообщение · #9

2Styx:
Ты знаешь, если бы я сайсом пользоваться не умел, как бэдгай сказал, то я вообще бы сюда не заходил !!!



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

Создано: 14 февраля 2005 22:13
· Личное сообщение · #10

Вернее не как BG сказал а как BG предположил... ну да ладно...



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

Создано: 14 февраля 2005 22:13
· Личное сообщение · #11

Так как насчёт топика ???



Ранг: 103.1 (ветеран), 3thx
Активность: 0.070.01
Статус: Участник

Создано: 14 февраля 2005 22:18
· Личное сообщение · #12

Serge
что делать в qV не знаю не пользовался.
Если есть Hiew то:

1)F5
2).адрес ( . - если RVA, без точки если смещение от начала файла)
3)2 раза ENTER
4)f3 -- Edit
5)f2 -- Asm
6)пишешь нужную команду, enter, след. команда. Ну и пару нопов для выравнивания (совсем не обязательно)
7)f9 -- Update
8)f10 -- exit

Hiew можно взять на wasm.ru

-----
Crack your mind, save the planet




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

Создано: 14 февраля 2005 22:20
· Личное сообщение · #13

Serge
Да у вас батенька мания величия, имхо ;)



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

Создано: 14 февраля 2005 22:38
· Личное сообщение · #14

Serge
искать начало процедуры можно по разному. Я предпочитаю HIEW 7.01



Ранг: 103.1 (ветеран), 3thx
Активность: 0.070.01
Статус: Участник

Создано: 14 февраля 2005 23:00
· Личное сообщение · #15

Baron_Gede
Ребята, о чём вы вообще говорите?
Искать начало процедуры в hex editor-e?


-----
Crack your mind, save the planet





Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 14 февраля 2005 23:18
· Личное сообщение · #16

Styx пишет:
Искать начало процедуры в hex editor-e?

Почему бы нет? Поиск по сигнатуре и все дела.

ЗЫ: а в Ольке можно сохранять изменения =))



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

Создано: 14 февраля 2005 23:25
· Личное сообщение · #17

Ara пишет:
а в Ольке можно сохранять изменения

Всем юзать OllyDebug!




Ранг: 536.4 (!), 171thx
Активность: 0.660.13
Статус: Администратор
Создатель CRACKL@B

Создано: 14 февраля 2005 23:50
· Личное сообщение · #18

Serge пишет:
Вернее не как BG сказал а как BG предположил... ну да ладно...

Ну вот пожалуйста к вопросу о том, что форум стал "не тем". Начинаешь по-человечески новичку помогать, вопросы задавать нужные, так он ох*евать сразу начинает... ну какой тут может быть нахрен старый "добрый" форум

-----
Всем не угодишь





Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 15 февраля 2005 00:23
· Личное сообщение · #19

=============================================
Q: В программе есть какая-либо команда, и мне нужно сделать так, чтобы она не выполнялась. Как это сделать?
A: Самый простой способ это занопить команду. Это значит, что на место этой команды надо вписать необходимое количество команд nop (байт 90h). Команда nop (сокращение от no operand) ничего не далает. Так и написано в официальной документации: "This is a do nothing instruction".

Q: Всмысле необходимое количество команд nop? Почему просто не заменить одну ненужную команду, одной командой nop?
A: Команда, которую вам нужно отключить, в машинных кодах может занимать более одного байта (обычно так и бывает). А команда nop в машинном коде выглядит как один байт - 90h. Если заменить команду, машинный код которой занимает больше чем 1 байт, на 1 команду nop, то после команды nop (байта 90h) считаются следующие байты для обработки и выполнения, но эти байты будут просто остатками от заменяемой команды, поэтому их выполнение приведет к ошибке в программе. Поэтому, если нужно сделать так, чтобы какая-то команда не выполнялась, то ее надо заменить на столько команд nop, сколько байтов занимает эта команда. Например команда call 00450000 занимает 5 байтов, соответсвенно ее надо будет заменить на последовательность из 5 команд nop.

Q: А как это сделать? И вообще как пропатчить исполняемый файл программы?
A: Открываете файл, который собираетесь патчить в любом шестнадцатеричном редакторе (я использую Hex WorkShop), находите нужную команду или нужное место по соответствующему смещению (адресу относительно начала файла) в файле и изменяете ее как хотите.

Q: Я знаю адрес команды, которую мне надо изменить, в памяти. Как мне узнать, по какому смещению (адресу) относительно начала файла находится эта команда в файле?
A: Лично я смотрю смещение нужной команды в файле с помощью IDA Pro или W32Dasm. В обеих этих программах смещение выделенной команды/адреса в файле показывается в строке состояния (такая панелька в самом низу окна программы). Например в W32Dasm'e, если вам надо найти смещение нужной команды в памяти, выделите эту команду и в строке состояния смотрите такую строку: @Offset 00XXXXXX in File . Это значит что по смещению XXXXXX относительно начала файла и находится машинный код вашей команды. Аналогично в IDA Pro смотрите искомое смещение в строке состояния слева от текущего адреса. Также смещение нужной команды в файле, зная ее (даже и виртуальный) адрес, можно найти с помощью своеобразного калькулятора в PE Tools или LordPE (PE Editor -> FLC).

Q: Мне нужно изменить работу программы для своих целей. Я хочу вставить на место инструкций, которые хочу изменить, свои инструкции. Но "не хватает места", т.е. мои инструкции занимают больше места, чем те, которые нужно заменить. Что делать?
A: В этом случае составляем нужный нам код (процедуру). В конце кода добавляем команду ret. Создаем новую секцию (с помощью LordPE или ProcDump'a) и помещаем наш код в эту секцию. В начале инструкций, которые нам надо изменить, ставим вызов добавленной процедуры (call), оставшиеся ненужные инструкции, до начала нужных, забиваем командами "nop". Все. Только нужно будет быть внимательным с адресами, их надо будет смотреть в отладчике. Еще можно не добавлять новую секцию, а написать свой код (процедуру) в конец последней секции файла (там обычно есть много нулей), и дальше делать так, как я написал выше. Если в конце файла нет нулей, можно их дописать и расширить raw и virtual size последней секции, и не забыть исправить Image Size (увеличить все эти параметры на длину дописанного кода).
================================================
FAQ по взлому программ



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

Создано: 17 февраля 2005 03:43 · Поправил: turist
· Личное сообщение · #20

Я не могу понять как мне вписывать в начале процедуры 
xor eax,eax
inc eax
ret 
я как понял проблема в том что нехватает места для этих команд- они затирают другие нужные. Ну секцию тут совсем не обязательно создавать это в faq не совсем правильно написано. Тем более там не так много нужно дописать. ставишь чуть ввыше от того места что хочешь изменить лонг джамп (если чего неудачно затерлось на асме смотри - нопишь глюки) ну и его перенаправляешь джамп этот в пустое место (в секции кода-ищем 00 00 00 00 00 или 90 90 90 90 90 ) а там возвращаешь те команды что затерлись что бы код не изменился и в конце jmp на следующую инструкцию после написаного тобой в самом начале джампа.. Лучше после этого сохранится и проверить что все получилось так как надо-без глюков. А уже потом на пустом месте уже смело пишешь то что тебе надо
Искать начало процедуры в hex editor-e?
Почему бы нет? Поиск по сигнатуре и все дела.
нифига себе. Не перевелись еще киберманьяки на руси. это по какой к примеру? tKC что ли начитался?



Ранг: 77.1 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 17 февраля 2005 12:14
· Личное сообщение · #21

turist пишет:
нехватает места для этих команд- они затирают другие нужные.

Ну и пусть затирают, все равно стоит ret и после него ничего не выполнится




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 17 февраля 2005 17:51
· Личное сообщение · #22

turist
Из мухи слона сделал. ЛОЛ.

turist пишет:
нифига себе. Не перевелись еще киберманьяки на руси. это по какой к примеру?

Да по той естественно, которую ты видишь в отладчике или дизассемблере... Вбиваешь цепочку байт в редакторе и ищешь, что тут непонятно?
Насчет 10 твоих строк Sh[AHT] ответил всего одной...



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

Создано: 18 февраля 2005 00:13 · Поправил: Serge
· Личное сообщение · #23

2 Bad_guy:
Ну прости, прости=) Но насчет айса в самом деле некорректный =))))))) вопрос (я бы не отвлекал людей а прочитал бы инфу по сайсу - а о патче нормальных статей для новичков только три : две у Fess'а и одна ещё не помню у кого - там несовсем понятно потому то на форум и захожу)
2 others:
Я недавно проконсультировался со знающими людьми и кроче, посмотрите мой предпологаемый ход действий:
1) net start ntice
2) трассируем, смотрим в дебаггере адрес после вызова процедуры (мне чегото там говорили про смещения и прочую лабудень... так вот: адрес у неё в айсе будет "B***:40******" или "B***:41******" без кавычек конечно=))) и типа file offset будет то же самое только без "B***:40" или "B***:41")
3) ну дальше всё понятно : xor eax,eax - обнуляем eax - inc eax - увеличиваем eax - ret - выход из процедуры
------Пожалуйста скажите в чём ошибка.... если есть конечно ;))

PS: Ну а насчёт смотрим начало процедуры в QVIEW/HIEW - да милейшие и как же вы собираетесь его смотреть 8)))))) lol lol lol lol lol lol lol lol lol lol lol lol lol lol lol lol lol lol lol lol lol lol lol lol lol lol lol



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

Создано: 18 февраля 2005 00:15
· Личное сообщение · #24

2 Ara:
А FAQ я уже смотрел, так что цитату было приводить необязательно



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

Создано: 18 февраля 2005 00:21 · Поправил: Serge
· Личное сообщение · #25

Ara пишет:
Насчет 10 твоих строк Sh[AHT] ответил всего одной...

Правильно, у меня проблем с этим не было, я просто не знал где искать начало процедуры..... а теперь помоему понял что ентот адрес в дебаггере посмотреть и убрать B***:4* - а оставшиеся цифирьки и будут нашим адресом в файле (то бишь file offset'ом)




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 18 февраля 2005 00:31
· Личное сообщение · #26

Serge пишет:
PS: Ну а насчёт смотрим начало процедуры в QVIEW/HIEW - да милейшие и как же вы собираетесь его смотреть 8)))))) lol lol lol lol lol lol lol lol lol lol lol lol lol lol lol lol lol lol lol lol lol lol lol lol lol lol lol

Действительно лол.
Берешь, открываешь длл в них длл и смотришь. Байты начала процедуры ты уже старательно переписал на бумажку. С этой бумажки вводишь их в поиск и у тебя найдется нужное месте (при достаточно длинной цепочке). LOL. Virtual Adderss - ImageBase не всегда равно смещению в файле.



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

Создано: 18 февраля 2005 00:34
· Личное сообщение · #27

2 Ara:
"Берешь, открываешь длл в них длл и смотришь"
Не понял...



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

Создано: 18 февраля 2005 00:40
· Личное сообщение · #28

2 Ara:
Что открываешь? Чем открываешь? Откуда переписываешь байты начала процедуры? Ты можешь пинать меня ногами, говорить что я ваще убитый глупый и тупой но мне почему-то не понятно что ты хочешь сделать. Изьяснись пожалуйста понятней.




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 18 февраля 2005 00:56
· Личное сообщение · #29

Serge
Объясняя третий раз, я ошибся и написал длл, думая, что тебе нужно патчить длл. Эхе свой открываешь в любом хекс-редакторе. К примеру твоя процедура имеет такое начало
005C3B0C > 55 PUSH EBP
005C3B0D 8BEC MOV EBP,ESP
005C3B0F B9 07000000 MOV ECX,7

Задаешь поиск байт 558BECB907000000. Вписываешь туда начиная с 55.... 33С040С3 и сохраняешь.

А если ты не знаешь, откуда переписывать байты начала своей процедуры, то ты действительно ваще убитый глупый и тупой



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

Создано: 18 февраля 2005 01:45
· Личное сообщение · #30

2Ara:

ЭТО Я ЗНАЮ!!! Как раз наоборот - скорее если бы я байты искать не умел то считался бы "ваще убитым глупым и тупым"
А откуда переписывать байты начала своей процедуры - меня элементарно запутали - одни говорят QView, другие WinDASM третьи вообще чёто там про PE Editor задвинули... Ты ещё чего-то там про Virtual Adderss - ImageBase (несоответствие вирт. адреса и офсета в файле) говорил.
В который раз повторяю - обьясните как найти начало процедуры!

"Объясняя третий раз"
Это когда же =)))


. 1 . 2 . >>
 eXeL@B —› Основной форум —› Помогите beginner'у насчет пропатчивания!
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати