Сейчас на форуме: padad42664, kris_sexy, site-pro, vasilevradislav (+6 невидимых) |
eXeL@B —› Крэки, обсуждения —› USB Lyzer 1.0 (MFC) |
Посл.ответ | Сообщение |
|
Создано: 10 августа 2007 13:48 · Поправил: cppasm · Личное сообщение · #1 Привет. В общем есть прога - залил сюда http://dump.ru/files/h/h23486100/ http://dump.ru/files/h/h23486100/ (1.1Мб) Анализатор USB трафика. Как заведено триал на 30 дней... Стал копатся, пакеров протов нету, Visual C++ с Debug info, по коду видно что юзали MFC. В общем хочу ключген сделать, но проблема в том что не могу найти где оно введённый ключ читает Для ввода ключа создаётся диалог при помощи CreateDialogIndirectParamW. Процедура создания диалога находится тут: 42F700h Процедура обработки сообщений диалога 468CA7h: 00468CA7 . 817C24 08 1001>CMP DWORD PTR SS:[ESP+8],110 ; RegCodeDlgProc 00468CAF . 75 2B JNZ SHORT USBlyzer.00468CDC 00468CB1 . FF7424 04 PUSH DWORD PTR SS:[ESP+4] 00468CB5 . E8 54C9FFFF CALL USBlyzer.0046560E 00468CBA . 50 PUSH EAX 00468CBB . 68 38E54900 PUSH USBlyzer.0049E538 00468CC0 . E8 9EB3FFFF CALL USBlyzer.00464063 00468CC5 . 59 POP ECX 00468CC6 . 85C0 TEST EAX,EAX 00468CC8 . 59 POP ECX 00468CC9 . 74 0C JE SHORT USBlyzer.00468CD7 00468CCB . 8B10 MOV EDX,DWORD PTR DS:[EAX] 00468CCD . 8BC8 MOV ECX,EAX 00468CCF . FF92 BC000000 CALL DWORD PTR DS:[EDX+BC] 00468CD5 . EB 07 JMP SHORT USBlyzer.00468CDE 00468CD7 > 6A 01 PUSH 1 00468CD9 . 58 POP EAX 00468CDA . EB 02 JMP SHORT USBlyzer.00468CDE 00468CDC > 33C0 XOR EAX,EAX 00468CDE > C2 1000 RETN 10 00468CE1 . B8 58E54900 MOV EAX,USBlyzer.0049E558 00468CE6 . C3 RETN Как видно обрабатывает только WM_INITDIALOG. WM_COMMAND, WM_KEYDOWN, WM_CHAR нету вообще... После создания диалога тоже нигде не видно чтения введённой строки :/ Вот собственно вопрос - кто чего скажет, как оно рег код читает? Может у кого опыта больше, IDA грит что это MFC. Момент второй, прога валится тут: 0042F745 |. E8 B89A0300 CALL USBlyzer.00469202 ; SerialDlg 0042F74A |. 83F8 01 CMP EAX,1 0042F74D |. 75 79 JNZ SHORT USBlyzer.0042F7C8 0042F74F |. 8B4424 64 MOV EAX,DWORD PTR SS:[ESP+64] 0042F753 |. 85C0 TEST EAX,EAX 0042F755 |. 74 43 JE SHORT USBlyzer.0042F79A <--------------- тут переход должен не выполниться Если запатчить на нопы - всегда будет говорить что зарегались при вводе ключа, но ясно что это неправда. Вот это тоже непонятно - потому как эта ячейка памяти инициализируется тут: 0042DBE0 /$ 8B4424 04 MOV EAX,DWORD PTR SS:[ESP+4] 0042DBE4 |. 56 PUSH ESI 0042DBE5 |. 50 PUSH EAX 0042DBE6 |. 8BF1 MOV ESI,ECX 0042DBE8 |. 68 82000000 PUSH 82 0042DBED |. E8 5BB50300 CALL USBlyzer.0046914D ; CDialog::CDialog(int, CObject *) 0042DBF2 |. 33C0 XOR EAX,EAX 0042DBF4 |. C706 780D4800 MOV DWORD PTR DS:[ESI],USBlyzer.00480D78 ; ASCII "YcG" 0042DBFA |. 8946 5C MOV DWORD PTR DS:[ESI+5C],EAX 0042DBFD |. 8946 60 MOV DWORD PTR DS:[ESI+60],EAX <------- вот она 0042DC00 |. 8BC6 MOV EAX,ESI 0042DC02 |. 5E POP ESI 0042DC03 \. C2 0400 RETN 4 Т.е. в неё всегда пишется ноль, других обращений нету... Может эту прогу вообще нормально зарегать нельзя, я уже не врубаюсь что-то... Уже даже просто интересно, да и прога нужна... |
|
Создано: 10 августа 2007 13:58 · Личное сообщение · #2 |
|
Создано: 10 августа 2007 14:06 · Личное сообщение · #3 |
|
Создано: 10 августа 2007 14:15 · Поправил: cppasm · Личное сообщение · #4 kaiZer пишет: ставь бряки на GetDlgItemTextA или GetDlgItemTextW.. Сча бум пробовать... xlETO пишет: На Взоре 9 августа выложена SysNucleus USBTrace 2.0.28. Посмотри, может устроит и заморачиваться не надо будет. Дело интереса USBTrace я вчера сам закейгенил, а точнее модифицировал свой кейген от версии 1.3 Возможности у них немного разные, в смысле они в разные места фильтры инсталят - USBTrace не всё ловит. ---- Добавлено: ---- На GetDlgItemInt, GetDlgItemTextA, GetDlgItemTextW не брякаеццо |
|
Создано: 10 августа 2007 14:20 · Личное сообщение · #5 |
|
Создано: 10 августа 2007 14:25 · Личное сообщение · #6 |
|
Создано: 10 августа 2007 14:56 · Личное сообщение · #7 вот собсно и интересный код: 0042F745 |. E8 B89A0300 CALL USBlyzer.00469202 0042F74A 83F8 01 CMP EAX,1 0042F74D |. 75 79 JNZ SHORT USBlyzer.0042F7C8 0042F74F 8B4424 64 MOV EAX,DWORD PTR SS:[ESP+64] - в ЕАХ кладется 0, а надо 1 0042F753 85C0 TEST EAX,EAX 0042F755 74 43 JE SHORT USBlyzer.0042F79A - если ЕАХ=0, то непрально 0042F757 |. 8B4424 78 MOV EAX,DWORD PTR SS:[ESP+78] 0042F75B |. BE 982E4B00 MOV ESI,USBlyzer.004B2E98 ; UNICODE "Thank you for registration! Please restart the application to complete the registration." 0042F760 |. 85C0 TEST EAX,EAX 0042F762 |. 75 05 JNZ SHORT USBlyzer.0042F769 0042F764 |. BE 602E4B00 MOV ESI,USBlyzer.004B2E60 ; UNICODE "Thank you for registration!" |
|
Создано: 10 августа 2007 14:58 · Личное сообщение · #8 Да, и тут у меня попутно вопрос. Я полазил, посметрел - скорее всего место нашлось по GetWindowTextW Вот как раз по этому поводу вопрос, давно спросить хотел В общем если поставить бряк на GetWindowTextA/W - он будет срабатывать сразу при активации окна. В смысле с окна Olly переключаемся на прогу - и сразу бряк срабатывает. Так нифига отлаживать вообще не возможно. Так вопрос: 1. какого фига оно срабатывает постоянно 2. мож я бряк неправильно как-то ставлю, или условный бряк ставить? |
|
Создано: 10 августа 2007 15:08 · Личное сообщение · #9 |
|
Создано: 10 августа 2007 15:15 · Личное сообщение · #10 kaiZer пишет: вот собсно и интересный код: Дык собстна я этот код в первом посте и привёл. Вот только в EAX там единица никак не получится, потому как где оно в ноль устанавливается я писал, а вот где не в ноль - так и не нашёл. kaiZer пишет: Ну дык это походу просто считывается текст в окне, а не считывается серийник.. А мот затем и серийник.. В данном случае потом и серийник тоже, только вот вопрос как его отлаживать если при переходе в окно проги сразу ловим бряк? |
|
Создано: 10 августа 2007 15:27 · Личное сообщение · #11 |
|
Создано: 10 августа 2007 15:46 · Личное сообщение · #12 |
|
Создано: 10 августа 2007 16:07 · Личное сообщение · #13 |
|
Создано: 10 августа 2007 16:40 · Личное сообщение · #14 |
|
Создано: 10 августа 2007 18:32 · Личное сообщение · #15 Чтобы найти куда записывается строка, я ввожу обычно в окне что-нибудь zB: "123666", потом ничего не нажимая в Olly в Memory map поиск по этой строке... и мы уже знаем где она будет после ввода... Можно бряк на доступ к памяти ставить и ловить проверку... Если после появления окна (где код вводишь) нажать F12, потом держишь F8, пока не начнёшь крутиться в цикле... Это цикл обработки окном сообщений... Здесь могут проверяться вводимые данные, отфильтровываться ненужые символы или даже налету кей генериться (когда кнопка Reg активируется только при правильном Seriale). Это всего лишь мои предположения, до которых я дошёл "методом научного тыка"... Да исправят меня Guru! ----- z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh |
|
Создано: 10 августа 2007 23:22 · Личное сообщение · #16 |
|
Создано: 13 августа 2007 16:56 · Личное сообщение · #17 Как знал что вернусь :/ В общем расковырял я алго - немного даже интересно Но счас всё упёрлось в крипто апи, а конкретно юзается: CryptImportKey CryptCreateHash CryptHashData CryptVerifySignature CryptDestroyHash Столкнулся впервые, по сему вопрос - нет ли у кого простенького примера как оно используется? И второе, что за алгоритм шифрования - в CryptCreateHash передаётся AlgID=0x8003 В h от VS6 что-то такого не нахожу... |
|
Создано: 13 августа 2007 17:03 · Личное сообщение · #18 |
|
Создано: 13 августа 2007 17:11 · Личное сообщение · #19 Эээ... Это я на MSDN посмотрел. Мне бы примерчик как оно работает... Ну ID расшифровывается так: ALG_CLASS=4 (ALG_CLASS_HASH) ALG_TYPE =0 (ALG_TYPE_ANY) ALG_SID =3 (ALG_SID_RSA_ENTRUST) Помогло мне не сильно... Чё это за алгоритм и есть ли смысл связываться?? Меня пугает RSA в названии алго, потому что в ресурсах у проги ключ лежит длиной в 128 байт... Правда как конкретно она его юзает я пока не разобрался. Возможно ли обратить эти функции?? Т.е. ключ мой прога практически хавает, валится всё на CryptVerifySignature. Можно ли создать ключ чтоб проходил проверку CryptVerifySignature, что для этого знать надо?? |
|
Создано: 13 августа 2007 17:27 · Личное сообщение · #20 |
|
Создано: 13 августа 2007 17:46 · Личное сообщение · #21 |
|
Создано: 13 августа 2007 17:49 · Личное сообщение · #22 |
|
Создано: 13 августа 2007 21:34 · Личное сообщение · #23 |
|
Создано: 13 августа 2007 23:02 · Поправил: 2nd · Личное сообщение · #24 |
|
Создано: 14 августа 2007 09:47 · Личное сообщение · #25 2nd пишет: нет не так CALG_MD5 = (ALG_CLASS_HASH or ALG_TYPE_ANY or ALG_SID_MD5); //0x8003 Угу, не ту константу взял... Хотя ALG_SID_RSA_ENTRUST тоже 3. Ну MD5 это чуть получше. Никто не в курсе - это классический MD5 или CryptoAPI какую-то модификацию использует?? Есть мысли SAM Inside заюзать для брута... |
|
Создано: 14 августа 2007 13:21 · Личное сообщение · #26 |
eXeL@B —› Крэки, обсуждения —› USB Lyzer 1.0 (MFC) |
Эта тема закрыта. Ответы больше не принимаются. |