![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,328
|
![]()
Message Breakpoints (BMSG) при посимвольным считывании из окон ввода (имени и серийника) (глава 12)
- запускаем приложение (F9) (если был предыдущий запуск, то удаляем все точки останова, BPX - через кнопку на панели инструментов и BPM - через нажатие в любом месте листинга: ПКМ -> Breakpoint -> Remove memory breakpoint; перезапускаем, для этого: (Debug -> Restart) (или Ctrl+F2)) - открываем окно ввода серийника - имя и серийник не вводим - на панели инструментов нажимаем кнопку W (далее обновляем (если нет кнопок), для этого: ПКМ в окне W -> Actualize) - ПКМ по строке "Button" "OK" -> Message breakpoint on ClassProc - из списка выбираем сообщение WM_KEYUP (под кодом 101h) - выбираем Break on any window - значение Pause program -> On message - значение Log WinProc arguments -> On message - начинаем вводить имя - при нажатии на клавишу должна сработать BMSG (но не для всех программ, к примеру CrackMe считывает данные целиком при нажатии OK) Сохранение сообщений в файл для анализа (глава 12) - запускаем приложение (F9) (если был предыдущий запуск, то удаляем все точки останова, BPX - через кнопку на панели иструментов и BPM - через нажатие в любом месте листинга: ПКМ -> Breakpoint -> Remove memory breakpoint; перезапускаем, для этого: (Debug -> Restart) (или Ctrl+F2)) - вводим имя и серийник, но не нажимаем ок - на панели инструментов нажимаем кнопку W - ПКМ по строке "Button" "OK" -> Message breakpoint on ClassProc - из списка выбираем сообщение WM_LBUTTONUP (под кодом 202h) - выбираем Break on any window - значение Pause program -> On message - значение Log WinProc arguments -> On message - подтверждаем изменения: OK - на панели инструментов нажимаем кнопку B - ПКМ на строке точки останова в окне Breakpoints -> Edit condition - очищаем поле Condition - в поле Expretion пишем: [exp+8] - выставляем значение: Program Pause = Never - выставляем значение: Log value of expression = Always - выставляем значение: Log function arguments = Always - подтверждаем изменения: OK - нажимаем OK в окне регистрации - на панели инструментов нажимаем кнопку L - в логе можно найти сообщения 201 WM_LBUTTONDOWN и 202 WM_LBUTTONUP. Клавиатурных WM_KEYDOWN и WM_KEYUP - нет Запись в лог-файл всех сообщений, которые получает программа (глава 12) - если был предыдущий запуск, то удаляем все точки останова, BPX - через кнопку на панели иструментов и BPM - через нажатие в любом месте листинга: ПКМ -> Breakpoint -> Remove memory breakpoint; перезапускаем, для этого: (Debug -> Restart) (или Ctrl+F2) - программа на Entry Point - вводим в CommandBar: BP TranslateMessage -> нажимаем Enter - вводим в CommandBar: BP DefWindowProcA -> нажимаем Enter - на панели инструментов нажимаем кнопку B Для первой и второй точек останова: - в окне Breakpoint: (ПКМ на первой точке останова -> Follow in disassembler) (или Enter) - в окне листинга: (ПКМ на точке останова -> Breakpoint - Conditional log) (или Shift+F4) - очищаем поле Condition - в поле Expretion пишем: MSG - выставляем значение: Program Pause = Never - выставляем значение: Log value of expression = Always - выставляем значение: Log function arguments = Always - подтверждаем изменения: OK - на панели инструментов нажимаем кнопку L - ПКМ в окне Log -> Log to file - запускаем приложение (F9) P.S. Фух... Вроде начальная подготовка инструментов закончена! Можно приступать к исследованиям! Чувствую у меня будет появляться вопросов куча ![]() ![]() |
![]() |
![]() |
![]() |
#12 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,328
|
![]() |
![]() |
![]() |
![]() |
#13 |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
![]()
8Observer8
Зато чуть ниже есть NtdllDefWindowProc_A и судя по функциям GetDialogItemTextA и EndDialog это диалог, а в нем может и не быть функции DefWindowProc |
![]() |
![]() |
![]() |
#14 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,328
|
![]()
Спасибо, Mikl___!
NtdllDefWindowProc_A это аналог для DefWindowProc? В инете для NtdllDefWindowProc_A никакого описания не смог найти. |
![]() |
![]() |
![]() |
#15 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,328
|
![]()
Жёстко заданный серийник. Перебор строк (глава 13)
Описание. Открываем полный список строк используемых в программе и вводим поочереди. Подходит для "Leccion 13 HARDCODED 1.exe" Инструкция: - программа на Entry Point - ПКМ в листинге -> Search for -> All Referenced text strings - начинаем использовать все строки в качестве серийного номера Последний раз редактировалось 8Observer8; 25.11.2012 в 18:21. |
![]() |
![]() |
![]() |
#16 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,328
|
![]()
Жёстко заданный серийник. Поиск серийного номера через bp на функции считывания введённых данных (глава 13)
Описание. Ставим точку останова на функции считывания введённых данных (GetDlgItemTextA). Подходит для "Leccion 13 HARDCODED 1.exe" и для "Leccion 13 HARDCODED 2.exe" Инструкция: - программа на Entry Point - открываем список API-функции, используемых в текущем модуле, для этого: (ПКМ в листинге -> Search for -> Name (Label) in current module) (или Ctrl+N) - ставим обычную точку останова (bp) на первой команде внутри функции GetDlgItemTextA (для этого см. третий пункт сообщения: http://programmersforum.ru/showpost....12&postcount=9) - запускаем программу (F9) - вводим лже-серийник -> нажимаем OK - выполняем GetDlgItemTextA до конца, для этого: (Debug -> Execute till return) (или Ctrl+F9) - F7 или F8 (шаг вперёд) - видим сравнение содержимого (4-x первых байт серийного номера) по двум адресам (чтобы посмотреть содержимое, нужно -> ПКМ по командам MOV -> Follow in Dump -> Memmory address (или Immediante constant, если адрес жестко задан)) - запоминаем серийный номер -> убираем точки останова (удаляем в окне B) -> перезапускаем программу (Debug -> Restart (или Ctrl+F2)) -> вводим запомненный серийный номер Последний раз редактировалось 8Observer8; 25.11.2012 в 18:47. |
![]() |
![]() |
![]() |
#17 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,328
|
![]()
Жёстко заданный серийник. Поиск серийного номера через bp на функции считывания введённых данных (домашнее задание для главы 13)
Описание. Ставим точки останова на функции считывания введённых данных (GetWindowTextA). Подходит для "mielecrackme1" Инструкция: - программа на Entry Point - открываем список API-функции, используемых в текущем модуле, для этого: (ПКМ в листинге -> Search for -> Name (Label) in current module) (или Ctrl+N) - ставим обычную точку останова (bp) на первой команде внутри функции GetWindowTextA (для этого см. третий пункт сообщения: http://programmersforum.ru/showpost....12&postcount=9) - запускаем программу (F9) - вводим лже-серийник -> нажимаем OK - выполняем GetWindowTextA до конца, для этого: (Debug -> Execute till return) (или Ctrl+F9) - F7 или F8 (шаг вперёд) - видим сравнение содержимого двух строк функцией lstrcmpA - запоминаем серийный номер -> убираем точки останова (удаляем в окне B) -> перезапускаем программу (Debug -> Restart (или Ctrl+F2)) -> вводим запомненный серийный номер Последний раз редактировалось 8Observer8; 25.11.2012 в 18:49. |
![]() |
![]() |
![]() |
#18 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,328
|
![]()
Вчера нашёл этот туториал в превосходном виде! Его так оформили классно! Начну теперь с начала его читать
![]() Ссылка: http://www.twirpx.com/file/820236/ |
![]() |
![]() |
![]() |
#19 |
Новичок
Джуниор
Регистрация: 02.12.2013
Сообщений: 1
|
![]()
либо [правая кнопка мыши в листинге (на месте установки) -> Breakpoint -> Toggle] [Или выделить строчку -> нажать F2]
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
На чём писать обучающий сайт? | Алексей Голубов | PHP | 5 | 13.06.2012 16:23 |
TrinityCore C++ Обучающий проект. + DB MySQL | L30m4nc3r | Свободное общение | 2 | 26.06.2011 16:08 |
Обработка массивов экспериментальных данных при исследовании технических систем | monarx | Помощь студентам | 0 | 08.04.2011 01:07 |
Мультимедийный Обучающий Курс TeachPro Java Для Начинающих | mihali4 | Общие вопросы по Java, Java SE, Kotlin | 3 | 04.11.2008 05:39 |