eXeL@B —› Вопросы новичков —› Как подменить ClassName главного окна, в запускаемой из лоадера программы? |
Посл.ответ | Сообщение |
|
Создано: 13 июля 2017 02:00 · Личное сообщение · #1 Попытался открыть RAM запущенной программы-жертвы в WinHex, надо-то было найти патерн и изменить его. Но защита программы спалила запуск WinHex-а и закрыла свою программу. Выяснил, что запуск WinHex определяется защитой по Caption("WinHex") и по ClassName ("WHXMDI"). Если хоть один из этих параметров есть, то защита валит программу. Хочу сделать лоадер под WinHex, на Делфи. Чтобы при запуске подменить Caption и ClassName. С Caption, проблем нет: Code:
А вот с ClassName, не знаю как это сделать. Подскажите. пожалуйста, если кто знает решение. |
|
Создано: 13 июля 2017 08:50 · Личное сообщение · #2 |
|
Создано: 13 июля 2017 18:37 · Поправил: Kuzya69 · Личное сообщение · #3 |
|
Создано: 13 июля 2017 19:01 · Личное сообщение · #4 Kuzya69 Давайте вместе подумаем. Вам нужно изменить некоторые параметры приложения. Очевидно что некоторые(текст) могут быть изменены в произвольный момент времени, некоторые не могут быть изменены(класс етц), так как к примеру свойства обьекта задаются при его создании. Поэтому очевидно что параметры/свойства которые далее изменить нельзя должны быть заданы на том этапе работы апп, когда их возможно изменить. В данном случае это создание обьектов. Как отловить это событие - мониторить вызов соотвествующего сервиса/апи. Как это сделать - зависит от конкретного тз. ----- vx |
|
Создано: 13 июля 2017 19:41 · Личное сообщение · #5 |
|
Создано: 13 июля 2017 20:06 · Личное сообщение · #6 |
|
Создано: 14 июля 2017 10:17 · Личное сообщение · #7 |
|
Создано: 14 июля 2017 10:56 · Поправил: VOLKOFF · Личное сообщение · #8 |
|
Создано: 14 июля 2017 11:17 · Личное сообщение · #9 |
|
Создано: 14 июля 2017 13:00 · Поправил: Kuzya69 · Личное сообщение · #10 Isaev пишет: кто вообще додумался Не знаю, протектор. RDGPackerDetector076 и ProtectionID685 молчат как партизаны. Но судя по тому что для предыдущих версий программы использовался VMProtect, то скорее всего и в этот раз он, родимый. gajemuxi пишет: Патчим нужное (как руками в HEX-редакторе, только в памяти Не, это не мой метод, нужно научить лоадер самостоятельно находить имя класса. |
|
Создано: 14 июля 2017 14:19 · Личное сообщение · #11 Уже многим походу интересно что это за аццкий такой софт? Kuzya69 пишет: нужно научить лоадер самостоятельно находить имя класса ну так да, нейронные сети, обучение, ИИ, восстание машин... или посмотреть на скрин из первого ответа и увидеть функцию, создающую окно и параметры, которые она принимает. В твоем случае больше ничего не нужно. |
|
Создано: 14 июля 2017 14:57 · Личное сообщение · #12 |
|
Создано: 14 июля 2017 15:49 · Поправил: Kuzya69 · Личное сообщение · #13 |
|
Создано: 14 июля 2017 19:26 · Личное сообщение · #14 Kuzya69 У вас не работает сеть или гугл.. Первый аргумент. Есчо спросите какой нибудь бред. ----- vx |
|
Создано: 15 июля 2017 10:52 · Поправил: DenCoder · Личное сообщение · #15 Kuzya69 пишет: Так скорее всего, не создающую окно, а функцию, регистрирующую класс, надо хукать ? Можно функу по ссылке difexacaw хукать, тогда надо класс подменять, свой создавать на обработке хука. Но перед нужно узнать значение атома, ведь регистрация класса окна возвращает его, чтобы передать в CreateWindowEx(A | W). Как узнать по атому название класса? Надо вызывать GetClassInfo/GetClassInfoEx. Хотя можно и по адресам возврата в стеке выявить, что именно то нужное окно вызывается. А можно только RegisterClass(A | W)/RegisterClassEx(A | W) хукнуть, чтобы подменить название класса сразу и только. ----- IZ.RU | Сообщение посчитали полезным: Kuzya69 |
|
Создано: 15 июля 2017 14:29 · Поправил: Kuzya69 · Личное сообщение · #16 DenCoder пишет: Можно функу по ссылке difexacaw хукать, тогда надо класс подменять, свой создавать на обработке хука. ..... А можно только RegisterClass(A | W)/RegisterClassEx(A | W) хукнуть, чтобы подменить название класса сразу и только. Ну, вот это я и пытался выяснить. Я никак не мог понять, как задать имя класса для функции CreateWindow, который еще не создан-зарегистрирован. |
|
Создано: 15 июля 2017 15:47 · Личное сообщение · #17 DenCoder Для захвата кода через патч и восстановление нужен мотор. Причём который не кривой, а делает это синхронно. По данной причине, такое юзать не желательно, что бы не тягать с собой тяжёлые движки и лишний раз не палиться. Поставить HW точку останова на нужную функу, и обработать. При срабатывании ловушки выполнить маршрутизацию - сохранить в тлс текущий адрес, установить в контексте адрес стаба и вернуть управление; произойдёт передача управления на стаб и можно задефейнить обработчик как оригинальную функцию. ----- vx |
|
Создано: 15 июля 2017 23:44 · Поправил: redlord · Личное сообщение · #18 |
|
Создано: 17 июля 2017 16:58 · Личное сообщение · #19 difexacaw пишет: Поставить HW точку останова на нужную функу, и обработать. У каждого своё кунфу ) Но в данном случае для выполнения описанной задачи, в контексте желаемого тс достаточно джампов на чуть умелонаписанный "хэндлер" хуков По универсальности - это как и пытались найти общий алгоритм решений ----- IZ.RU |
eXeL@B —› Вопросы новичков —› Как подменить ClassName главного окна, в запускаемой из лоадера программы? |