Здравствуйте. Я хочу научиться дезассемблировать приложения. И сейчас мне нужно узнать какие какие команды выполняет приложение при нажатии в нём левой кнопки мыши. Для этого мне нужно создать точку останова когда будет нажата эта кнопка в работающей программе. Какой отладчик может справиться с этой задачей, и как её реализовать?
Писать бы правЕльно научиться сначала.... По теме: Как ставить БП на события - достаточно описания Нарвахи, если непонято - вряд ли кто-то сможет доступней. Если понято, но не получается, значит с АПП "что-то не так"... типа не голое АПИ.... КарочЕ-е-е-е-е: подробности про АПП в студию!
"хочу научиться дизассемблировать программы" и "хочу знать какие команды выполняет приложение при нажатии", а как эти две вещи связаны? Вероятней всего элемент интерфейса узнает о левом клике из обработчика оконных сообщений на событиях WM_LBUTTONDBLCLK,WM_LBUTTONDOWN,WM_LBUTTONUP. Учитывай, что у дочерних элементов основного окна могут быть свои обработчики.
Приложение в exe файле. Я не знаю как оно писалось. У меня есть только ассемблерный код. Открывал отладчиком OllyDbg. Может он подойдёт для этих целей? --- Сообщение объединено, 23 дек 2019 --- Я просто хочу знать можно ли в отладчике создать точку останова по событию (нажатие левой клавиши мыши) в приложении запущенном этим отладчиком?
vldi75slav, Останов ставится на любой адрес, что бы знать куда его ставить нужно знать примерный механизм работы апп. Был такой инструмент spy++ с него вам и следует начать https://docs.microsoft.com/en-us/visualstudio/debugger/introducing-spy-increment?view=vs-2019
Если в ольге жмешь alt-w, находишь окно, левый клик в которое хочешь ловить, берешь адрес из столбца ClsProc, conditional бряк в этом месте будет ловить нужные тебе события, код wmsg второй аргумент (DWORD[esp + 8])
Подойдет и олли, и любой другой под вин, хоть ТД (при условии что приложение поверх "голого" винапи работает, конечно). Вопрос в том, чтобы понимать, что это за "событие" - нажатие клавиши, как оно обрабатывается, где обрабатывается. Рискну посоветовать начать с Петзольда "Программирование для Windows 95", глава 6 "Мышь". Если там .Net какой-нибудь, дельфи или VB, все гораздо сложнее.
Тут наоборот проще, открываешь любым дотнет отладчиком/декомпиллером, находишь нужный тебе класс и обработчик ивента в нем. Если обфусцирован, то канеш посложнее, но все равно гораздо проще, чем с нативным кодом, или того хуже - каким-нить Qt например.
Да, действительно, сперва надо написать на ассемблере своё окно с обработчиком сообщений от мыша, найти в олли где ставить брейк в этом своём обработчике, поставить брейк, жмакнуть мышом по окну и получить профит. А сферические в вакууме ехе-фаелы могут делать это десятком других способов, понять которые проще всего НАПИСАВ И ОТЛАДИВ СОТНИ СВОИХ ЛИЧНО НАПИСАННЫХ ПРОГРАММ.
TrashGen, Может посоветуете, с чего начать? Я изучил программу Spy++. Нашёл все сообщения связанные с окном моего приложения. А вот что с ними делать....? Я раньше писал на ассемблере для ZX-Spectrum. Вот теперь надо как-то с PC разобраться.
vldi75slav, пардоньте, бога ради, что вмешиваюсь, но как вы нашли "сообщения связанные с окном моего приложения"? Этого же в принципе невозможно сделатсь...
С Петзольда начинайте. Или попробуйте Зубкова или Икзелиона, там сразу на ассемблере. Но программу все-таки выложите сюда лучше на случай если там фреймворк какой. Также можно воспользоваться чем-то вроде PEiD, но я не в курсе что из них сейчас модно и работает.
vldi75slav, да вроде уж посоветовали всё чо можно. Ябы рекомендовал посмотреть ицзелиона. Создание окон и работа с мышью. Увидите где и как курятся циклы обработок оконных сообщений, что такое сообщения от мыши. Ну и программу свою также можете показать, подскажут, что и как с ней можно сделать, чтобы найти то, что вам нужно
Спасибо всем, кто ответил на мой вопрос. Буду изучать литературу по программированию. Лучше мне во всём самому разобраться. Есть, с чего начать. Всех - с наступающим!