![]() |
eXeL@B —› Вопросы новичков —› OllyDbg, сохранение отредактированной программы |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 12 октября 2013 20:01 · Поправил: Leksar · Личное сообщение · #1 Не получается сохранить крякнутый софт, суть: программа проверяет имя пользователя, на основании него генериируется номер лицензии и уже по номеру лицензии генерируется ключ. Так вот хочу заменить эту функцию на свою, то есть чтоб программа принимала не реальное имя пользователя, а введенное мною. Значит вот исходная строка ![]() ее заменяем на эту ![]() далее ниже есть просто нули, в конце программы ![]() их заменяем на ![]() потом правой кнопкой нажимаю "Copy to executable"->"All modifications" и тут вылетает такое окошко ![]() обычно нажимаю на Copy All и далее сохраняю в файл, а тут не выходит, что я не так делаю? ![]() |
|
Создано: 12 октября 2013 20:05 · Поправил: Dr0p · Личное сообщение · #2 |
|
Создано: 12 октября 2013 20:05 · Поправил: Veliant · Личное сообщение · #3 |
|
Создано: 12 октября 2013 20:10 · Личное сообщение · #4 |
|
Создано: 12 октября 2013 20:13 · Личное сообщение · #5 |
|
Создано: 12 октября 2013 20:20 · Личное сообщение · #6 |
|
Создано: 12 октября 2013 22:13 · Поправил: sivorog · Личное сообщение · #7 |
|
Создано: 12 октября 2013 22:46 · Поправил: Leksar · Личное сообщение · #8 |
|
Создано: 13 октября 2013 01:09 · Поправил: __X3__ · Личное сообщение · #9 |
|
Создано: 13 октября 2013 01:25 · Поправил: Модератор · Личное сообщение · #10 |
|
Создано: 13 октября 2013 10:25 · Поправил: Leksar · Личное сообщение · #11 сделал по этой инструкции: Запускаешь lordpe, открываешь файл в pe editor, заходишь в sections делаешь add, потом делаешь edit этой секции, в virtualAddress и в rawsize указываешь размер например 1000 закрываешь, сохраняешь, потом я файл открывал в hiew переключался в hex режим, перемещался в самый низ и нажимая shift+f3, вставлял 4096 байт (это в десятичном системе исчисления, узнаешь спомощью калькулятора), ок,esc Все! ![]() секция .new, это скрин другой программы, но защита у них одинаковая. далее в Olly с адреса 00624000 вставляем свой код и обращаемся к нему "CALL 00624000", верно? ![]() |
|
Создано: 13 октября 2013 10:27 · Поправил: Leksar · Личное сообщение · #12 |
|
Создано: 13 октября 2013 10:41 · Личное сообщение · #13 |
|
Создано: 13 октября 2013 10:59 · Поправил: Leksar · Личное сообщение · #14 Сделал изменения, запустил в отладчике, все конечно заработало, но потом когда сохраняю, процедура, которая начинается с адреса 00608018, не сохраняется, там только нули после повторного открытия. А вот код "CALL 00608018", который вызывает эту процедуру, сохранился. Это из-за прав? Как мне сохранить изменения в секции .reloc? Или другую секцию выбрать? ---------------------------- у меня уже крыша едет... может кто-нибудь посмотреть, если не сложно, добавить секцию или показать куда вставлять код чтобы все работало. Остальное я сам сделаю, так как там ему имя компьютера и некоторые другие данные вот эту процедуру заменить на свою Code:
то есть чтоб считывалось не реальное имя пользователя, а свое. вот этот код чтобы вызывался (надеюсь он правильный) Code:
--------------------------------------- вот кстати мой пост где запросы на взлом, никто так и не помог ![]() |
|
Создано: 13 октября 2013 11:48 · Личное сообщение · #15 Leksar Code:
Всё влезло прям тютелька в тютельку ![]() ![]() ![]() ----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. ![]() |
|
Создано: 13 октября 2013 12:04 · Поправил: Leksar · Личное сообщение · #16 ClockMan а вот если мне еще код нужно будет добавить, куда его тыкать? места ниже больше нету. До меня только сейчас дошло, виртуальный адрес этой секции(CODE) - 00401000, размер RAW данных - BC600, считаем на калькуляторе 00401000+BC600=4BD600 на скрине видно этот адрес ![]() то есть ниже 4BD600 нельзя ничего вставлять А вот если расширить секцию кода? тогда наверно другие нижние секции могут "повредиться", как с ними быть? ![]() |
|
Создано: 13 октября 2013 12:13 · Личное сообщение · #17 Leksar пишет: А вот если расширить секцию кода? добавть секцию в конец файла(любым PE редактором) и пиши любой код. Leksar пишет: До меня только сейчас дошло, виртуальный адрес этой секции(CODE) - 00401000, размер RAW данных - BC600, считаем на калькуляторе 00401000+BC600=4BD600 Радует что на конец ты понял в чём у тебя была проблема! ![]() ----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. ![]() |
|
Создано: 13 октября 2013 12:48 · Личное сообщение · #18 |
|
Создано: 13 октября 2013 12:59 · Личное сообщение · #19 |
|
Создано: 13 октября 2013 13:00 · Личное сообщение · #20 |
|
Создано: 13 октября 2013 14:10 · Личное сообщение · #21 |
|
Создано: 13 октября 2013 14:15 · Личное сообщение · #22 |
|
Создано: 13 октября 2013 14:39 · Поправил: Leksar · Личное сообщение · #23 еще кое-что вот есть процедура Code:
на входе у нас EAX, и в него записывается "Admin" для имени компьютера все то же самое, к примеру "Admin-PC". Еще есть несколько подобных параметров, мне для всех создавать одинаковые процедуры придется? Можно как-нибудь минимизировать, то есть процедура одна, под ней данные идут: Code:
чтобы не создавать несколько функций, решение есть какое-нибудь? ------------------------- думаю вот что: было это Code:
меняем PUSH EAX на PUSH 1 к примеру а в процедуре уже делаем POP EBX, и сравниваем CMP EBX,1 и в зависимости от EBX записываем в Buffer ту или иную строку через JZ..., но тут проблема "PUSH EAX" занимает один байт, "PUSH 1" - два байта, как быть тут? ![]() |
|
Создано: 13 октября 2013 15:28 · Личное сообщение · #24 Leksar пишет: меняем PUSH EAX на PUSH 1 к примеру а в процедуре уже делаем POP EBX, и сравниваем CMP EBX,1 В стеке указан адрес возврата из процедуры,почему бы не им воспользоваться? Ну примерно так(код с подвохам для раз вашего мозга) Code:
----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. ![]() |
|
Создано: 13 октября 2013 15:49 · Личное сообщение · #25 |
|
Создано: 13 октября 2013 15:55 · Поправил: Leksar · Личное сообщение · #26 ClockMan, точно я про стек забыл, думал с флагами мудрить, а тут все просто. в ESP хранится верхний адрес стека, то есть можно сказать команда Code:
то же самое что и Code:
И так как мы сделали PUSHAD, то сначала идут 8 значений регистров, а потом уже адрес возврата, делаем ESP+20 (не пойму связь между 8 и 20), помещаем его в EAX и сравниваем... __X3__ пишет: Апи - kernel32.lstrcpy, не? даже не знаю, не работал с api функциями в ассемблере ![]() |
|
Создано: 13 октября 2013 15:58 · Личное сообщение · #27 |
|
Создано: 13 октября 2013 16:05 · Личное сообщение · #28 |
|
Создано: 13 октября 2013 16:17 · Личное сообщение · #29 __X3__, пока лучше обойдусь без апи. еще вопрос, в созданной мной секции, когда пишу код, его нельзя анализировать, чтоб отображалось как Code:
а тут отображается следующее Code:
проблему можно решить? ![]() |
|
Создано: 13 октября 2013 16:31 · Поправил: ClockMan · Личное сообщение · #30 |
. 1 . 2 . >> |
![]() |
eXeL@B —› Вопросы новичков —› OllyDbg, сохранение отредактированной программы |
Эта тема закрыта. Ответы больше не принимаются. |