![]() |
eXeL@B —› Вопросы новичков —› Как заставить switch всегда возвращать один и тот же результат? |
Посл.ответ | Сообщение |
|
Создано: 19 октября 2006 15:43 · Личное сообщение · #1 Нам в школе выдали новый годовой пакет учебников ![]() ![]() Так вот, мне остался последний шаг, чтобы прислать им патч для пакета учебников с этого диска.. С-сно инсталлер мне с диалапа не выложить, да и там нет ничего интересного. Поковырялся, посмотрел: 1 рег. инфа ХРАНИТСЯ В ОТКРЫТОМ ВИДЕ В РЕЕСТРЕ - любой, введенный мной, пароль оказывался там (тут у них мегазащита - заныкали оочень глубоко в реестр :s1 ![]() 2 пакер был.., его я уже снял 3 изучение исполняемого файла ничего не дало - мегазащита подразумевает хранение кода защиты в длл, лежащей рядом с файлом 4 поковырял длл, нашел несколько ф-ций защиты 5 две уже отцепил, теперь прога кидает ошибку на тему "кривой ключ" - рулез ![]() И вот сейчас я запнулся на довольно простом фрагменте кода, смысл его следующий: switch результат_проверки_на_ошибки_и_регистрации case много разных ошибок else нормально работаем Извините за глупый вопрос, но я правда не знаю как это подправить ![]() 100064E2 . 48 DEC EAX 100064E3 . 83F8 06 CMP EAX,6 100064E6 . 0F87 6A010000 JA HtmlBook.10006656 100064EC . FF2485 3468001>JMP DWORD PTR DS:[EAX*4+10006834] 100064F3 > 68 E4070110 PUSH HtmlBook.100107E4 100064F8 . 8D45 B4 LEA EAX,DWORD PTR SS:[EBP-4C] 100064FB . 50 PUSH EAX 100064FC . 8D8D A0FBFFFF LEA ECX,DWORD PTR SS:[EBP-460] 10006502 . 51 PUSH ECX 10006503 . E8 08FEFFFF CALL HtmlBook.10006310 10006508 . 83C4 0C ADD ESP,0C 1000650B . 6A FF PUSH -1 1000650D . 53 PUSH EBX 1000650E . 50 PUSH EAX 1000650F . 8D4D D0 LEA ECX,DWORD PTR SS:[EBP-30] 10006512 . C645 FC 06 MOV BYTE PTR SS:[EBP-4],6 10006516 . E8 F5DAFFFF CALL HtmlBook.10004010 1000651B . 8D8D A0FBFFFF LEA ECX,DWORD PTR SS:[EBP-460] 10006521 . E9 27010000 JMP HtmlBook.1000664D 10006526 > 68 C8070110 PUSH HtmlBook.100107C8 1000652B . 8D55 B4 LEA EDX,DWORD PTR SS:[EBP-4C] 1000652E . 52 PUSH EDX 1000652F . 8D85 F8FAFFFF LEA EAX,DWORD PTR SS:[EBP-508] 10006535 . 50 PUSH EAX 10006536 . E8 D5FDFFFF CALL HtmlBook.10006310 1000653B . 83C4 0C ADD ESP,0C 1000653E . 6A FF PUSH -1 10006540 . 53 PUSH EBX 10006541 . 50 PUSH EAX 10006542 . 8D4D D0 LEA ECX,DWORD PTR SS:[EBP-30] 10006545 . C645 FC 07 MOV BYTE PTR SS:[EBP-4],7 10006549 . E8 C2DAFFFF CALL HtmlBook.10004010 1000654E . 8D8D F8FAFFFF LEA ECX,DWORD PTR SS:[EBP-508] 10006554 . E9 F4000000 JMP HtmlBook.1000664D 10006559 > 68 A8070110 PUSH HtmlBook.100107A8 1000655E . 8D4D B4 LEA ECX,DWORD PTR SS:[EBP-4C] 10006561 . 51 PUSH ECX 10006562 . 8D95 14FBFFFF LEA EDX,DWORD PTR SS:[EBP-4EC] 10006568 . 52 PUSH EDX 10006569 . E8 A2FDFFFF CALL HtmlBook.10006310 1000656E . 83C4 0C ADD ESP,0C 10006571 . 6A FF PUSH -1 10006573 . 53 PUSH EBX 10006574 . 50 PUSH EAX 10006575 . 8D4D D0 LEA ECX,DWORD PTR SS:[EBP-30] 10006578 . C645 FC 08 MOV BYTE PTR SS:[EBP-4],8 1000657C . E8 8FDAFFFF CALL HtmlBook.10004010 10006581 . 8D8D 14FBFFFF LEA ECX,DWORD PTR SS:[EBP-4EC] 10006587 . E9 C1000000 JMP HtmlBook.1000664D 1000658C > 68 8C070110 PUSH HtmlBook.1001078C 10006591 . 8D45 B4 LEA EAX,DWORD PTR SS:[EBP-4C] 10006594 . 50 PUSH EAX 10006595 . 8D8D 4CFBFFFF LEA ECX,DWORD PTR SS:[EBP-4B4] 1000659B . 51 PUSH ECX 1000659C . E8 6FFDFFFF CALL HtmlBook.10006310 100065A1 . 83C4 0C ADD ESP,0C 100065A4 . 6A FF PUSH -1 100065A6 . 53 PUSH EBX 100065A7 . 50 PUSH EAX 100065A8 . 8D4D D0 LEA ECX,DWORD PTR SS:[EBP-30] 100065AB . C645 FC 09 MOV BYTE PTR SS:[EBP-4],9 100065AF . E8 5CDAFFFF CALL HtmlBook.10004010 100065B4 . 8D8D 4CFBFFFF LEA ECX,DWORD PTR SS:[EBP-4B4] 100065BA . E9 8E000000 JMP HtmlBook.1000664D 100065BF > 68 6C070110 PUSH HtmlBook.1001076C 100065C4 . 8D55 B4 LEA EDX,DWORD PTR SS:[EBP-4C] 100065C7 . 52 PUSH EDX 100065C8 . 8D85 84FBFFFF LEA EAX,DWORD PTR SS:[EBP-47C] 100065CE . 50 PUSH EAX 100065CF . E8 3CFDFFFF CALL HtmlBook.10006310 100065D4 . 83C4 0C ADD ESP,0C 100065D7 . 6A FF PUSH -1 100065D9 . 53 PUSH EBX 100065DA . 50 PUSH EAX 100065DB . 8D4D D0 LEA ECX,DWORD PTR SS:[EBP-30] 100065DE . C645 FC 0A MOV BYTE PTR SS:[EBP-4],0A 100065E2 . E8 29DAFFFF CALL HtmlBook.10004010 100065E7 . 8D8D 84FBFFFF LEA ECX,DWORD PTR SS:[EBP-47C] 100065ED . EB 5E JMP SHORT HtmlBook.1000664D 100065EF > 68 4C070110 PUSH HtmlBook.1001074C 100065F4 . 8D4D B4 LEA ECX,DWORD PTR SS:[EBP-4C] 100065F7 . 51 PUSH ECX 100065F8 . 8D95 68FBFFFF LEA EDX,DWORD PTR SS:[EBP-498] 100065FE . 52 PUSH EDX 100065FF . E8 0CFDFFFF CALL HtmlBook.10006310 10006604 . 83C4 0C ADD ESP,0C 10006607 . 6A FF PUSH -1 10006609 . 53 PUSH EBX 1000660A . 50 PUSH EAX 1000660B . 8D4D D0 LEA ECX,DWORD PTR SS:[EBP-30] 1000660E . C645 FC 0B MOV BYTE PTR SS:[EBP-4],0B 10006612 . E8 F9D9FFFF CALL HtmlBook.10004010 10006617 . 8D8D 68FBFFFF LEA ECX,DWORD PTR SS:[EBP-498] 1000661D . EB 2E JMP SHORT HtmlBook.1000664D 1000661F > 68 2C070110 PUSH HtmlBook.1001072C 10006624 . 8D45 B4 LEA EAX,DWORD PTR SS:[EBP-4C] 10006627 . 50 PUSH EAX 10006628 . 8D8D 30FBFFFF LEA ECX,DWORD PTR SS:[EBP-4D0] 1000662E . 51 PUSH ECX 1000662F . E8 DCFCFFFF CALL HtmlBook.10006310 10006634 . 83C4 0C ADD ESP,0C 10006637 . 6A FF PUSH -1 10006639 . 53 PUSH EBX 1000663A . 50 PUSH EAX 1000663B . 8D4D D0 LEA ECX,DWORD PTR SS:[EBP-30] 1000663E . C645 FC 0C MOV BYTE PTR SS:[EBP-4],0C 10006642 . E8 C9D9FFFF CALL HtmlBook.10004010 10006647 . 8D8D 30FBFFFF LEA ECX,DWORD PTR SS:[EBP-4D0] 1000664D > C645 FC 05 MOV BYTE PTR SS:[EBP-4],5 10006651 . E8 2ABDFFFF CALL HtmlBook.10002380 10006656 > 8B45 E8 MOV EAX,DWORD PTR SS:[EBP-18] /// как сделать безусловный переход сюда? 10006659 . 8B55 44 MOV EDX,DWORD PTR SS:[EBP+44] 1000665C . BE 10000000 MOV ESI,10 10006661 . 3BC6 CMP EAX,ESI 10006663 . 8B45 D4 MOV EAX,DWORD PTR SS:[EBP-2C] 10006666 . 891A MOV DWORD PTR DS:[EDX],EBX 10006668 . 73 03 JNB SHORT HtmlBook.1000666D 1000666A . 8D45 D4 LEA EAX,DWORD PTR SS:[EBP-2C] Заранее благодарен, длл в аттаче ![]() |
|
Создано: 19 октября 2006 21:20 · Личное сообщение · #2 |
|
Создано: 19 октября 2006 21:43 · Личное сообщение · #3 |
|
Создано: 19 октября 2006 22:51 · Личное сообщение · #4 |
|
Создано: 19 октября 2006 22:55 · Личное сообщение · #5 наверное... смотри ниже, там идет: 10006656 > 8B45 E8 MOV EAX,DWORD PTR SS:[EBP-18] чуть ниже: 1000665C . BE 10000000 MOV ESI,10 а тут сравнивается EAX с 10: 10006661 . 3BC6 CMP EAX,ESI и далее у тебя условный переход: 10006668 . 73 03 JNB SHORT HtmlBook.1000666D а ниже наверное что-то интересное происходит.... ![]() |
|
Создано: 20 октября 2006 02:12 · Личное сообщение · #6 |
|
Создано: 20 октября 2006 05:18 · Личное сообщение · #7 пошарил эту функцию, так и не понял что за число она должна возвращать, запутанно как-то всё. Немного поправил ее, смотри в аттаче. ![]() ![]() |
|
Создано: 20 октября 2006 05:21 · Личное сообщение · #8 |
|
Создано: 20 октября 2006 09:16 · Личное сообщение · #9 Даа, защита немного сложнее, чем я думал - в exe я проглядел четвертую функцию, они, вроде, полностью связаны. 00404EC3 . 51 PUSH ECX ; |Subkey
... 00403626 . 68 02000080 PUSH 80000002 ; |hKey = HKEY_LOCAL_MACHINE
... 00404F21 . 68 40F84300 PUSH _BookBro.0043F840 ; |ValueName = "name"
Далее - процедура, очень похожая на библиотечную, и очередной условный переход. Распакованый exe'шник: rapidshare.com/files/38455/BookBrowser.zip.html (сервер почему-то ругается и не дает прикрепить аттач) Сейчас засяду патчить.. ![]() |
|
Создано: 20 октября 2006 09:33 · Личное сообщение · #10 нашел еще один очень интересный фрагмент - я думал, что раз уж прога просто пишет введенный ключ в реестр, там никаких функций нет.. оказалось.. Видимо, для проверки того, что нарисовать в главном окне (незарегистрированная версия = "замочек"), сюда включили полный код проверки ключа. начинается с: 00404ED5 . FF15 04E04300 CALL DWORD PTR DS:[<&ADVAPI32.RegOpenKey>; \RegOpenKeyExA
Попробую сгенерить себе ключ - может что и получится.. (там сильно много вызывается исключений) ![]() |
|
Создано: 20 октября 2006 10:13 · Поправил: Ice · Личное сообщение · #11 И очередной облом - там какие-то антиотладочные средства ![]() Подскажите, пожалуйста, зародышу крекера: где происходит обращение к библиотеке на чтение книги? я уже запутался ![]() ![]() |
|
Создано: 20 октября 2006 11:28 · Личное сообщение · #12 fix200 пишет: пошарил эту функцию, так и не понял что за число она должна возвращать, запутанно как-то всё. Немного поправил ее, смотри в аттаче. Ошибка, которую кидает программа (makeerror) генерируется в этой же библиотеке, чуть ниже. может, все-таки возможно подправить только ее, в exe'шнике, вроде, нет проверок на тему "что отображать", он просто выводит то, что вернула библиотечная функция Ice пишет: они, вроде, полностью связаны. , а может и нет ![]() |
|
Создано: 21 октября 2006 07:10 · Личное сообщение · #13 |
![]() |
eXeL@B —› Вопросы новичков —› Как заставить switch всегда возвращать один и тот же результат? |
Эта тема закрыта. Ответы больше не принимаются. |