Сейчас на форуме: bartolomeo (+3 невидимых)

 eXeL@B —› Вопросы новичков —› Ломаем крямикс [нужна помощь!!]
. 1 . 2 . >>
Посл.ответ Сообщение

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

Создано: 15 февраля 2006 22:23
· Личное сообщение · #1

Вот такой вот он них%на не ломающийся. Помогите разобраться. PLS

0ba2_CrackMe.exe.zip



Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.01
Статус: Участник

Создано: 15 февраля 2006 23:22
· Личное сообщение · #2

а в чем сложность?




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

Создано: 15 февраля 2006 23:36 · Поправил: Ara
· Личное сообщение · #3

Наверно ты его и не ломал. Пасс 3878-11DC-2041-2136 валяется в памяти в открытом виде, тупой крякми, афтару низачОт. 3878-11DC точно серийник диска С, вторая половина вроде диска D, смотреть дальше влом.



Ранг: 50.7 (постоянный)
Активность: 0.060
Статус: Участник

Создано: 16 февраля 2006 00:15 · Поправил: Klajnor
· Личное сообщение · #4

Ara пишет:
тупой крякми, афтару низачОт ... смотреть дальше влом

И всё-же лучше посмотреть =)

Ara пишет:
Пасс 3878-11DC-2041-2136
- Пасс левый. У меня он вообще другой

А прога должна сказать
"Спасибо за регистрацию!"
и изменить заголовок с "CrackMe v1.0 by v0id - Trial Version" на "CrackMe v1.0 by v0id - Registered Version"

Хотя правильный пароль я так и не нашёл =(




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

Создано: 16 февраля 2006 00:28 · Поправил: Ara
· Личное сообщение · #5

Klajnor
Ты издеваешься? Написано же - Ara пишет:
3878-11DC точно серийник диска С, вторая половина вроде диска D

Есс-но что серийники будут у всех разные.

и что значит "Пасс левый. У меня он вообще другой" и "Хотя правильный пароль я так и не нашёл =("?? Ты нашел неправильный пароль и у тебя он не такой какой должен быть? Это обяснимо...



Ранг: 50.7 (постоянный)
Активность: 0.060
Статус: Участник

Создано: 16 февраля 2006 00:48 · Поправил: Klajnor
· Личное сообщение · #6

Ты издеваешься? - нет конечно!
Пасс левый - значит предназначен, чтобы запутать( поэтому и лежит на виду)
правильный пароль - тот после которого прога выдаст "Спасибо за регистрацию!" и "Registered Version"




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

Создано: 16 февраля 2006 14:23
· Личное сообщение · #7

Klajnor пишет:
правильный пароль - тот после которого прога выдаст "Спасибо за регистрацию!" и "Registered Version"

Где об этом написано?



Ранг: 50.7 (постоянный)
Активность: 0.060
Статус: Участник

Создано: 16 февраля 2006 14:43
· Личное сообщение · #8

Ara пишет:
Где об этом написано?
- нигде, но просто меня смущают такие места в проге:

00404C62 |. 68 604D4000 PUSH 0ba2_Cra.00404D60 ; /Text = "CrackMe v1.0 by v0id - Registered Version"
00404C67 |. A1 48524000 MOV EAX,DWORD PTR DS:[405248] ; |
00404C6C |. 50 PUSH EAX ; |hWnd = 00404D04
00404C6D |. E8 7AD0FFFF CALL 0ba2_Cra.00401CEC ; \SetWindowTextA

и

00404D48 . D1 EF E0 F1 E8>ASCII "Спасибо за регис"
00404D58 . F2 F0 E0 F6 E8>ASCII "трацию!",0

Так что вё не настолько просто. Ксатати посмотри, что будет, если занопить тут:
00404C30 |. 74 42 JE SHORT 0ba2_Cra.00404C74

При набранном от балды пароле там какой-то глюк(пытается поменять заголокок, хендл окна какой-то неправильный передается), а при 3878-11DC-2041-2136 ( в твоём случае) заголовок окна меняется



Ранг: 39.3 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 16 февраля 2006 16:21 · Поправил: Mordred
· Личное сообщение · #9

Крякмис реально для начинающих! я вообще сделал по-тупому: отследил, откуда вызывается MessageBox с ошибкой, поставил туда бряк и ввел серийник от балды -> Олли на бряке стопует, а в стеке прямым текстом лежит правильный серийник. А если чуток проследить, до этого он дважды вызывает GetVolumeInformation,
сперва для диска С:, затем для D:, и из них формирует серийник (функция формирования серийника находится по адресу 404968). Короче, имхо сложностей вааще не должно было возникнуть. Если будешь пытаться взломать дальше и возникнут трудности, пиши в личку, помогу.
ЗЫ Если не будет лениво, через часок кейген на него выложу



Ранг: 39.3 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 16 февраля 2006 20:40
· Личное сообщение · #10

Вот и кейген - бездельем маялся, накатал Если кто еще ломает этот крякми - тестите

deec_Keygen.rar.zip



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

Создано: 16 февраля 2006 20:43 · Поправил: buka
· Личное сообщение · #11

Спасибо за советы на счет регномера, но мей целью было то что-бы при вводе любого passworda было сообщение о успешной регистрации. Пытался NOP ить вызов ошибки, но после выскакивает такая муть "Конечно все просто, но не до такой же степени". А откуда он вызывается я чёт не допёр. ВотТак.

p/s Keygen gut arbeiten!



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

Создано: 16 февраля 2006 22:04
· Личное сообщение · #12

Почитал, посмотрел. Конечно с рангом в 451.2 [многоуважаемый ARA ] можно говорить
что кряк очень легкий. А вот когда у тебя ранг на 2.8, а реального опыта и еще меньше то в таком случае
кряк тебе не покажется детской забавой. И не сочтите за грубость, просто мне важен не сам
результат [один говорит пароль такой то, другой нет он не такой а вот какой ],
а так сказать алгоритм его нахождения.
Просто новичкам не понять как ВЫ мыслите. Им важно самим понять, а не действовать по принципу
"делай как я и будет тебе счастье". Возможно [скорее всего] это придет со временем.

P/S Даже после слов "Пасс валяется в памяти в открытом виде"
я его к сожалению не нашел. :s15



Ранг: 39.3 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 16 февраля 2006 22:13 · Поправил: Mordred
· Личное сообщение · #13

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




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

Создано: 16 февраля 2006 22:18
· Личное сообщение · #14

Мне начинает казаться, что я смотрел совсем другой крякми. Тупой бряк на GetWindowTextA и по возвращению в код проги пасс лежит в стеке. Надо бы для начала прочитать парочку статей, а потом садиться за крякмисы. И пофигу до "перемещений функций" (я хз что это такое), я их не заметил.



Ранг: 39.3 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 17 февраля 2006 16:02
· Личное сообщение · #15

Ara пишет:
И пофигу до "перемещений функций" (я хз что это такое), я их не заметил.

Значит невнимательно смотрел. В ольке у меня программный бряк на GetWindowTextA и MessageBoxA в самом начале проги вааще не срабатывали, т.к. этого кода еще нет, их есть смысл ставить тока уже после создания главного окна. Впрочем, крякмис всё равно примитивный, но не забывай, это ж вопросы новичков, а не основной форум.



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

Создано: 17 февраля 2006 18:34
· Личное сообщение · #16

Mordred пишет:
не забывай, это ж вопросы новичков, а не основной форум.

Согласен с Morder'om отслылать на статьи может каждый, а толком что то объяснить - что ты не наш уровень.



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

Создано: 17 февраля 2006 19:23 · Поправил: buka
· Личное сообщение · #17

О чудо-расчудесное. Узрел я правильный серийник. Ищущий да найдет. Остался один вопросик. Можно поподробнее о GetWindowTextA.
+ я в начале писал о том что первоночальная цель это что бы при любом serial'e был так сказать OK

p/s если есть кто так же мается с этим крямиксом пишите, по пальцам покажу куда надо смотреть




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

Создано: 17 февраля 2006 19:25
· Личное сообщение · #18

buka
Блин, я непойму, чем ты недоволен??? Тебе плохо объяснили???Ara пишет:
Тупой бряк на GetWindowTextA и по возвращению в код проги пасс лежит в стеке
. Объяснили, как этот пасс генерится. Иди читай статьи, а потом возмущайся, переписывать сюда статьи нет никакого прока. Или ты ждал объяснений типа "открываем прогу в оле, жмем Ф8, потом два раза Ф7 и т.п......"??



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

Создано: 17 февраля 2006 19:43 · Поправил: buka
· Личное сообщение · #19

ARA
Ладно был неправ - исправлюсь. Но ты тоже блин полегче на поворотах.



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

Создано: 17 февраля 2006 21:25
· Личное сообщение · #20

На основе вышеизложенных ответов ниже выложена мини-статья. Спасибо всем за помощь.

Мини статья.
Инструменты: для новичков [таких как я] понятнее будет OllyDbg.
Можно пытаться прерваться на ошибке [bpx MessageBoxA] но результату [по крайней мере у меня «0»]. Можно за NOP‘ить прыг на ошибку но потом выскакивает сообщение «Конечно все просто, но не до такой же степени ». Далее доломать у меня не хватило опыту. Поэтому нам ничего не остается как последовать совету Ar’ы и поставить bp GetWindowTextA. В стеке [нижнее правое окошко в Olly] чуть ниже видим сначала метку[или как она там называется] диска D:\, потом диска C:\, все вместе это и есть ключ. Например:

0012F99C 001595A8 ASCII "Enter Serial Number"
0012F9A0 00159650 ASCII "D:\"
0012F9A4 0015AE00 ASCII "881C-91BA"
0012F9A8 00159548 ASCII "C:\"
0012F9AC 00159620 ASCII "5CE9-C48F"
0012F9B0 00000000
0012F9B4 00159570 ASCII "5CE9-C48F-881C-91BA"

Действительно все просто.

buka пишет:
Можно поподробнее о GetWindowTextA




Ранг: 39.3 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 18 февраля 2006 07:16
· Личное сообщение · #21

Функция GetWindowText

Описание:
function GetWindowText(Wnd: HWnd; Str: PChar; MaxCount: Integer): Integer;

Копиpует в Str заголовок окна или текст оpгана упpавления.

Паpаметpы:
Wnd: Идентификатоp окна или оpгана упpавления.
Str: Буфеp, пpинимающий стpоку.
MaxCount: Размеp буфеpа Str.

Возвpащаемое значение:
Фактическое число скопиpованных байт или 0, если текст отсутствует.

функция находится в файле user32.dll

А вообще пользуйся MSDN'ом, лучше документации по апишкам пока не придумали



Ранг: 105.9 (ветеран), 1thx
Активность: 0.090
Статус: Участник

Создано: 18 февраля 2006 15:01
· Личное сообщение · #22

Простите. Но прога ведь запакована FSG 1.33. А как вы смогли поставить бряк на функцию? Или вы сначала ее конечно распаковали?




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

Создано: 18 февраля 2006 15:04
· Личное сообщение · #23

Sturgeon пишет:
Но прога ведь запакована FSG 1.33. А как вы смогли поставить бряк на функцию?

Я просто запустил прогу и приаттачился к процессу олькой. Поэтому всякие "перемещения" мне были по барабану, как и пакер.



Ранг: 105.9 (ветеран), 1thx
Активность: 0.090
Статус: Участник

Создано: 18 февраля 2006 15:19
· Личное сообщение · #24

Ara пишет:
Я просто запустил прогу и приаттачился к процессу олькой.

Только что поробовал повторить.
Оля приаатачилась к модулю kernel32 по такому коду:
7C90122C 90 NOP
7C90122D 90 NOP
7C90122E 90 NOP
7C90122F 90 NOP
7C901230 > CC INT3
7C901231 C3 RETN
7C901232 8BFF MOV EDI, EDI
7C901234 90 NOP
7C901235 90 NOP
7C901236 90 NOP
7C901237 90 NOP
7C901238 90 NOP
7C901239 > CC INT3
7C90123A C3 RETN
7C90123B 90 NOP
7C90123C 8BFF MOV EDI, EDI


И окно "Intermodular calls" содержит только вызовы кернела, и попытки потрассировать ничего не дали.
Может у меня дело в настройках оли?




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

Создано: 18 февраля 2006 15:24
· Личное сообщение · #25

Sturgeon пишет:
Оля приаатачилась к модулю kernel32 по такому коду:

Теперь запускай прогу дальше (Ф9), дави на буковку Е на панели инструментов и выбирай нужный процесс, чтобы вернуться в код проги..



Ранг: 105.9 (ветеран), 1thx
Активность: 0.090
Статус: Участник

Создано: 18 февраля 2006 15:38
· Личное сообщение · #26

Сначала прога попала в ntdll:
7C90EB92 |. 90 NOP
7C90EB93 |. 90 NOP
7C90EB94 >\$ C3 RETN
7C90EB95 . 8DA424 0000000>LEA ESP, DWORD PTR SS:[ESP]
7C90EB9C . 8D6424 00 LEA ESP, DWORD PTR SS:[ESP]


а со второго раза вернулась в крякми. Но окно функций все равно пустое и бряк поставить не получается. Блин



Ранг: 105.9 (ветеран), 1thx
Активность: 0.090
Статус: Участник

Создано: 18 февраля 2006 16:03
· Личное сообщение · #27

Простите великодушно!
Поставил другую Олю и все заработало великолепно. Спасибо, уважаемый!



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

Создано: 18 февраля 2006 18:27
· Личное сообщение · #28

buka пишет:
моей целью было то что-бы при вводе любого passworda было сообщение о успешной регистрации


Кто нить понял как обойти 2 Message?




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

Создано: 19 февраля 2006 18:04
· Личное сообщение · #29

прикольно.... тока что посмотрел... =) всё конечно просто... но новичка с
патчем может поставить в тупик...

00404C0B |. 50 PUSH EAX
00404C0C |. 6A 00 PUSH 0
00404C0E |. 6A 00 PUSH 0
00404C10 |. 68 D04A4000 PUSH UNPACKED.00404AD0
00404C15 |. 68 80000000 PUSH 80
00404C1A |. 6A 00 PUSH 0
00404C1C |. FF15 E8664000 CALL DWORD PTR DS:[4066E8] ; KERNEL32.CreateThread
00404C22 |. 6A 32 PUSH 32 ; /Timeout = 50. ms
00404C24 |. E8 33CFFFFF CALL <JMP.&kernel32.Sleep> ; \Sleep
00404C29 |. 803D 50524000 00 CMP BYTE PTR DS:[405250],0
00404C30 |. 74 42 JE SHORT UNPACKED.00404C74

доходим до 00404C1C |. FF15 E8664000 CALL DWORD PTR DS:[4066E8]
видим в стеке такую гадость:

0064F940 00000000 |pSecurity = NULL
0064F944 00000080 |StackSize = 80 (128.)
0064F948 00404AD0 |ThreadFunction = UNPACKED.00404AD0
0064F94C 00000000 |pThreadParm = NULL
0064F950 00000000 |CreationFlags = 0
0064F954 0064F984 \pThreadId = 0064F984

вот это нам и нужно ThreadFunction = UNPACKED.00404AD0
это адресс функции которая будет выполняться в отдельном потоке...
идём туда....

00404AD0 . 803D 54524000 00 CMP BYTE PTR DS:[405254],0 <-- патчим здесь
00404AD7 . 74 28 JE SHORT UNPACKED.00404B01 <-- или здесь
00404AD9 . 66:B8 0200 MOV AX,2
00404ADD . E8 72FFFFFF CALL UNPACKED.00404A54
00404AE2 . A3 F4664000 MOV DWORD PTR DS:[4066F4],EAX
00404AE7 . A1 E4664000 MOV EAX,DWORD PTR DS:[4066E4]
00404AEC . 8B40 18 MOV EAX,DWORD PTR DS:[EAX+18]
00404AEF . 8B40 18 MOV EAX,DWORD PTR DS:[EAX+18]
00404AF2 . A3 48524000 MOV DWORD PTR DS:[405248],EAX
00404AF7 . C705 4C524000 40>MOV DWORD PTR DS:[40524C],40


-----
[nice coder and reverser]




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

Создано: 19 февраля 2006 21:06
· Личное сообщение · #30

Hellspawn пишет:
вот это нам и нужно ThreadFunction = UNPACKED.00404AD0
это адресс функции которая будет выполняться в отдельном потоке...
идём туда....


А по подобней как нибудь можно. PLS. По каким призникам ты определил что в отдельном потоке, и что это именно здесь, и что такое ThreadFunction. Ну в общем чуточку поподробнее пожалуйста!


. 1 . 2 . >>
 eXeL@B —› Вопросы новичков —› Ломаем крямикс [нужна помощь!!]
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати