Сейчас на форуме: -Sanchez-, barsik, vasilevradislav, vsv1, padad42664, kris_sexy, site-pro (+6 невидимых) |
![]() |
eXeL@B —› Крэки, обсуждения —› Исследование ProxySwitcher |
Посл.ответ | Сообщение |
|
Создано: 22 октября 2007 01:02 · Поправил: Isaev · Личное сообщение · #1 ProxySwitcher v3.11 www.proxyswitcher.com/pub/ProxySwitcherStandard.exe 3.4Mb Не запакована, Borland Delphi 4.0 - 5.0 Цель найти валидный код (без патча). От имени пользователя похоже не зависит... По адресу 48C760 - берётся Hash от введённого кода... Процедуру получения Hasha уже написал Дальше по коду запутался Вопрос: С где и с чем он сверяется? ----- z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh ![]() |
|
Создано: 22 октября 2007 09:13 · Поправил: [HEX] · Личное сообщение · #2 |
|
Создано: 22 октября 2007 14:48 · Поправил: Isaev · Личное сообщение · #3 [HEX] пишет: Брутить будешь? Этож не практично Может и не практично, но я ещё не пробывал... Хочу забрутить, благо RegCode от имени пользователя не зависит... [HEX] пишет: Хотя все зависит от методы получения хэша... Метод, хоть и не сложный, но не обратимый... 0048C760 /$ 55 PUSH EBP
Вопрос остался: С где и с чем он сверяется? Может с этим? 006C5380=ProxySwi.006C5380 (ASCII "B5DA3A79E143B8CB725094CE907BBC2393CB1FB587479C1ABC37610F10B726FC") PS: Кстати, HashAlgo - что-то стандартное или самопальный? ----- z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh ![]() |
|
Создано: 23 октября 2007 16:05 · Личное сообщение · #4 |
|
Создано: 23 октября 2007 21:05 · Поправил: tempread · Личное сообщение · #5 Подробно прогу не смотрел, но удивила сильная антиотладка,и навскидку нашел такую строчку: 01CCB8E5 68 74 74 70 3A 2F 2F 6F 72 65 61 6E 73 [url=http://oreans ]http://oreans [/url] 01CCB8F5 2E 63 6F 6D 2F 69 6D 61 67 65 73 2F 62 6F 78 2E .com./images/box. 01CCB905 74 68 65 6D 69 64 61 2E 67 69 66 themida.gif Ты уверен что Не запакована, Borland Delphi 4.0 - 5.0 ? P.S. Ошибочка вышла... Прога хватает фалик из кеша броузера,и держит в памяти, и вышеприведенная строчка именно оттуда... Фантомчик что-то тут не очень помогает ![]() ![]() |
|
Создано: 24 октября 2007 20:36 · Личное сообщение · #6 В проге используется вот это(если чем-то это поможет): www.delphisources.ru/pages/faq/base/encode_tea.html Call stack: ---------------------------------------------------------------------- -------- 7C812A5B See function "proxyswitcher" in unit "proxyswitcher" at line 470 00404201 See function "@NewAnsiString" in unit "System" 0048C917 See function "TEA_EnDec" in unit "ucrypt" at line 129 00404201 See function "@NewAnsiString" in unit "System" 00402B40 See function "Error" in unit "System" 00404228 See function "@LStrFromPCharLen" in unit "System" 0040BCEB See function "StrPas" in unit "SysUtils" 0060AAFE See function "RCode" in unit "ukdec" at line 82 00403B3C See function "@HandleFinally" in unit "System" 0060B9F3 See function "TRForm.Button3Click" in unit "frform" at line 156 0060AC61 See function "DeCodeX" in unit "ukdec" at line 82 00403B3C See function "@HandleFinally" in unit "System" 00402A5E See function "@FreeMem" in unit "System" 0040417A See function "@LStrArrayClr" in unit "System" 0060AACB See function "SCode" in unit "ukdec" at line 82 0060ADB0 See function "DeCode" in unit "ukdec" at line 82 0060B9F3 See function "TRForm.Button3Click" in unit "frform" at line 156 00403B3C See function "@HandleFinally" in unit "System" 00439F88 See function "TControl.Click" in unit "Controls" 00430FDD See function "TButton.Click" in unit "StdCtrls" 004310D1 See function "TButton.CNCommand" in unit "StdCtrls" 00439DF4 See function "TControl.WndProc" in unit "Controls" 0043C8B7 See function "TWinControl.WndProc" in unit "Controls" 00430F51 See function "TButtonControl.WndProc" in unit "StdCtrls" 0061C03A See function "TWindowProcList.DispatchMessage" in unit "ThemeMgr" at line 697 0061C82C See function "TThemeManager.ButtonControlWindowProc" in unit "ThemeMgr" at line 1016 ![]() |
|
Создано: 24 октября 2007 22:00 · Личное сообщение · #7 tempread пишет: Ты уверен что Не запакована, Borland Delphi 4.0 - 5.0 ? Да не уверен, слишком уж код запутан... Всё может быть... Может распаковав эту дрянь станет легче жить ![]() Вообще-то 4,17Мб для Delphi проекта это уже дохрена, учитывая, что там не напихано разных звуков и графики... Т.ч. по идее она не запакована... Может просто сверху какая-нибудь антиотладка навешана? Есть у кого-нибудь соображения по этому поводу? tempread пишет: Фантомчик что-то тут не очень помогает Без него кстати вообще не разу в Olly запустить не смог... tempread пишет: В проге используется вот это(если чем-то это поможет): +1 Точно... Я переводил с asma на Delphi стандартную процедуру... ![]() Докатился, блин! ----- z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh ![]() |
|
Создано: 25 октября 2007 10:55 · Личное сообщение · #8 48C760 - это не хэш, это крипто функция алгоритма TEA, если полистать дизассемблерный листинг чуть ниже, то обнаружится обратное действие этому. От ключа там происходит происходит декриптовка кода, для себя я сделал вывод: 1. Либо брутить неизвестное время, но долго. 2. Имея валидный ключ можно сделать патч или пользоваться этим же ключом. ![]() |
|
Создано: 25 октября 2007 18:42 · Поправил: BfoX · Личное сообщение · #9 Все там обратимо, найди 128 битный ключ и будет тебе счастье... /********************************************************************* ********/ /* MXTEA.H - XTEA Encryption/Decryption Algorithm */ /* */ /* (C) TDi GmbH */ /* */ /* Include File for C/C++ */ /********************************************************************* ********/ /* The 'Extended Tiny Encryption Algorithm' (XTEA) by David Wheeler and */ /* Roger Needham of the Cambridge Computer Laboratory. */ /* XTEA is a Feistel cipher with XOR and AND addition as the non-linear */ /* mixing functions. */ /* Takes 64 bits (8 Bytes block) of data in Data[0] and Data[1]. */ /* Returns 64 bits of encrypted data in Data[0] and Data[1]. */ /* Takes 128 bits of key in Key[0] - Key[3]. */ /********************************************************************* ********/ short MxApp_Encrypt(unsigned long *DataBlock, unsigned long *Key); short MxApp_Decrypt(unsigned long *DataBlock, unsigned long *Key); //-------------------------------------------------------------------- --------- short MxApp_Encrypt(unsigned long *Data, unsigned long *Key) //-------------------------------------------------------------------- --------- { register unsigned long delta, sum; short cnt; sum = 0; delta = 0x9E3779B9; cnt = 32; while(cnt-- > 0) { Data[0] += (Data[1]<<4 ^ Data[1]>>5) + Data[1] ^ sum + Key[sum&3]; sum += delta; Data[1] += (Data[0]<<4 ^ Data[0]>>5) + Data[0] ^ sum + Key[sum>>11 & 3]; } return 0; } //-------------------------------------------------------------------- --------- short MxApp_Decrypt(unsigned long *Data, unsigned long *Key) //-------------------------------------------------------------------- --------- { register unsigned long delta, sum; short cnt; // sum = 0xC6EF3720; delta = 0x9E3779B9; sum = delta << 5; cnt = 32; while(cnt-- > 0) { Data[1] -= ((Data[0]<<4 ^ Data[0]>>5) + Data[0]) ^ (sum + Key[sum>>11 & 3]); sum -= delta; Data[0] -= ((Data[1]<<4 ^ Data[1]>>5) + Data[1]) ^ (sum + Key[sum&3]); } return 0; } ----- ...или ты работаешь хорошо, или ты работаешь много... ![]() |
|
Создано: 25 октября 2007 22:29 · Личное сообщение · #10 BfoX пишет: Все там обратимо, найди 128 битный ключ и будет тебе счастье... Этим я и хотел бы заняться... На алго ссылку уже tempread давал выше... Да я с ним и по асм коду разобрался. ev1l_4 пишет: 48C760 - это не хэш, это крипто функция алгоритма TEA, если полистать дизассемблерный листинг чуть ниже, то обнаружится обратное действие этому. От ключа там происходит происходит декриптовка кода Т.е. строка криптуется и ни с чем не сравнивается? Думаешь по криптокоду потом расшифровываются какие-то куски программы? Но это же полный функционал в течении триал срока, значит там ничего не шифруется, а ключик должен где-то сравниваться... (что и надо для брута, но я это место не нашёл :s14 ![]() ----- z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh ![]() |
|
Создано: 25 октября 2007 22:45 · Поправил: tempread · Личное сообщение · #11 |
|
Создано: 26 октября 2007 16:59 · Личное сообщение · #12 Isaev пишет: Думаешь по криптокоду потом расшифровываются какие-то куски программы Я не думаю, я знаю! Просто лень снова устанавливать прогу, на брут я забил, ибо долго будит. А раскриптовывается код сначала в другое место, далее если word от хэша раскриптованного кода+3 совпадает с первым word,ом раскриптованного кода, то он перезаписывается в проге+переход меняется, как раз тот, что после CALL EAX. Тут дело не в обратимости, а в ключе раскриптовки. ![]() |
![]() |
eXeL@B —› Крэки, обсуждения —› Исследование ProxySwitcher |