eXeL@B —› Основной форум —› Как ставить BreackPoints |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 08 декабря 2005 12:05 · Личное сообщение · #1 Скажите пожалуйста, вот есть у меня программа (простая программа crackme, друг делал мне для тренировки за 10 минут) которая спрашивает пароль. Программа написана на BuilderC++ (или другую программу написанную на Delphi, но это не важно). Я делаю так: 1. Запускаю PEiD, он мне выдает "Borland C++ 1999", значит программа написана на BuilderC++ 2. Запускаю OllyDbg. А как мне теперь найти все функции которые используются программой. Так как программа простая, то и функции должны быть стандартные. Я перепробовал и hmemcpy, lstrcpy т.д. OllyDbg не всплывает Как установить брекпоинт? Подскажите мне пожалуйста, что я делаю не правильно? |
|
Создано: 08 декабря 2005 12:06 · Личное сообщение · #2 Mixa ты сделай так: 1. Запусти IDA в ней открой свой файл, дождись когда она полностью проанализирует файл и сохрани МАР 2. В OllyDbg есть плагин GODUP (если у тебя нет - найди, вещь хорошая). Делаешь так: а) открываешь в OllyDbg свой crackme b) Заходишь в плагины->GODUP->Map Loader-> выбираешь МАР файл из п.1 c) Ставишь брекпоинт на функцию MessageBoxA или MessageBoxW Должно все работать. |
|
Создано: 08 декабря 2005 12:10 · Поправил: Hellspawn · Личное сообщение · #3 мда... а на что ты хочешь поставить бряк??? в олли нету hmemcpy =) есть аналог... попробуй в олле нажать ctrl+n а вообще попробуй вот этот скриптик =) и ещё... если всё таки на окно хочешь поставить бряк, я обычно делаю так... жду когда это окно вылезет, жму в олли паузу... пото трассирую, там будет цикл (типа пока не надавишь на кнопку) ставлю бряк, отпускаю прогу, жму кнопку в окне, а дальше в путь до нужной процедуры... 802e_Call_Magicas_Delphi.txt.zip ----- [nice coder and reverser] |
|
Создано: 08 декабря 2005 13:13 · Личное сообщение · #4 Mixa Что блин за вопросы? Для кого FAQ и статьи на сайте лежат? Ставишь плаг для Ольки CommandLine, там BPX 0 - увидишь список всех вызываемых функций. Если хочешь наверняка, то вводи там в кракми пароль, затем в ольке ставь бряки на все ф-ции, связанные с получением текста из едитбокса, на мессажбокс и т.д., если не прокатит - ставь бряки вообще на все функции, затем трэйсь и отрубай бряки, чтобы прога не брякалась при бездействии, как только прога перестанет брякаться жми кнопку там какая есть для проверки - далее по обстоятельствам... ----- Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску. |
|
Создано: 08 декабря 2005 13:17 · Личное сообщение · #5 |
|
Создано: 08 декабря 2005 13:21 · Личное сообщение · #6 |
|
Создано: 08 декабря 2005 13:29 · Личное сообщение · #7 Скрипт запускать через OllyScript (плагин) но в любом случае подход не верный. ты пытаешься отловить неизвестно что каков функционал крякми? запрашивает пароль? тогда ищи строку, которая выводится в случае правильного/неправильного пароля и смотри, где на неё прога ссылается. для этого лучше воспользовать дизассемблером IDA, либо поиском строк в OllyDbg а вообще, RTFM ----- EnJoy! |
|
Создано: 08 декабря 2005 13:39 · Личное сообщение · #8 |
|
Создано: 08 декабря 2005 13:51 · Личное сообщение · #9 |
|
Создано: 08 декабря 2005 14:06 · Личное сообщение · #10 |
|
Создано: 08 декабря 2005 14:12 · Личное сообщение · #11 |
|
Создано: 08 декабря 2005 14:14 · Личное сообщение · #12 |
|
Создано: 08 декабря 2005 14:17 · Личное сообщение · #13 |
|
Создано: 08 декабря 2005 14:22 · Личное сообщение · #14 LTP Ara Разница ощутима! Если например, в проге Длл отвечает за регистрацию, то BPX MessageBoxA не сработает, т.к. в данном случае стаятся бряки непосредственно в коде программы! А когда мы ставим BP MessageBoxA то ставим глобальный хук в текущем процессе и все попытки вызвать ф-ию MessageBoxA будут нам видны! ----- Подписи - ЗЛО! Нужно убирать! |
|
Создано: 08 декабря 2005 14:38 · Личное сообщение · #15 |
|
Создано: 08 декабря 2005 14:42 · Личное сообщение · #16 |
|
Создано: 08 декабря 2005 14:44 · Личное сообщение · #17 |
|
Создано: 08 декабря 2005 14:48 · Личное сообщение · #18 |
|
Создано: 09 декабря 2005 11:13 · Личное сообщение · #19 |
|
Создано: 09 декабря 2005 12:19 · Личное сообщение · #20 |
|
Создано: 09 декабря 2005 12:22 · Личное сообщение · #21 |
|
Создано: 09 декабря 2005 12:23 · Личное сообщение · #22 |
|
Создано: 09 декабря 2005 12:57 · Личное сообщение · #23 |
|
Создано: 09 декабря 2005 13:12 · Личное сообщение · #24 AngelDance Только что проверил 00406DEC > $ 55 PUSH EBP - тут пишем TC EAX==406D5C, запускаем 00406DED . 8BEC MOV EBP,ESP 00406DEF . 83C4 F0 ADD ESP,-10 00406DF2 . B8 5C6D4000 MOV EAX,game_Oll.00406D5C 00406DF7 . E8 E8ADFFFF CALL game_Oll.00401BE4 и мы ТУТ! Все работает ----- Подписи - ЗЛО! Нужно убирать! |
|
Создано: 09 декабря 2005 13:55 · Личное сообщение · #25 nice Что то не выходит. Делаю так (написал специально для книги), вот листинг: AnsiString a1="HFZnzLH\"", a2="3"; char *o1="SBPPTLQG#LH", *o2="sbpptlqg#EBOPF", *o3="Sbpptlqg" ; void __fastcall TForm1::Button1Click(TObject *Sender) { int i, len; if(Edit1->Text=="") return; //расшифровываем пароль len=a1.Length(); for(i=1;i<=len;i++) a1[i]=a1[i]^a2; //расшифровываем собщение len=strlen(o1); for(i=0;i<len;i++) o1[i]=o1[i]^a2; len=strlen(o2); for(i=0;i<len;i++) o2[i]=o2[i]^a2; len=strlen(o3); for(i=0;i<len;i++) o3[i]=o3[i]^a2; if(Edit1->Text==a1)TimerOk->Enabled=true; else TimerFalse->Enabled=true; } //-------------------------------------------------------------------- ------- void __fastcall TForm1::TimerOkTimer(TObject *Sender) { TimerOk->Enabled=false; MessageBox(0,o1,o3,MB_OK); exit(0); } //-------------------------------------------------------------------- ------- void __fastcall TForm1::TimerFalseTimer(TObject *Sender) { TimerFalse->Enabled=false;MessageBox(0,o2,o3,MB_OK); exit(0); } //-------------------------------------------------------------------- ------- |
|
Создано: 09 декабря 2005 13:57 · Личное сообщение · #26 |
|
Создано: 09 декабря 2005 14:25 · Личное сообщение · #27 |
|
Создано: 09 декабря 2005 15:24 · Поправил: nice · Личное сообщение · #28 AngelDance Тогда уже не на SetTimere, а на MessageBoxA Теперь о методике трэйса, программа должна находится в процессе отладки, как сделал ты: ввел пароль, например, 123123 переключился в Ольку, вбил в командной строке TC EAX==00467233 и нажал Ок, ес-но вылез Мессадж, т.к. программа не трассировалась! Что бы правильно работалтрэйс, можно сделать так: Запускаем прогу, вбиваем 123123, ставим бряку SetTimer, жмем ок, останавливаемся на SetTimer и вот теперь можно трэйсить TC EAX==00467233, и мы на: пока писал ответ попал сюда: 00401F27 . PUSH EAX ; |Text = "password FALSE" // EAX=00467233 00401F28 . PUSH 0 ; |hOwner = NULL 00401F2A . CALL <JMP.&USER32.MessageBoxA> ; \MessageBoxA ----- Подписи - ЗЛО! Нужно убирать! |
|
Создано: 12 декабря 2005 06:31 · Личное сообщение · #29 |
|
Создано: 12 декабря 2005 10:20 · Личное сообщение · #30 |
. 1 . 2 . >> |
eXeL@B —› Основной форум —› Как ставить BreackPoints |