Сейчас на форуме: igorcauret, Rio (+6 невидимых)

 eXeL@B —› Вопросы новичков —› Не могу найти референсные строки в отладчике
Посл.ответ Сообщение

Ранг: 0.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 10 февраля 2015 11:36
· Личное сообщение · #1

Привет. Ломаю такую штуку

http://yellow-gold-soft.com/statistic_files/statME.php

Запускаю Олли, открываю в нем исполнительный файл, но не могу найти ни одного слова из окна с вылетающей ошибкой. Программа использует локализации и я надеялся найти что-нибудь по ключам для них, но к своему удивлению не обнаружил в файлах локализаций ключей по которым могли бы находиться значения.

Видел, что некоторые проставляют брейкпоинты на MessageBoxA, для программ написанных на Вижуал Си, но в дебаггере опять-таки не нашел ни одного упоминания. Как их найти?

Вилку условия менять не хочу, хочу найти фрагмент сравнения с правильным паролем.

И еще: в Олли нашел такую опцию Execute Till User Code. Правильно ли я понимаю, что это означает, что дебаггер будет выплнять программу до тех пор, пока не будет получено какое-то действие пользователя? Если да, то как правильно использовать эту опцию? Потому что у меня при использовании этого режима дебаггер никак не откликается. Я хочу чтобы дебаггер отловил событие о нажатии визуальной кнопки.



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

Создано: 10 февраля 2015 12:17 · Поправил: unknownproject
· Личное сообщение · #2

FennecFix пишет:
Видел, что некоторые проставляют брейкпоинты на MessageBoxA, для программ написанных на Вижуал Си, но в дебаггере опять-таки не нашел ни одного упоминания. Как их найти?



-----
TEST YOUR MIGHT




Ранг: 0.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 10 февраля 2015 12:23
· Личное сообщение · #3

Это какой-то плагин? У меня обыкновенная Олли с офсайта. Поиск через Search For -> All referenced strings с запросом "Incorrect" или "registration" ни к чему не приводит, дебаггер говорит, что он такие строки найти не может. Что я делаю не так? Как настроить такой вид отображения? Как правильно искать строки?



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

Создано: 10 февраля 2015 12:25
· Личное сообщение · #4

Это список Вызовов (Calls), нажатие на кнопку "К".После вызова апи поставить отладку на паузу и смотреть вызовы.Плагины я не юзаю, оля у меня патчена мной лично на все баги, которые я сам искал.

-----
TEST YOUR MIGHT


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

Ранг: 0.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 10 февраля 2015 12:35
· Личное сообщение · #5

Спасибо, попробую наломать дальше



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

Создано: 10 февраля 2015 12:49 · Поправил: unknownproject
· Личное сообщение · #6

А строки вы не найдете в отладчике, потому что они вынесены в языковые файлы в папке lang_files, так что в процессе вызова апи текст сообщения об ошибке подгружается из языкового файла.


-----
TEST YOUR MIGHT




Ранг: 6.3 (гость)
Активность: 0.010
Статус: Участник

Создано: 10 февраля 2015 12:55 · Поправил: samtehnik
· Личное сообщение · #7

сравнение паролей ---> Link <--



Ранг: 0.4 (гость)
Активность: 0=0
Статус: Участник

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

Извиняюсь за задержку, вчера не давали активно общаться сразу после регистрации )

unknownproject я вобщем-то собирался найти там не сами строки, я рассчитывал найти ключи, по которым эти строки подставляются, но видимо они подставляются не так как я подумал

samtehnik ну вы не торопитесь отдавать мне прям сразу решение задачи) Выж как-то нашли эту строчку, верно? Я тоже хочу научиться ее находить )

Вот меня беспокоит еще вопрос о том, можно ли наломать программу (чтобы не ходить далеко именно эту), имея только навык работы с дебаггером? Или обязательно нужно иметь хорошее представление об ассемблере?

У меня есть совсем базовые знания о том как кладутся значения в регистры, какими операторами они сравниваются и как проходят условные переходы.

По условным переходам навскидку прямо сразу расшифровок не нашел, но подозреваю что они следующие:
JNZ = Jump if Not Zero
JNE = Jump if Not Equal
JE = Jump if Equal

Однако в команде не указывается какой регистр чему-то должен быть равен.



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

Создано: 11 февраля 2015 13:10 · Поправил: unknownproject
· Личное сообщение · #9

FennecFix пишет:
unknownproject я вобщем-то собирался найти там не сами строки, я рассчитывал найти ключи, по которым эти строки подставляются, но видимо они подставляются не так как я подумал

Прочтите внимательно мой пост.На это стоило обратить внимание.
Касательно решения самтехника.Он искал введенный рег код в памяти.Как это можно осуществить ? В программе после нажатия кнопки и до вывода сообщения выполняется расчет и происходит некоторая задержка.В этот момент ставим отладку на паузу, переходим к карте памяти (кнопка М) и ищем введенный рег код в Unicode кодировке.В открывшемся новом окне выделяем по нужному адресу первые 4 байта -> ПКМ -> Breakpoint -> Hardware, on access -> Dword.Далее жмем F9 и отладчик всплывает на месте проверки.
FennecFix пишет:
Вот меня беспокоит еще вопрос о том, можно ли наломать программу (чтобы не ходить далеко именно эту), имея только навык работы с дебаггером?

Учитывая то, что дебаггер представляет код программы в виде опкодов(команд) ассемблера, то без усвоения будет очень трудно, а еще трудней, если Вы не умеете программировать.Многие их тех, кто здесь сидят, отлаживали собственные программы и разбирались в ассемблерном представлении собственного кода.Это не так уж и трудно.Не буду утверждать об объективности, но этот материал, как по мне, вполне годный - --> Link <--

-----
TEST YOUR MIGHT


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

Ранг: 0.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 11 февраля 2015 13:23
· Личное сообщение · #10

Еще раз спасибо за ценную информацию.

С программированием я знаком, но правда пока только на языках высокого уровня. Уже скачал себе книжек по ассемблеру, по мере нахождения свободного времени читаю.



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

Создано: 11 февраля 2015 13:50 · Поправил: unknownproject
· Личное сообщение · #11

FennecFix пишет:
С программированием я знаком, но правда пока только на языках высокого уровня.

JNZ = Jump if Not Zero и JNE = Jump if Not Equal равнозначны, так как оба условных перехода выполнятся в случае неравенства переданного значения нулю.
JE = Jump if Equal
На делфи (или паскале) с условным оператором if был бы примерно такой код:
if x > 0 then ...
if x = 1 then ...
if x < 3 then ...
if x = 0 then ...
и тд.
Чтобы это все понять нужно анализировать код программы.

-----
TEST YOUR MIGHT



 eXeL@B —› Вопросы новичков —› Не могу найти референсные строки в отладчике
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати