Я уже подымал топик в этом форуме! Проблема на том же уровне, просто вооружился хорошо! Не знаю на что поставить брик поинт. GetWindowTextA GetDlgItemTextA GetWindowLongA - не дает работать Hmemspy - символ не зарегистрирован. Пробовал в W32Dasm поскать результат проверки типа "Schlussel ist ungultig", никакого результата. Хотя ресторатор показывает что такие строки есть! К чему еще можно прицепится? Вроде все как и везде, кнопка регистрации, два серийных номера. Есть реакция на старый номер и на неправильно введенный. Заранее прошу прощения за ламерство! Если кому интересно, программа: http://www.gefasoft.de/en/download/download_download_en.php?filename=s etupgp71.exe (42.6M) Стоит winXP SP2, SoftIce 4.32 _1711757397__Untitled_1.gif
Boyler Небось, в русурсах? Тогда смотри его идентификатор и ищи все LoadString с этим идентификатором. Дальше разберёшься.
Нашел я свое сообщение, но легче от чего-то не стало! Код (Text): 40005B60 |. E8 83FEFFFF CALL G3PIC.400059E8 40005B65 |. 33C0 XOR EAX,EAX 40005B67 |. 5A POP EDX 40005B68 |. 59 POP ECX 40005B69 |. 59 POP ECX 40005B6A |. 64:8910 MOV DWORD PTR FS:[EAX],EDX 40005B6D |. 68 825B0040 PUSH G3PIC.40005B82 40005B72 |> 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4] 40005B75 |. E8 BEEBFFFF CALL G3PIC.40004738 40005B7A \. C3 RETN 40005B7B .^E9 28DEFFFF JMP G3PIC.400039A8 40005B80 .^EB F0 JMP SHORT G3PIC.40005B72 40005B82 . 5E POP ESI 40005B83 . 5B POP EBX 40005B84 . 59 POP ECX 40005B85 . 5D POP EBP 40005B86 . C3 RETN 40005B87 90 NOP 40005B88 /$ 53 PUSH EBX 40005B89 |. 56 PUSH ESI 40005B8A |. 81C4 00FCFFFF ADD ESP,-400 40005B90 |. 8BF2 MOV ESI,EDX 40005B92 |. 8BD8 MOV EBX,EAX 40005B94 |. 85DB TEST EBX,EBX 40005B96 |. 74 3D JE SHORT G3PIC.40005BD5 40005B98 817B 04 000001>CMP DWORD PTR DS:[EBX+4],10000 ; UNICODE "=::=::\" 40005B9F |. 7D 2A JGE SHORT G3PIC.40005BCB 40005BA1 |. 68 00040000 PUSH 400 40005BA6 |. 8D4424 04 LEA EAX,DWORD PTR SS:[ESP+4] 40005BAA |. 50 PUSH EAX 40005BAB |. 8B43 04 MOV EAX,DWORD PTR DS:[EBX+4] 40005BAE |. 50 PUSH EAX 40005BAF |. 8B03 MOV EAX,DWORD PTR DS:[EBX] 40005BB1 |. 8B00 MOV EAX,DWORD PTR DS:[EAX] 40005BB3 |. E8 3CF5FFFF CALL G3PIC.400050F4 40005BB8 |. 50 PUSH EAX ; |hInst 40005BB9 |. E8 CEB6FFFF CALL <JMP.&user32.LoadStringA> - вот здесь читается сообщение "Incorrect" ; \LoadStringA 40005BBE |. 8BC8 MOV ECX,EAX 40005BC0 |. 8BD4 MOV EDX,ESP 40005BC2 |. 8BC6 MOV EAX,ESI 40005BC4 |. E8 53E5FFFF CALL G3PIC.4000411C 40005BC9 |. EB 0A JMP SHORT G3PIC.40005BD5 Что-то во всех статьях все так просто! Блин там рядом ни ставнений, ни чтений! Ужас! Видать наличие инструмента чуда не сотворит! Спасибо! Пошел читать дальше!
Да, натолкнул, ,за что и спасибо! Надо поискать дальше! У меня весь листок исписан вариантами номеров, проблема в том что их там два. Буду искать! Спасибо еще раз!
Не то, это видимо функция вывода окна сообщения о не правильном серийном номере. Вызов функции проходит 3 раза в строке Код (Text): 40005BB9 |. E8 CEB6FFFF CALL <JMP.&user32.LoadStringA> читаются строки: Information Incorrect OK можно посмотреть атач и сравнить! Olle Debager на входе функции показывает откуда проходят ее вызовы, Код (Text): Local calls from 40003DC9, 40003DEE, 4000B0EE, 4000B8DE, 4000B933, 4000BAD1, 4000BAFC, 4000BC66, 4000BC75, 4000BD31, 4000BD8D, 4000BE60, 4000E6F7, 4000E78B, 4000E7E7, 4000E87B, 4000E8D7, 4000E9B1, 4000E9E1, 4000EA07, 4000EA2D, 4000EA53, 4000EA79, ... я правильно понимаю, надо просмотреть их все? 55659631__1.gif
Непонятно, почему кряк такой сложной клиент-серверной системы ты поднял в этом разделе? Место твоего вопроса в исследованиях, или коммерциале. Какой модуль ты исследуешь? Твой скрин явно относится к Communication Module, т.е. явно к *komm.exe. Нужно точно описывать проблему. Кстати, проверка лицензии зашита в нескольких модулях (я убедился в этом простым сканированием).
Проверка да! Она осуществляется в каждом модуле программы! Но все же нашел кусок проверки кода! модуль C:\Program Files\Gefasoft\Common\g3pic.dll по адресу: 40005B88 /$ 53 PUSH EBX вывод сообщения о неправильно введенном номере по адресу: 4005E8D0 /$ 55 PUSH EBP видны введенные номера А вот здесь, как мне показалась проверка первого введенного номера. Код (Text): 40002C90 /$ 53 PUSH EBX 40002C91 |. 56 PUSH ESI 40002C92 |. 57 PUSH EDI 40002C93 |. 89C6 MOV ESI,EAX 40002C95 |. 50 PUSH EAX 40002C96 |. 85C0 TEST EAX,EAX 40002C98 |. 74 6C JE SHORT G3PIC.40002D06 40002C9A |. 31C0 XOR EAX,EAX 40002C9C |. 31DB XOR EBX,EBX 40002C9E |. BF CCCCCC0C MOV EDI,0CCCCCCC 40002CA3 |> 8A1E /MOV BL,BYTE PTR DS:[ESI] 40002CA5 |. 46 |INC ESI 40002CA6 |. 80FB 20 |CMP BL,20 40002CA9 |.^74 F8 \JE SHORT G3PIC.40002CA3 40002CAB |. B5 00 MOV CH,0 40002CAD |. 80FB 2D CMP BL,2D 40002CB0 |. 74 62 JE SHORT G3PIC.40002D14 40002CB2 |. 80FB 2B CMP BL,2B 40002CB5 |. 74 5F JE SHORT G3PIC.40002D16 40002CB7 |> 80FB 24 CMP BL,24 ; Switch (cases 0..78) 40002CBA |. 74 5F JE SHORT G3PIC.40002D1B 40002CBC |. 80FB 78 CMP BL,78 40002CBF |. 74 5A JE SHORT G3PIC.40002D1B 40002CC1 |. 80FB 58 CMP BL,58 40002CC4 |. 74 55 JE SHORT G3PIC.40002D1B 40002CC6 |. 80FB 30 CMP BL,30 40002CC9 |. 75 13 JNZ SHORT G3PIC.40002CDE 40002CCB |. 8A1E MOV BL,BYTE PTR DS:[ESI] ; Case 30 ('0') of switch 40002CB7 40002CCD |. 46 INC ESI 40002CCE |. 80FB 78 CMP BL,78 40002CD1 |. 74 48 JE SHORT G3PIC.40002D1B 40002CD3 |. 80FB 58 CMP BL,58 40002CD6 |. 74 43 JE SHORT G3PIC.40002D1B 40002CD8 |. 84DB TEST BL,BL 40002CDA |. 74 20 JE SHORT G3PIC.40002CFC 40002CDC |. EB 04 JMP SHORT G3PIC.40002CE2 40002CDE |> 84DB TEST BL,BL 40002CE0 |. 74 2D JE SHORT G3PIC.40002D0F 40002CE2 |> 80EB 30 /SUB BL,30 ; Default case of switch 40002CB7 40002CE5 |. 80FB 09 |CMP BL,9 40002CE8 |. 77 25 |JA SHORT G3PIC.40002D0F 40002CEA |. 39F8 |CMP EAX,EDI 40002CEC |. 77 21 |JA SHORT G3PIC.40002D0F 40002CEE |. 8D0480 |LEA EAX,DWORD PTR DS:[EAX+EAX*4] 40002CF1 |. 01C0 |ADD EAX,EAX 40002CF3 |. 01D8 |ADD EAX,EBX 40002CF5 |. 8A1E |MOV BL,BYTE PTR DS:[ESI] 40002CF7 |. 46 |INC ESI 40002CF8 |. 84DB |TEST BL,BL 40002CFA |.^75 E6 \JNZ SHORT G3PIC.40002CE2 40002CFC |> FECD DEC CH 40002CFE |. 74 09 JE SHORT G3PIC.40002D09 40002D00 |. 85C0 TEST EAX,EAX 40002D02 |. 7D 54 JGE SHORT G3PIC.40002D58 40002D04 |. EB 09 JMP SHORT G3PIC.40002D0F 40002D06 |> 46 INC ESI 40002D07 |. EB 06 JMP SHORT G3PIC.40002D0F 40002D09 |> F7D8 NEG EAX 40002D0B |. 7E 4B JLE SHORT G3PIC.40002D58 40002D0D |. 78 49 JS SHORT G3PIC.40002D58 40002D0F |> 5B POP EBX ; Default case of switch 40002D2F 40002D10 |. 29DE SUB ESI,EBX 40002D12 |. EB 47 JMP SHORT G3PIC.40002D5B 40002D14 |> FEC5 INC CH 40002D16 |> 8A1E MOV BL,BYTE PTR DS:[ESI] 40002D18 |. 46 INC ESI 40002D19 |.^EB 9C JMP SHORT G3PIC.40002CB7 40002D1B |> BF FFFFFF0F MOV EDI,0FFFFFFF ; Cases 24 ('$'),58 ('X'),78 ('x') of switch 40002CB7 40002D20 |. 8A1E MOV BL,BYTE PTR DS:[ESI] 40002D22 |. 46 INC ESI 40002D23 |. 84DB TEST BL,BL 40002D25 |.^74 DF JE SHORT G3PIC.40002D06 40002D27 |> 80FB 61 /CMP BL,61 40002D2A |. 72 03 |JB SHORT G3PIC.40002D2F 40002D2C |. 80EB 20 |SUB BL,20 40002D2F |> 80EB 30 |SUB BL,30 ; Switch (cases 30..46) 40002D32 |. 80FB 09 |CMP BL,9 40002D35 |. 76 0B |JBE SHORT G3PIC.40002D42 40002D37 |. 80EB 11 |SUB BL,11 40002D3A |. 80FB 05 |CMP BL,5 40002D3D |.^77 D0 |JA SHORT G3PIC.40002D0F 40002D3F |. 80C3 0A |ADD BL,0A ; Cases 41 ('A'),42 ('B'),43 ('C'),44 ('D'),45 ('E'),46 ('F') of switch 40002D2F 40002D42 |> 39F8 |CMP EAX,EDI ; Cases 30 ('0'),31 ('1'),32 ('2'),33 ('3'),34 ('4'),35 ('5'),36 ('6'),37 ('7'),38 ('8'),39 ('9') of switch 40002D2F 40002D44 |.^77 C9 |JA SHORT G3PIC.40002D0F 40002D46 |. C1E0 04 |SHL EAX,4 40002D49 |. 01D8 |ADD EAX,EBX 40002D4B |. 8A1E |MOV BL,BYTE PTR DS:[ESI] 40002D4D |. 46 |INC ESI 40002D4E |. 84DB |TEST BL,BL 40002D50 |.^75 D5 \JNZ SHORT G3PIC.40002D27 40002D52 |. FECD DEC CH 40002D54 |. 75 02 JNZ SHORT G3PIC.40002D58 40002D56 |. F7D8 NEG EAX 40002D58 |> 59 POP ECX 40002D59 |. 31F6 XOR ESI,ESI 40002D5B |> 8932 MOV DWORD PTR DS:[EDX],ESI 40002D5D |. 5F POP EDI 40002D5E |. 5E POP ESI 40002D5F |. 5B POP EBX 40002D60 \. C3 RETN На данный момент не могу разобраться в логике!
Единственное что понял так это то, что кадый CMP BL,58 сравливается с таблицей символов. т.е. 58 = x Первые три сравнения: Код (Text): 40002CA6 |. 80FB 20 |CMP BL,20 40002CA9 |.^74 F8 \JE SHORT G3PIC.40002CA3 40002CAB |. B5 00 MOV CH,0 40002CAD |. 80FB 2D CMP BL,2D 40002CB0 |. 74 62 JE SHORT G3PIC.40002D14 40002CB2 |. 80FB 2B CMP BL,2B 40002CB5 |. 74 5F JE SHORT G3PIC.40002D16 По моему просто вырезают символы "$", " " и "_" из введенного номера. Первый сивол сравнивается в верхней части кода, а второй начинает сравниваться с адреса: 40002D1B. В общем бьюсь головой об стену!
Boyler Ты опять не ответил на вопрос - какой исполняемый модуль ты исследовал? Их в системе больше двух десятков... Часть написана на Дельфях, часть - на Visual.Net.
Boyler Приведенный тобой кусок текста чем-то напоминает форматное преобразование строки в число (десятичное или шестнадцатиричное). Точно не скажу, под рукой инчтрументария и справочников нет. Но очень похоже.
Не понимаю вопроса. библиотека C:\Program Files\Gefasoft\Common\g3pic.dll екзешник C:\Program Files\Gefasoft\GP7komm.exe
Boyler А вот здесь, как мне показалась проверка первого введенного номера Хочу еще раз обратить твое внимание, что это форматное преобразование строки в число, а не проверка номера!
Да, спасибо! Пока трудно понимаю, посмотрим! Итак помогли здорово! Щас пока оставил работы много, раскидать надо!