![]() |
eXeL@B —› Вопросы новичков —› Где серийник? |
Посл.ответ | Сообщение |
|
Создано: 22 сентября 2007 02:30 · Поправил: Gerpes · Личное сообщение · #1 Есть прога(чисто женская ![]() Оля в непонятках- (и я )- бряк на мессагу не катит, процу нашел примерно- с 481F5 и глубже. можно докопаться, но неясно- в стеке серийника нет, ваще похожего мало , ниче не пойму. мож, визуал бэйсик? но и то, не уверен, что так замучено.(Не на делфи точно.) хрень какая-то, виснет еще , бывает. Создает файло dat, триал в нем прячет, и юзеров, но это, думаю, роли не играет, убивать проверку надо в екзешнике. http://www.rapidshare.ru/409933 http://www.rapidshare.ru/409933 - распакованное файло. (~1 Мб) Вопрос: Может, кто сталкивался с подобной хренью?, Как быть дальше, не знаю... - цикл окна с паролем ничего не дает(вернее, бряк на выходе.)все внутри- на первый взгляд кажется. Цель- не обязательно полноценный отлом защиты, хотя бы зарегить. (отлом хотелось бы для общего развития, не более) ![]() |
|
Создано: 22 сентября 2007 11:55 · Личное сообщение · #2 |
|
Создано: 22 сентября 2007 14:53 · Личное сообщение · #3 |
|
Создано: 22 сентября 2007 22:03 · Личное сообщение · #4 |
|
Создано: 22 сентября 2007 23:17 · Личное сообщение · #5 |
|
Создано: 23 сентября 2007 02:11 · Личное сообщение · #6 |
|
Создано: 23 сентября 2007 02:21 · Личное сообщение · #7 |
|
Создано: 23 сентября 2007 02:26 · Личное сообщение · #8 |
|
Создано: 23 сентября 2007 10:49 · Личное сообщение · #9 Tolkin пишет: qwerty 12941636593 Для моего компа такие же ключ. Только я по другому ловил. Ставишь бряк на GetWindowTextW. Смотришь когда считается введенный серийник. Немного трассируешь. Где-то до первого ret. И ищешь в окне стека пароль. Я нашел две подозрительные строчки "12941636593" и "1294163659343219". Первая подошла. Данные о регистрации хранятся в файле TOC.dat. Попробуй мой использовать. Пользователь "11", пароль "11". ![]() ![]() |
|
Создано: 23 сентября 2007 18:40 · Личное сообщение · #10 Вот здесь происходит сравнивание паролей, можно подсмотреть, а можно и пропатчить переход и любые пароли подойдут 00D8836A E8 81B46FFF CALL TOC_unpa.RuntimeStringCompare 00D8836F 8BA5 5CFDFFFF MOV ESP,DWORD PTR SS:[EBP-2A4] 00D88375 8985 3CFEFFFF MOV DWORD PTR SS:[EBP-1C4],EAX 00D8837B 33C9 XOR ECX,ECX 00D8837D 3BC1 CMP EAX,ECX 00D8837F 0F94C2 SETE DL 00D88382 83E2 01 AND EDX,1 00D88385 8895 46FEFFFF MOV BYTE PTR SS:[EBP-1BA],DL 00D8838B FFB5 48FEFFFF PUSH DWORD PTR SS:[EBP-1B8] 00D88391 E8 4A0D7EFF CALL TOC_unpa.RuntimeUnlockString 00D88396 8BA5 5CFDFFFF MOV ESP,DWORD PTR SS:[EBP-2A4] 00D8839C 33C0 XOR EAX,EAX 00D8839E 8985 48FEFFFF MOV DWORD PTR SS:[EBP-1B8],EAX 00D883A4 FFB5 50FEFFFF PUSH DWORD PTR SS:[EBP-1B0] 00D883AA E8 A1E378FF CALL TOC_unpa.RuntimeUnlockObject 00D883AF 8BA5 5CFDFFFF MOV ESP,DWORD PTR SS:[EBP-2A4] 00D883B5 33C0 XOR EAX,EAX 00D883B7 8985 50FEFFFF MOV DWORD PTR SS:[EBP-1B0],EAX 00D883BD 8A8D 46FEFFFF MOV CL,BYTE PTR SS:[EBP-1BA] 00D883C3 83F9 00 CMP ECX,0 00D883C6 83E1 01 AND ECX,1 00D883C9 33D2 XOR EDX,EDX 00D883CB 3BCA CMP ECX,EDX 00D883CD 0F84 FD050000 JE 00D889D0 ![]() |
|
Создано: 23 сентября 2007 20:06 · Личное сообщение · #11 |
|
Создано: 23 сентября 2007 20:50 · Личное сообщение · #12 |
|
Создано: 23 сентября 2007 21:28 · Поправил: Sturgeon · Личное сообщение · #13 Gerpes Это динамически выделяемая память. И у тебя, и у меня эти команды могут быть совсем по другим адресам. И патч их мало что даст. ИМХО. Чтобы посмотреть эти адреса, выбираешь View->Memory или Alt+M. И выбираешь интересующий тебя диапазон адресов. Как я писал уже вся ифа о зареганности лежит в файле TOC.dat. То есть ты можешь зарегать прогу и выдать этот файлик нуждающейся девушке ;). ![]() |
|
Создано: 23 сентября 2007 22:11 · Личное сообщение · #14 |
|
Создано: 24 сентября 2007 00:45 · Личное сообщение · #15 |
|
Создано: 24 сентября 2007 16:55 · Личное сообщение · #16 Gerpes пишет: принципа поиска смещения не знаю. Не можешь - научим, не хочешь - заставим!(с)"Давид и Голиаф" Смысл такой. Динамически выделяемая память представляет собой адреса, которые выделяются в ходе работы программы. То есть если ты выбираешь View->Memory до запуска программы, то ты их и не увидишь. Тебе надо запустить программу. (кстати хорошим уроком будет открыть Memory map до запуска этой программы и после, и сравнить). Запускаешь программу и открываешь карту памяти (View->Memory). Там и увидишь все адреса. По поводу поиска адресов. Не обязательно искать адреса по их абсолютному адресу. В Оле возможен "поиск по последовательности байт (сигнатуре)". Особенно это актуально при, как раз, динамическом выделении памяти, когда код записывается каждый раз на новые адреса. Смысл такой: нам надо найти команды, которые за нас нашел Tolkin (респект).
После запуска программы ты открываешь карту памяти (View->Memory). Выбираешь "Search". И вводишь в поле HEX ту последовательность байт, которую ты хочешь найти. Ищешь последовательность "33C089858A8D83F933D23BCA0F84". Что это за последовательность байт догадаешься сам. Если последовательность не находится, укорачиваешь ее. И обязательно найдешь. У меня она нашлась по адресам 00CD83C6 и т.п. Где она будет у тебя хз. Извини, но в подробном разборе серийника я тебе не помогу, так как мне это не по зубам пока (чайник). Если сам чего разберёшь пиши сюда в тему. Даже если ничего не получится, просто рассматривай это как небольшой совет по использованию Оли. Если я где- то ошибся, прошу "взрослых" поправить меня. Это будет всем новичкам (включая меня) только на пользу. ![]() |
|
Создано: 25 сентября 2007 19:24 · Личное сообщение · #17 Не, не получается ,и Wdasm привлекал , но им еще хуже показалось все, полгода не запускал его. и до ввода серийника, и после, с выходом нехорошего окна, искал , находится только 33 C0 89 85, дальше другое все , имхо, мало этого. HIEW тоже не помог, не нашел... Но HIEW мог и не найти, это же хекс редактор просто. Бряк на память тоже не дал ничего, только заинтересовало, что после имени юзера он где-то берет ascii "System", может ,и ее привлекает к генерации?? потерялся и не вник... ![]() Потом. в стеке "1294163659343219" - это и есть серийник, только из него отбрасываются последние * цифр. у меня, правда другие были. Блин, опыта бы поболе... ![]() ![]() |
|
Создано: 29 сентября 2007 22:13 · Личное сообщение · #18 вот генерация серийника, вроде верно (в C++ я не очень, написал как смог) #include <iostream> #include <math.h> using namespace std; int main() { char name[20]; cout<<"Enter user name : ";cin>>name; int i=0,sum=0; while (name[i]) {sum=sum+name[i];i++;} double y=double(sum); double x=(abs(sin(y)+cos(y)+tan(y)))*10000000000; printf( "serial: %.0f\n ",x); } ![]() |
|
Создано: 30 сентября 2007 04:07 · Личное сообщение · #19 |
|
Создано: 15 октября 2007 08:01 · Поправил: Grom_ · Личное сообщение · #20 Люди ни че не понятно ![]() Гружу в Оллю - говорит что OEP за границей кода, что возможно файл упакован чем то! Верю надписи что он распакован(хотя PEiD пишет UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo [Overlay]). Прога действительно распакованна ??? Дальше ставлю бряки на функции GetWindowTextA (такие там есть) , но после ввода серийника не брякается. Решил пойти другим путем - отловить кнопку ОК при ригистрации. Но ! не тут то было, ClsProc у кнопки и почти у вольшенства 0xFFFF*, Олля отказывается ставить на такие адреса бряки(еще бы ![]() + еще заметил какой то таймер там ошивается, бряк на него поставил , дык он давай брякаться постоянн при фокусе на окно (я так понял это спецом масло в огонь), убрал этот бряк. ************ Расскажите по подробнее алгоритм нахождения серийника! ************ ЗЫ только с описанием - почему ищем именно этот код, а не просто - "ищем код 0хляля". ЗЫЗЫ пробывал найти OEP - не получилось, искал по статьям Void через бряки hr esp-4, QUnpack написал OEP is not correct!. Решил поискать на наличие GetModuleHandleA (вдруг на С написанно, хотя странно почему там функции VB_RuntimeMsgBox). Нашел , но как то странно что это может быть OEP( 005A98E5 50 PUSH EAX ): 005A98AE E8 9D180000 CALL TOC_unpa.005AB150 005A98B3 59 POP ECX 005A98B4 FF15 8C6B6600 CALL NEAR DWORD PTR DS:[<&KERNEL32.GetCo>; kernel32.GetCommandLineA 005A98BA 89C3 MOV EBX,EAX 005A98BC 85DB TEST EBX,EBX 005A98BE 74 06 JE SHORT TOC_unpa.005A98C6 005A98C0 031D DCA66800 ADD EBX,DWORD PTR DS:[68A6DC] 005A98C6 8D55 A0 LEA EDX,DWORD PTR SS:[EBP-60] 005A98C9 52 PUSH EDX 005A98CA FF15 D86B6600 CALL NEAR DWORD PTR DS:[<&KERNEL32.GetSt>; kernel32.GetStartupInfoA 005A98D0 F745 CC 0100000>TEST DWORD PTR SS:[EBP-34],1 005A98D7 74 07 JE SHORT TOC_unpa.005A98E0 005A98D9 0FB745 D0 MOVZX EAX,WORD PTR SS:[EBP-30] 005A98DD EB 06 JMP SHORT TOC_unpa.005A98E5 005A98DF 90 NOP 005A98E0 B8 0A000000 MOV EAX,0A 005A98E5 50 PUSH EAX <<<<<<<====================================== 005A98E6 53 PUSH EBX 005A98E7 6A 00 PUSH 0 005A98E9 6A 00 PUSH 0 005A98EB FF15 086A6600 CALL NEAR DWORD PTR DS:[<&KERNEL32.GetMo>; kernel32.GetModuleHandleA ![]() |
|
Создано: 15 октября 2007 13:40 · Личное сообщение · #21 |
|
Создано: 16 октября 2007 11:17 · Личное сообщение · #22 |
![]() |
eXeL@B —› Вопросы новичков —› Где серийник? |