![]() |
eXeL@B —› Основной форум —› Исследование Auto Debug 3.0 |
<< . 1 . 2 . 3 . |
Посл.ответ | Сообщение |
|
Создано: 28 июня 2006 21:14 · Личное сообщение · #1 Обнаружил сёдня у себя на харде, но злобный наг достал просто ![]() [ссылка] hxxp://hellspawn.nm.ru/tmp/setup.exe [размер] 1.16мб [запакована] ASPack 2.12 + PECompact 1.xx интересно взломать самому ![]() уже насколько часов бъюсь, вот что нарыл: -куча int 3 в коде -проверка на бряки -проверка crc -издебаггер презент ![]() заставить работать расспакованную пока не удалось... собственно в это и интерес, ну теперь к коду:
проверку крк вроде нашёл, ща настряпую лоадер... Прога интересная, советую посмотреть ![]() ----- [nice coder and reverser] ![]() |
|
Создано: 25 июля 2006 12:43 · Личное сообщение · #2 Medsft пишет: exitprocess является финалом работы защиты а сам механизм защиты спрятан за "исключениями" причем на другой странице так что проследить последовательность up-реверсинга порой бывает трудно (в данной проге) ну да трудновато, но можно ![]() Medsft пишет: так что статья думаю выйдет поучительная. я постараюсь, вот только с anti drx не могу разобраться... ну не вижу я в упор ![]() а так вроде всё остально ясно, вот только валидный ключик бы достать ![]() ----- [nice coder and reverser] ![]() |
|
Создано: 25 июля 2006 12:59 · Личное сообщение · #3 А ты спроси ![]() ![]() 004316EC . 53 PUSH EBX 004316ED . 56 PUSH ESI 004316EE . 8B35 90714400 MOV ESI, DWORD PTR DS:[<&kernel32.GetCurrentThread>] ; kernel32.GetCurrentThread 004316F4 . 8D85 10FDFFFF LEA EAX, DWORD PTR SS:[EBP-2F0] 004316FA . 57 PUSH EDI 004316FB . 50 PUSH EAX ; /pContext 004316FC . C785 10FDFFFF 10000100 MOV DWORD PTR SS:[EBP-2F0], 10010 ; |UNICODE "PROFILE=C:\Documents and Settings\All Users" 00431706 . FFD6 CALL ESI ; |[GetCurrentThread 00431708 . 50 PUSH EAX ; |hThread 00431709 . FF15 EC714400 CALL DWORD PTR DS:[<&kernel32.GetThreadContext>] ; \GetThreadContext 0043170F . 8D85 10FDFFFF LEA EAX, DWORD PTR SS:[EBP-2F0] 00431715 . 33DB XOR EBX, EBX 00431717 . 50 PUSH EAX ; /pContext 00431718 . 899D 14FDFFFF MOV DWORD PTR SS:[EBP-2EC], EBX ; | ![]() 0043171E . 899D 18FDFFFF MOV DWORD PTR SS:[EBP-2E8], EBX ; | ![]() 00431724 . 899D 1CFDFFFF MOV DWORD PTR SS:[EBP-2E4], EBX ; | ![]() 0043172A . 899D 20FDFFFF MOV DWORD PTR SS:[EBP-2E0], EBX ; | ![]() 00431730 . 899D 28FDFFFF MOV DWORD PTR SS:[EBP-2D8], EBX ; | ![]() 00431736 . FFD6 CALL ESI ; |[GetCurrentThread 00431738 . 50 PUSH EAX ; |hThread 00431739 . FF15 14724400 CALL DWORD PTR DS:[<&kernel32.SetThreadContext>] ; \SetThreadContext 0043173F . 6A 08 PUSH 8 ![]() |
|
Создано: 25 июля 2006 13:03 · Личное сообщение · #4 |
|
Создано: 25 июля 2006 13:15 · Поправил: Medsft · Личное сообщение · #5 Да и на счет ключа не парься. Генерация второй половины ключа ОЧЕНЬ сильно завязана на контрольной сумме проги которая вычисляется с частотой 102,2000 мс соотвественно не изменяя прогу не ставя бряки высчитать как это называется (помоему хеш) тяжеловато.Лучше вот так: 0040163D /$ 53 PUSH EBX 0040163E |. 56 PUSH ESI 0040163F |. 8BF1 MOV ESI, ECX 00401641 |. 57 PUSH EDI 00401642 |. 6A 08 PUSH 8 00401644 |. 8B5E 18 MOV EBX, DWORD PTR DS:[ESI+18] 00401647 |. E8 869E0300 CALL DEBUGAPI.0043B4D2 0040164C |. 8BF8 MOV EDI, EAX 0040164E |. B8 01000000 MOV EAX, 1 ![]() 00401653 |. 53 PUSH EBX 00401654 |. 90 NOP 00401655 |. 8947 04 MOV DWORD PTR DS:[EDI+4], EAX ![]() 00401658 |. 90 NOP 00401659 |. 90 NOP 0040165A |. 90 NOP 0040165B |. 90 NOP 0040165C |. 90 NOP 0040165D |. 8907 MOV DWORD PTR DS:[EDI], EAX ![]() 0040165F |. 897E 18 MOV DWORD PTR DS:[ESI+18], EDI 00401662 |. E8 AEA50300 CALL DEBUGAPI.0043BC15 00401667 |. 59 POP ECX 00401668 |. 8BC7 MOV EAX, EDI 0040166A |. 59 POP ECX 0040166B |. 5F POP EDI 0040166C |. 5E POP ESI 0040166D |. 5B POP EBX 0040166E \. C3 RETN А до того было: 0040163D /$ 53 PUSH EBX 0040163E |. 56 PUSH ESI 0040163F |. 8BF1 MOV ESI, ECX 00401641 |. 57 PUSH EDI 00401642 |. 6A 08 PUSH 8 00401644 |. 8B5E 18 MOV EBX, DWORD PTR DS:[ESI+18] 00401647 |. E8 869E0300 CALL d_new.0043B4D2 0040164C |. 8BF8 MOV EDI, EAX 0040164E |. 8B46 18 MOV EAX, DWORD PTR DS:[ESI+18] ![]() 00401651 |. 53 PUSH EBX 00401652 |. 8B40 04 MOV EAX, DWORD PTR DS:[EAX+4] 00401655 |. 8947 04 MOV DWORD PTR DS:[EDI+4], EAX ![]() 00401658 |. 8B46 18 MOV EAX, DWORD PTR DS:[ESI+18] 0040165B |. 8B00 MOV EAX, DWORD PTR DS:[EAX] 0040165D |. 8907 MOV DWORD PTR DS:[EDI], EAX 0040165F |. 897E 18 MOV DWORD PTR DS:[ESI+18], EDI 00401662 |. E8 AEA50300 CALL d_new.0043BC15 00401667 |. 59 POP ECX 00401668 |. 8BC7 MOV EAX, EDI 0040166A |. 59 POP ECX 0040166B |. 5F POP EDI 0040166C |. 5E POP ESI 0040166D |. 5B POP EBX 0040166E \. C3 RETN Плюс залом процедуры расчета контрольной суммы ![]() |
|
Создано: 25 июля 2006 13:18 · Личное сообщение · #6 |
|
Создано: 25 июля 2006 13:51 · Поправил: Medsft · Личное сообщение · #7 По поводу контрольной суммы это здесь: 0042B732 |. 8BCB MOV ECX, EBX 0042B734 |. 4B DEC EBX 0042B735 |. 5E POP ESI 0042B736 |> 85C9 /TEST ECX, ECX 0042B738 |. 7E 2A |JLE SHORT d_new.0042B764 0042B73A |. 0FB617 |MOVZX EDX, BYTE PTR DS:[EDI] 0042B73D |. 8BC8 |MOV ECX, EAX 0042B73F |. 81E1 FF000000 |AND ECX, 0FF 0042B745 |. 33CA |XOR ECX, EDX 0042B747 |. C1E8 08 |SHR EAX, 8 0042B74A |. 8B8C8D 00FCFFFF |MOV ECX, DWORD PTR SS:[EBP+ECX*4-400] - сюда подставляем наше значение 0042B751 |. 33C1 |XOR EAX, ECX 0042B753 |. 47 |INC EDI 0042B754 |. 3B7D 10 |CMP EDI, [ARG.3] 0042B757 |. 75 06 |JNZ SHORT d_new.0042B75F 0042B759 |. 83C7 69 |ADD EDI, 69 0042B75C |. 83EB 6A |SUB EBX, 6A 0042B75F |> 8BCB |MOV ECX, EBX 0042B761 |. 4B |DEC EBX 0042B762 |.^ EB D2 \JMP SHORT d_new.0042B736 0042B764 |> 8B4D 14 MOV ECX, [ARG.4] 0042B767 |. 6A 01 PUSH 1 0042B769 |. F7D0 NOT EAX 0042B76B |. 8901 MOV DWORD PTR DS:[ECX], EAX 0042B76D |. 58 POP EAX 0042B76E |. EB 02 JMP SHORT d_new.0042B772 ![]() |
|
Создано: 25 июля 2006 14:12 · Поправил: Hellspawn · Личное сообщение · #8 Medsft прикольно, вызывается GetCurrentThread, потом извлекается CONTEXT, обнуляются iDrx регистры ![]() тока вот, почему левый ключ проходит, а потом вылет? ![]()
----- [nice coder and reverser] ![]() |
|
Создано: 25 июля 2006 14:47 · Личное сообщение · #9 Ну так я ж тебе (вам) и показал на эту процедуру 00423DAA . E8 34790000 CALL <SOME CRC> ; \DEBUGAPI.0042B6E3 Исправляем вот так: 0042B736 |. B8 696F9B09 MOV EAX, 99B6F69 0042B73B |. 33C9 XOR ECX, ECX 0042B73D |. BB 00000000 MOV EBX, 0 0042B742 |. 4B DEC EBX 0042B743 |. 33D2 XOR EDX, EDX 0042B745 |. BF FF6F4400 MOV EDI, DEBUGAPI.00446FFF 0042B74A |. 90 NOP 0042B74B |. 90 NOP 0042B74C |. 90 NOP 0042B74D |. 90 NOP 0042B74E |. 90 NOP 0042B74F |. 90 NOP 0042B750 |. 90 NOP 0042B751 |. 90 NOP 0042B752 |. 90 NOP 0042B753 |. 90 NOP 0042B754 |. 90 NOP 0042B755 |. 90 NOP 0042B756 |. 90 NOP 0042B757 |. 90 NOP 0042B758 |. 90 NOP 0042B759 |. 90 NOP 0042B75A |. 90 NOP 0042B75B |. 90 NOP 0042B75C |. 90 NOP 0042B75D |. 90 NOP 0042B75E |. 90 NOP 0042B75F |. 90 NOP 0042B760 |. 90 NOP 0042B761 |. 90 NOP 0042B762 |. 90 NOP 0042B763 |. 90 NOP 0042B764 |. 8B4D 14 MOV ECX, [ARG.4] 0042B767 |. 6A 01 PUSH 1 0042B769 |. F7D0 NOT EAX 0042B76B |. 8901 MOV DWORD PTR DS:[ECX], EAX 0042B76D |. 58 POP EAX 0042B76E |. EB 02 JMP SHORT DEBUGAPI.0042B772 где в eax загоняется контрольная сумма полученная при первом проходе этой процедуры и усе. ![]() |
|
Создано: 25 июля 2006 14:51 · Личное сообщение · #10 |
|
Создано: 25 июля 2006 14:57 · Поправил: Hellspawn · Личное сообщение · #11 лан теперь вроде всё... правда честно, до конца мне лень разбираться, файлик я анпакнул, он доже запускается, но при появлении главной формы комп уходит в ребут, дальше не хочу копать, так как цель то уже достигнута, засяду за статью... если есть желание помочь, стучите в асю.. ----- [nice coder and reverser] ![]() |
|
Создано: 25 июля 2006 17:31 · Личное сообщение · #12 |
|
Создано: 25 июля 2006 17:32 · Личное сообщение · #13 |
|
Создано: 26 июля 2006 14:56 · Личное сообщение · #14 |
|
Создано: 26 июля 2006 15:00 · Личное сообщение · #15 |
|
Создано: 27 июля 2006 16:10 · Поправил: Hellspawn · Личное сообщение · #16 Medsft распаковал, молодец, а мне до конца довести лень ![]() кстати зарегить мона ещё проще...
кстати сама прога разочаровала.. как то не очень она ![]() ----- [nice coder and reverser] ![]() |
|
Создано: 28 июля 2006 12:27 · Личное сообщение · #17 |
|
Создано: 28 июля 2006 14:53 · Поправил: Medsft · Личное сообщение · #18 |
|
Создано: 28 июля 2006 14:56 · Личное сообщение · #19 |
|
Создано: 28 июля 2006 16:43 · Личное сообщение · #20 |
|
Создано: 01 августа 2006 18:50 · Личное сообщение · #21 |
|
Создано: 08 ноября 2006 01:15 · Личное сообщение · #22 |
<< . 1 . 2 . 3 . |
![]() |
eXeL@B —› Основной форум —› Исследование Auto Debug 3.0 |