Сейчас на форуме: YDS, _MBK_, user99 (+10 невидимых)

 eXeL@B —› Основной форум —› Как ставить BreackPoints
. 1 . 2 . >>
Посл.ответ Сообщение

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

Создано: 08 декабря 2005 12:05
· Личное сообщение · #1

Скажите пожалуйста, вот есть у меня программа (простая программа crackme, друг делал мне для тренировки за 10 минут) которая спрашивает пароль. Программа написана на BuilderC++ (или другую программу написанную на Delphi, но это не важно). Я делаю так:
1. Запускаю PEiD, он мне выдает "Borland C++ 1999", значит программа написана на BuilderC++
2. Запускаю OllyDbg.
А как мне теперь найти все функции которые используются программой. Так как программа простая, то и функции должны быть стандартные. Я перепробовал и hmemcpy, lstrcpy т.д. OllyDbg не всплывает Как установить брекпоинт?
Подскажите мне пожалуйста, что я делаю не правильно?



Ранг: 133.0 (ветеран)
Активность: 0.060
Статус: Участник

Создано: 08 декабря 2005 12:06
· Личное сообщение · #2

Mixa ты сделай так:
1. Запусти IDA в ней открой свой файл, дождись когда она полностью проанализирует файл и сохрани МАР
2. В OllyDbg есть плагин GODUP (если у тебя нет - найди, вещь хорошая). Делаешь так:
а) открываешь в OllyDbg свой crackme
b) Заходишь в плагины->GODUP->Map Loader-> выбираешь МАР файл из п.1
c) Ставишь брекпоинт на функцию MessageBoxA или MessageBoxW
Должно все работать.




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 08 декабря 2005 12:10 · Поправил: Hellspawn
· Личное сообщение · #3

мда... а на что ты хочешь поставить бряк??? в олли нету hmemcpy =) есть аналог...
попробуй в олле нажать ctrl+n
а вообще попробуй вот этот скриптик =)

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

802e_Call_Magicas_Delphi.txt.zip

-----
[nice coder and reverser]





Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 08 декабря 2005 13:13
· Личное сообщение · #4

Mixa
Что блин за вопросы? Для кого FAQ и статьи на сайте лежат?

Ставишь плаг для Ольки CommandLine, там BPX 0 - увидишь список всех вызываемых функций. Если хочешь наверняка, то вводи там в кракми пароль, затем в ольке ставь бряки на все ф-ции, связанные с получением текста из едитбокса, на мессажбокс и т.д., если не прокатит - ставь бряки вообще на все функции, затем трэйсь и отрубай бряки, чтобы прога не брякалась при бездействии, как только прога перестанет брякаться жми кнопку там какая есть для проверки - далее по обстоятельствам...

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.




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

Создано: 08 декабря 2005 13:17
· Личное сообщение · #5

Hellspawn А как его применять? Я только начинающий.




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 08 декабря 2005 13:21
· Личное сообщение · #6

Hellspawn пишет:
в олли нету hmemcpy =)

ГЫЫ... В ВинХР нет hmemcpy, оля тут не при чем.




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 08 декабря 2005 13:29
· Личное сообщение · #7

Скрипт запускать через OllyScript (плагин)
но в любом случае подход не верный. ты пытаешься отловить неизвестно что
каков функционал крякми? запрашивает пароль? тогда ищи строку, которая выводится в случае правильного/неправильного пароля и смотри, где на неё прога ссылается.
для этого лучше воспользовать дизассемблером IDA, либо поиском строк в OllyDbg
а вообще, RTFM

-----
EnJoy!





Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 08 декабря 2005 13:39
· Личное сообщение · #8

Ara пишет:
ГЫЫ... В ВинХР нет hmemcpy, оля тут не
оля разве так ставит бряк??? на hmemcpy ???
что то кажется нет =) а в хп есть аналог =) point-h гы....

-----
[nice coder and reverser]




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

Создано: 08 декабря 2005 13:51
· Личное сообщение · #9

Mixa
Юзай bpx GetWindowTextA или GetDlgItemTextA (чтение текста),
можешь попробовать lstrcmp (сравнение),
MessageBoxA или MessageBoxIndirect (вывод сообщений).




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 08 декабря 2005 14:06
· Личное сообщение · #10

LTP пишет:
Юзай bpx GetWindowTextA или GetDlgItemTextA (чтение текста),

йопт, в ольке бряк ставится bp , а не bpx.



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

Создано: 08 декабря 2005 14:12
· Личное сообщение · #11

Ara пишет:
йопт, в ольке бряк ставится bp , а не bpx.

Разницы никакой. Действует также.




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 08 декабря 2005 14:14
· Личное сообщение · #12

LTP пишет:
Разницы никакой. Действует также.

Угу, тока окошко меняет, лучше bp.



Ранг: 500.5 (!), 8thx
Активность: 0.230
Статус: Участник

Создано: 08 декабря 2005 14:17
· Личное сообщение · #13

Я обычно пользую bpx 1, открывается окошко с фунциями и сразу видно, есть нужная ф-я или нет =)
А на адрес естесно bp xxxxxxxx, или F2

-----
"Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels




Ранг: 384.1 (мудрец)
Активность: 0.250
Статус: Участник
www.int3.net

Создано: 08 декабря 2005 14:22
· Личное сообщение · #14

LTP
Ara
Разница ощутима!
Если например, в проге Длл отвечает за регистрацию, то BPX MessageBoxA не сработает, т.к. в данном случае стаятся бряки непосредственно в коде программы! А когда мы ставим BP MessageBoxA то ставим глобальный хук в текущем процессе и все попытки вызвать ф-ию MessageBoxA будут нам видны!

-----
Подписи - ЗЛО! Нужно убирать!




Ранг: 500.5 (!), 8thx
Активность: 0.230
Статус: Участник

Создано: 08 декабря 2005 14:38
· Личное сообщение · #15

nice
Для этого можно сделать и так - ? MessageBoxA, затем ctrl-g полученный адрес, ставим бряк на retn
Хотя твой способ проще =)

-----
"Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels




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

Создано: 08 декабря 2005 14:42
· Личное сообщение · #16

nice
В данном случае, как я понял, крэкмис не имеет своих библиотек,
так что использовать bp здесь не к чему.



Ранг: 384.1 (мудрец)
Активность: 0.250
Статус: Участник
www.int3.net

Создано: 08 декабря 2005 14:44
· Личное сообщение · #17

LTP
Моя практика показывает, что так лучше, особенно если программа чекает свою контрольную сумму в памяти. Да и вызывать можно через GetProcAddress, тогда точно BPX не сработает

-----
Подписи - ЗЛО! Нужно убирать!





Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 08 декабря 2005 14:48
· Личное сообщение · #18

LTP пишет:
так что использовать bp здесь не к чему.

bp нужно использовать всегда, независимо от исследуемой проги...



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

Создано: 09 декабря 2005 11:13
· Личное сообщение · #19

Jupiter Скажите пожалуйста, а есть ли где информация (может линк) где написано про скрипты для Olly? Просто хочу научиться писать скрипты самому. Очень уж интересная тема. Или может кто сможет рассказать как это делается?



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

Создано: 09 декабря 2005 12:19
· Личное сообщение · #20

Скажите пожалуйста а можно ли в Olly сделать так, что бы например трейсить программу автоматом до тех пор, пока например "ЕАХ==0047895" ? Или этого сделать нельзя в принципе?



Ранг: 384.1 (мудрец)
Активность: 0.250
Статус: Участник
www.int3.net

Создано: 09 декабря 2005 12:22
· Личное сообщение · #21

Mixa
TC EAX==0047895

-----
Подписи - ЗЛО! Нужно убирать!





Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 09 декабря 2005 12:23
· Личное сообщение · #22

Mixa пишет:
Скажите пожалуйста а можно ли в Olly сделать так, что бы например трейсить программу автоматом до тех пор, пока например "ЕАХ==0047895"

Можно. Ctrl+T, ставь галку Condiotion is TRUE и вписывай свое условие ЕАХ==0047895, трейс по Crrl+F11.



Ранг: 133.0 (ветеран)
Активность: 0.060
Статус: Участник

Создано: 09 декабря 2005 12:57
· Личное сообщение · #23

Mixa только если тебе надо сделать поиск СТРОКИ, то такой фокус не пойдет. Например тебе надо найти ECX 00467242 ASCII "Password" и ты делаешь TC ECX==00467242 это не работает. Правда не знаю почему. Я еще не нашел полный тьютор по Olly. Как найду включу его в свою книгу и выложу сюда.



Ранг: 384.1 (мудрец)
Активность: 0.250
Статус: Участник
www.int3.net

Создано: 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 и мы ТУТ! Все работает

-----
Подписи - ЗЛО! Нужно убирать!




Ранг: 133.0 (ветеран)
Активность: 0.060
Статус: Участник

Создано: 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);
}
//-------------------------------------------------------------------- -------



Ранг: 133.0 (ветеран)
Активность: 0.060
Статус: Участник

Создано: 09 декабря 2005 13:57
· Личное сообщение · #26

в Олли делаю так: загружаю туда прогу, TC EAX==00467233 запускаю ее (F9, Ctr+F7) и ничего.
Если ставить брекпоинт на SetTimer то видно что: EAX 00467233 ASCII "password FALSE"
ECX 00467242 ASCII "Password"
В чем трабл ?



Ранг: 384.1 (мудрец)
Активность: 0.250
Статус: Участник
www.int3.net

Создано: 09 декабря 2005 14:25
· Личное сообщение · #27

AngelDance
А прогу можно посмотреть? Такое ощущение, то знаачение не в регистр ложится...

-----
Подписи - ЗЛО! Нужно убирать!




Ранг: 384.1 (мудрец)
Активность: 0.250
Статус: Участник
www.int3.net

Создано: 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

-----
Подписи - ЗЛО! Нужно убирать!




Ранг: 133.0 (ветеран)
Активность: 0.060
Статус: Участник

Создано: 12 декабря 2005 06:31
· Личное сообщение · #29

nice спасибо! все работает! тупилс....



Ранг: 389.6 (мудрец)
Активность: 0.150
Статус: Участник

Создано: 12 декабря 2005 10:20
· Личное сообщение · #30

Mixa пишет:
хочу научиться писать скрипты самому

Ты сначала Olly пользоваться научись. =))

По поводу hmemcpy - plugin Puntos Magicos (F12)

-----
TBR



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


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