Сейчас на форуме: tyns777, bezumchik, Lohmaty (+7 невидимых)

 eXeL@B —› Вопросы новичков —› Найти обработчик события click для кнопки
<< . 1 . 2 . 3 .
Посл.ответ Сообщение

Ранг: 16.6 (новичок), 1thx
Активность: 0.030.16
Статус: Участник

Создано: 15 февраля 2019 10:59
· Личное сообщение · #1

Здравствуйте, ув. Профессионалы!

Описание задачи:
- есть программа, написанная на S#. При запуске программы появляется форма для ввода логина и пароля, и соответственно с кнопками Войти и Отмена. Требуется найти обработчик события click для кнопки Войти (чтобы поставить туда бряк и дальше заниматься исследованием защиты программы)

Что уже было сделано:
1. простой поиск в dnSpy по событию click для всех файлов в том же каталоге ничего не дал

2. пробовал еще сделать так. Запустить программу, после запуска подцепиться к процессу с помощью трейсера dotTrace Performans, чтобы увидеть этот самый обработчик. Но тест результата не дал - dotTrace не умеет подцепляться и к процессу и к связанным с этим процессом библиотекам. Трассировку по связям можно отследить только если трейсер и будет запускать эту программу

Возможно для языка программирования S# нужно искать какие-то др. параметры обработчика события нажатой кнопки. С S# не знаком, программировал только на Visual Basic 6

!!!Прежде всего интересует техника, алгоритм или последовательность действий в нахождении решения по данному вопросу (обработчика события для кнопки)

Файлы с программой:
--> Link <--




Ранг: 337.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

Создано: 17 февраля 2019 21:29
· Личное сообщение · #2

Boostyq

А ты это на своём опыте знаешь, девочка ?

-----
vx





Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 17 февраля 2019 22:59 · Поправил: f13nd
· Личное сообщение · #3

difexacaw пишет:
Спроси у яшечки(на васм забанили за пидерасню и забрали модерку)

difexacaw пишет:
Дата моего бана истекает 8-го марта, она выбрана не с проста. Петушиный ресурс.

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

-----
2 оттенка серого




Ранг: 58.3 (постоянный), 50thx
Активность: 0.040.08
Статус: Участник

Создано: 18 февраля 2019 09:44 · Поправил: DrVB_5_6
· Личное сообщение · #4

difexacaw пишет:
Я твои ответы посмотрел, сам себе харакири сделай. Что бы не мучаться. Умственное отставание увы не лечится.

Ну Вы, батенька, не правы! Весьма самонадеянное заявление!
Рекомендую Вам не просто "посмотреть", а распечатать и перечитывать, перечитывать...
Ну не сразу, но, может быть, с 20 раза дойдёт...
Тогда и полегчает...,
глядишь, "русский" подрастет...
меньше ошибок будет, а то часто глаз режет...
А с Вашей самокритикой насчет Вашего "умственного отставания" я полностью согласен!
Да и большинство Ваших оппонентов на этом сайте, я думаю, с Вами полностью согласятся!



Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 18 февраля 2019 10:00
· Личное сообщение · #5

Нафлудили.
-по поводу 2к - это софт для прямого зарабатывания денег с очень хорошей защитой. Если поиском пройтись по названию проги на этом сайте, станет понятно сколько и как часто требуется он любителям халявы.
- по поводу поиска метода Click.
Господа!
-ядерщики. Лучше вообще не заглядывайте в темы где речь идет о программах с промежуточной компиляцией кода. (По мне: ваши советы(не по теме) как минимум снижают Вашу ценность во всех остальных областях где Вы сильны.
-те кто в теме.
а) ловить отладчиком событие, и потом перебирать stack ... ну ты ваааще (пока ты своими нейронами пошлешь сигнал пальцу, пока сработает дуга, пока твой сгибатель пальца сработает может пройти 100500 событий) и потом в каком из локальных стековых окон искать то)))))
б) я в своем предидущем ответе объяснил базовые принципы работы wpf либо windows приложения что по моему мнению гораздо полезней для абитуриента

| Сообщение посчитали полезным: DenCoder, sefkrd


Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 18 февраля 2019 11:14
· Личное сообщение · #6

Medsft пишет:
я в своем предидущем ответе объяснил базовые принципы работы wpf либо windows приложения что по моему мнению гораздо полезней для абитуриента

Вообще-то абитуриент хотел совет по реверсу, а не по глубокому изучению всей этой дотнетни. Написать свое приложение с 1 кнопкой и сидеть изучать как оно там внутри устроено - этим наверное очень здорово заниматься долгими зимними вечерами у камина, но практические задачи так не решаются.

-----
2 оттенка серого




Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 18 февраля 2019 11:39
· Личное сообщение · #7

f13nd пишет:
Вообще-то абитуриент хотел совет по реверсу

Ты считаешь это будет правильный поступок? h__p://prntscr.com/mmk966




Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 18 февраля 2019 11:53 · Поправил: f13nd
· Личное сообщение · #8

Medsft пишет:
Ты считаешь это будет правильный поступок?

Нет, если я все правильно понял, это не должно помочь. Слишком глупо. Вообще у приложений, использующих свой сервер, есть неприятное свойство быть неломаемыми, если все сделано грамотно. Но у меня и не было цели с этим разбираться, задачка была уже, а что пассажиру с этим потом делать - его забота. "Дальше заниматься исследованием защиты программы" он пообещал сам.

-----
2 оттенка серого




Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 18 февраля 2019 12:58 · Поправил: Medsft
· Личное сообщение · #9

f13nd пишет:
Слишком глупо.
ты думаешь я скрин сделал с того что сам написал? это оно самое

Забыл добавить: со снятым одним из слоев защиты




Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 18 февраля 2019 13:06
· Личное сообщение · #10

Medsft пишет:
ты думаешь я скрин сделал с того что сам написал?

Я вообще об этом не думаю, и не знаю к чему ты клонишь. Не силен во всей этой фондовой мишуре, но по-моему оно должно быть сильно интегрировано с сетевым(/и) сервисом(/ами), так что на скрине скорей всего просто условие отображения графической оболочки программы, работающего функционала это ей вряд ли придаст.

-----
2 оттенка серого




Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 18 февраля 2019 13:48
· Личное сообщение · #11

f13nd пишет:
и не знаю к чему ты клонишь
)))) ты давай не увиливай от ответа ))))) у нас с тобой вышло рассуждение, как правильней решить задачку которую поставил ТС (найти и обучиться). Я предложил начать с базовых принципов, ты- сразу с решения. Вот я скрин и выложил (думаешь не зная БП ему стало легче?)

f13nd пишет:
условие отображения графической оболочки
отчасти да.




Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 18 февраля 2019 13:57 · Поправил: f13nd
· Личное сообщение · #12

Medsft пишет:
)))) ты давай не увиливай от ответа ))))) у нас с тобой вышло рассуждение, как правильней решить задачку которую поставил ТС (найти и обучиться). Я предложил начать с базовых принципов, ты- сразу с решения. Вот я скрин и выложил (думаешь не зная БП ему стало легче?)

С дотнетом сталкиваюсь редко, но всегда ему рад, обычно выходит проще. Базовых принципов никаких не изучал (вообще никогда), дотнет своеобразен, но ничего прямо поражающего воображение там нету. Если ТС захочет - разберется, это не теория струн. Тем более базовые принципы в основном существуют для программистов и касаются их программистских кундштюков, реверс это всегда шаг с протоптанной лыжни в неизвестное и там только личный опыт работает. И наконец обучение других это тоже наука, можно насоветовать такого, что человеку нескольких лет изучения будет стоить, а за пользу этого никто не ручается.

-----
2 оттенка серого


| Сообщение посчитали полезным: BlackCode, rukop84

Ранг: 16.6 (новичок), 1thx
Активность: 0.030.16
Статус: Участник

Создано: 19 февраля 2019 00:07 · Поправил: rukop84
· Личное сообщение · #13

Решение задачи Medsft'а (отчет):

Метод, который используется в WPF-приложении при нажатии кнопки на форме является:
'Connect' библиотеки 'System.Windows.Markup.IComponentConnector'

Захотелось проделать обратную задачу: найти обработчик события click для кнопки на форме. Делаю так:
Поиск -> Connect (библиотека System.Windows.Markup.IComponentConnector) -> ПКМ по методу 'Connect' -> Анализировать -> Реализовано в -> Находим название нашего приложения -> Двойной клик -> Находим в процедуре Connect наш 'btnTest_Click' -> переходим по нему и уже в нем можем ставить бряк

Теперь по аналогии перенесем задачу на отлов нажатой кнопки в исследуемом приложении. Делаю так:
Поиск -> Connect... упс... А дальше получился затык, методов 'Connect' много, но ни одного, чтобы в искомой библиотеке (System.Windows.Markup.IComponentConnector). Прикрепил скрин --> Link <--



Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 19 февраля 2019 12:36 · Поправил: Medsft
· Личное сообщение · #14

rukop84 пишет:
много, но ни одного, чтобы в искомой библиотеке
h__p://prntscr.com/mn2x6n

Поставь бряки в каждом найденном коннекторе и стартуй под отладчиком



Ранг: 16.6 (новичок), 1thx
Активность: 0.030.16
Статус: Участник

Создано: 20 февраля 2019 16:35 · Поправил: rukop84
· Личное сообщение · #15

Medsft пишет:
Поставь бряки в каждом найденном коннекторе и стартуй под отладчиком


1. Поставил бряки на все методы Connect, кроме трех однострочных методов (на них бряки не ставятся). Результат - событие кнопки клик не перехватывается

2. Тогда решил на время забыть про исследуемое приложение и вернулся к своему подопытному кролику (форме с одной кнопкой). Проделал следующее:

Поиск -> 'btnTest' -> по найденному (btnTest_Click) ПКМ -> Анализ -> Used_by -> и на найденном установил бряк (строка с бряком WpfApplication1.MainWindow.System.Windows.Markup.IComponentConnector.Connect(int, object) : void @0600000E)

Далее сделал следующее:
Поиск -> 'Connect' -> и перешел по каждому найденному методу Connect и увы не обнаружил там своего выставленного бряка

!!!Кстати, выставленный бряк не отлавливает событие нажатой кнопки, но три раза срабатывает при загрузке формы

!!!Я пошел еще дальше: выставил по бряку на каждый из методов Connect найденные в поиске (на однострочные методы бряки не поставились). Ни один бряк не сработал при нажатие кнопки

Если надо подопытного кролика (форму с кнопкой) выложил здесь: --> Link <--
имя кнопки: btnTest

В общем на основе экспериментов пока, что вывод сделал такой:
привязка (присоединение обработчика событий) с помощью метода Connect происходит во время загрузки формы. Тогда получается, что когда Форма уже загружена все обработчики событий уже привязаны и при возникновении события Click по кнопке никакой привязки происходить не будет, так как все уже и так привязано. И тогда вопрос как отлавливать событие Click по кнопке с помощью метода Connect остается открытым

И еще открытым остался следующий вопрос: почему Поиск -> 'Connect' не находит метод connect с выставленным на нем бряком через Анализ - Used_by?

3. И еще по ходу дела появился вопрос:
- на основе чего определять exe-приложение создано на базе wpf или winForm?

4. ...спустя несколько часов:
До меня кажется дошло как решить задачу:
1) установить бряк на методе Connect (именно на тот самый, который три раза срабатывает при загрузке формы). Но вот вопрос как найти этот метод? Поиск напрочь отказывается это делать. Он находит другие методы Connect, но не этот
2) когда при загрузке формы сработает бряк, то в коде этого метода следует подсмотреть название кнопки. Там должны быть указаны реальные имена, так как происходит связывание одного с другим
3) и уже через поиск по реальному имени кнопки найти обработчик события клик для нее

5. ...спустя еще какое-то время:
Ну, блин и с поиском разобрался. Оказывается после выполнения команды Поиск -> 'Connect' в результатах поиска следует искать не метод 'Connect', а метод 'System.Windows.Markup.IComponentConnector.Connect' с библиотекой WpfApplication1.MainWindow

Тогда более правильный путь решения задачи будет такой:
1) Поиск -> 'Connect' -> в результатах поиска ищем 'System.Windows.Markup.IComponentConnector.Connect' -> Дв. клик -> В коде метода узнаем, что наша кнопка называется 'btnTest'
2) Поиск -> 'btnTest' -> в результатах поиска 'btnTest_Click' -> Дв. клик -> ставим бряк
3) Задача решена!!!

Теперь попробуем проделать аналогичные действия с исследуемой программой:
Поиск -> 'Connect' -> ...

в результатах поиска отобразилось огромное число элементов 'System.Windows.Markup.IComponentConnector.Connect', более 50 точно. Переходить по каждому результату, чтобы узнать имена кнопок, а потом каждое имя вбивать в поиск, а потом... что-то не очень эффективно...

Предлагаю Мастеру Medsft'у написать решение задачи с помощью метода 'Connect'



Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 21 февраля 2019 10:51 · Поправил: Medsft
· Личное сообщение · #16

Чтож поможем
По шагам:
1.http://prntscr.com/mo0pdy
2.http://prntscr.com/mo0q55
3.http://prntscr.com/mo0qbj
4.http://prntscr.com/mo0qwf
5.http://prntscr.com/mo0sc5
6.http://prntscr.com/mo0su0
7.http://prntscr.com/mo0t96
8.http://prntscr.com/mo0u2x
9.http://prntscr.com/mo0vzm

Решение задачи носит чисто образовательский характер
В одном из скринов допущена ошибка в классе не 2 а чуть больше методов и нужными аргументами на всех ставим бряки



Ранг: 16.6 (новичок), 1thx
Активность: 0.030.16
Статус: Участник

Создано: 21 февраля 2019 15:18
· Личное сообщение · #17

Medsft пишет:
Чтож поможем

Очень интересно. Даже по скринам несколько часов въезжал. Всегда интересно посмотреть как работает и думает Мастер.

Надеюсь я усвоил те базовые принципы, которые по мнению Мастера, я должен был усвоить с методом 'Connect'

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

И хотелось бы еще пару моментов уточнить:
1. Как по exe-файлу определить это wpf-сборка или сборка winForm?
2. В сборках winForm происходит привязка события Click во время выполнения программы, то есть после нажатия на кнопку, а в сборках wpf во время загрузки формы, правильно ли я понял?



Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 21 февраля 2019 16:13
· Личное сообщение · #18

rukop84 пишет:
1. Как по exe-файлу определить это wpf-сборка или сборка winForm?
gui приложения может содержать оба варианта отображения но
1)wpf приложение использует net framework >= 3.5
2)к wpf формам обязательно в комплекте идет дизайнер в формате xaml
3)winform нет connectora (в большинстве случаев)


rukop84 пишет:
2. В сборках winForm происходит привязка события Click во время выполнения программы, то есть после нажатия на кнопку, а в сборках wpf во время загрузки формы, правильно ли я понял?

Хватит тормозить! : привязка обязательно должна быть прежде И event на то и event чтобы срабатывать после нужного события т.е в event ты попадешь только после события. Другое дело если программист из кода вызвал этот event - это можно но только после того как обработчик ивента назначен(что и происходит в Connectore)

| Сообщение посчитали полезным: rukop84

Ранг: 16.6 (новичок), 1thx
Активность: 0.030.16
Статус: Участник

Создано: 21 февраля 2019 17:01
· Личное сообщение · #19

разобрался


<< . 1 . 2 . 3 .
 eXeL@B —› Вопросы новичков —› Найти обработчик события click для кнопки
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати