![]() |
eXeL@B —› Основной форум —› Активация через инет. |
<< . 1 . 2 . |
Посл.ответ | Сообщение |
|
Создано: 15 сентября 2006 23:27 · Личное сообщение · #1 Ломаю один CGI-сканер. В сети его нет, тока демки. Чел мне подогнал полную. Прога при каждом запуске лезет на свой сервак, и проверяет логин_пасс. Если в оффлайне - то выдает ошибку, что нет коннекта. При проверке на серваке - выдает ошибку, что логин-пасс - не канают. Обходится в одной ф-ции и то и то. Прога тупо ждет, когда ее активируют. Но вот фигня- работать не хочет. Там можно сканить один урл, или сеть. Так она даже аипишники не перебирает. Ну я подумал, что надо активировать. Нашел ф-цию, где это дело происходит. Там активно юзается base-64 & winsock.dll. Короче, теперь прога говорит, что активация прошла успешно, но работать все равно не хочет. В той ф-ции, что отвечает за работу, вроде ничо подозрительного нет. Т.е. никаких ключей ниоткуда не читает. Вопрос ко всем. Кто-то когда-нить ломал такое дело? Если да, то как. Нужны любые подсказки. И еще трабла. Любой бряк вешает прогу. Нимогу не потрейсить, ни вообще. Чо за фигня и как с ней бороться? Сталкивался уже с такой хренью, после каждого бряка перезагружал прогу. Но там мало работы было. А тут надо трейсить эту ф-цию, где ключ проверяется. А она на 30-40 экранов. ![]() |
|
Создано: 16 сентября 2006 22:26 · Личное сообщение · #2 |
|
Создано: 17 сентября 2006 00:33 · Личное сообщение · #3 Эта прога на серваке проверяет логин-пасс. И это я обошел, пишет, что авторизация прошла успешно. Но вот не работает ![]() Тот обработчик - мимо кассы, как говорит один знакомый. Это служебная проца, толи ВНД, толи еще чего. У меня все дома, а инета щас нет, не помню точно. Так вот там брякается постоянно. Но после выхода из этого цикла и должна начинаться работа. Как бы отловить это дело? Можно конечно давить Ф8 и считать, но я на второй сотне сбился. Может есть какой-то способ попроще. Условный бряк тоже не катит. Я ж не знаю, куда выход будет. ![]() |
|
Создано: 17 сентября 2006 01:23 · Личное сообщение · #4 как я понимаю, ты всё в отладчике сидишь. попробуй дизасмнуть в IDA, там проще разгребать, не придётся F8 отжимать. да и вообще лучше параллельно разребать в отладчике и в дизассемблере. также не забывай обзывать переменные в коде, чтобы при повторной встрече уже знать, что к чему какие-нить крипто сигнатуры нашёл в файле? файл запакован? секция кода писабельна? это я к тому, что чтобы раскриптовывать код по ключу (на тот случай если прога это делает), то прога должна писать в секцию кода. можешь отловить эту запись. ----- EnJoy! ![]() |
|
Создано: 18 сентября 2006 00:31 · Поправил: [HEX] · Личное сообщение · #5 Jupiter, stahh Тяжеловато конечно сидеть и гадать что там может быть.... авторы могут напихать все что угодной, а интернет активация поидее почти ничем не отличается от обычной регистрации (метод передачи вводимой информации в процедуру проверки регистрации разная и все), просто кусок кода находиться на серваке (от банального сравнения серийника в БД, до раскриптовки куска программы). Лучше один раз увидеть чем 100 раз услышать.... ----- Computer Security Laboratory ![]() |
|
Создано: 18 сентября 2006 08:27 · Личное сообщение · #6 [HEX] Если будет возможность - залью куда-нить. Посмотришь если чо? Прога посылает строку вида /rem.php&d10=user&d11=pass&d12=job=stopped и т.д Наверняка и ответ должен быть в этом плане. Jupiter Прога ничем не криптована. Есть тока бэйс64. Дело в том, что ида жутко тормозит. Прога не маленькая и размер тока бсс - 160 метров! А бсс - пустая(нах надо?).Так что пока в ольке. Но тут трабла не в этом. Код если и дописывается, то узнать без валидного ключа как? А проца проверки имеет вид свитча. Где 0 - проверка руль, 2 - нет коннекта, 1 - проверка бэд. ![]() |
|
Создано: 18 сентября 2006 09:14 · Личное сообщение · #7 stahh ну во-первых, в IDA можно явно задавать что грузить, а что нет. к тому же IDA, в отличие от OllyDbg, показывает граф со всеми в т.ч. "глубокими" обращениями к выбранной функции. поэтому можешь кинуть файл в иду и идти спать. к утру она всё разберёт (не забудь применить сигны, если известен HLL) а уж кэйсы с идой проще разбирать [HEX] а интернет активация поидее почти ничем не отличается от обычной регистрации (метод передачи вводимой информации в процедуру проверки регистрации разная и все) согласен ----- EnJoy! ![]() |
|
Создано: 18 сентября 2006 09:52 · Поправил: Paxan · Личное сообщение · #8 |
|
Создано: 18 сентября 2006 13:08 · Личное сообщение · #9 |
|
Создано: 18 сентября 2006 23:14 · Личное сообщение · #10 Red Bar0n Aспак 2.12 . Можешь в личку написать, если надо. Paxan Ессно я ее распачил анпаком от доктора. Но иде пох. Задаешь строку на поиск, и она бсску полчаса шуршит. Да и плохо я с идой знаком. Надо Криса перечитать. Короч, разобрал я проверку полностью. На форме есть таймер, который постоянно работает(нах надо?). Этот таймер создает поток. В этом потоке идет проверка. В бейс 64 зашифрованы строки запроса. Сначала идет запрос на яндекс(или другой сервак, там еще пара линков забита). Ожидается ответ 200 ОК. Если коннекта нет, то в память помещается строка ServerError:.... Потом посылается запрос на свой сервак. Ожидается строка Thats all, сравнивается с ответом, а там ошибка. Чо я тока не пробовал. Таймер можно убить полностью, на работе проге это никак не отражается. Прога висит и тупо ждет активации. Можно еще в пяти или шести местах патчить. Обойти коллы, поменять переходы. Или подставить данные(лучший вариант). Тогда прога говорит, что активация - гуд. Но работать не хочет ![]() То ли я совсем тупой, то ли есть какая-то хитрость. Да, одна из функций по потоку обозвана TreadWrapper. Это тот враппер? Или это обычная делфовская ф-ция по защите потока? Ну, какие тут могут быть варианты? Лично мне в голову ничо не приходит. ![]() |
|
Создано: 18 сентября 2006 23:18 · Личное сообщение · #11 |
|
Создано: 19 сентября 2006 01:29 · Личное сообщение · #12 |
|
Создано: 20 сентября 2006 01:51 · Личное сообщение · #13 Paxan Я вообщето не для кого не ломаю. Чела, который мне прислал линк на прогу, - я не знаю. А прога действительно интересная. И работает. Тока не у меня ![]() Вообще-то кой-чего нарыл. Линки уже перебирает. А дальше - швах. Если будут новостя - сообщай. Хотя, если у тя заказ ![]() ![]() |
|
Создано: 20 сентября 2006 02:40 · Личное сообщение · #14 |
|
Создано: 20 сентября 2006 02:42 · Личное сообщение · #15 |
|
Создано: 20 сентября 2006 12:03 · Личное сообщение · #16 |
|
Создано: 20 сентября 2006 12:24 · Личное сообщение · #17 |
|
Создано: 20 сентября 2006 23:27 · Личное сообщение · #18 приведет к наихудшим последствиям для рунета May be. У меня с афтаром личные счеты. Лано, посмотрим. r99 Вот Релееру в личку кинь линк. Пусть он ее в базы касперу отправит. Paxan Да там хрен чо нароешь. Я проверку разобрал полностью. Можно сделать даже, чтоб обращение к ини, где логин и пас забиты - уходило в никуда. Один хрен прога не работает. Походу, придется переписвыать рабочую ф-цию. ![]() |
|
Создано: 20 сентября 2006 23:38 · Личное сообщение · #19 |
|
Создано: 21 сентября 2006 23:56 · Личное сообщение · #20 Да. Такое вот почему. Короче прога создает поток. Потрейсил через кернел. Возврат в прогу, и поток убивается. А иногда вызов проходит в другую ветку кернела, но оттуда идет колл в прогу. А там рабочая ф-ция. Не могу отследить почему происходит изменение трассы. Пока трейсю - ничо не происходит. Тока жму Ф9 - прога уходит в новую ветку. Пробовал подниматься по ретам. Поднялся в кернел. А ф-ция, где колл ведет в прогу - ниоткуда. Стек полностью пустой, ни рета, ни в дереве коллов ничо нет. Кто-то сталкивался с такой фигней? Как отследить изменение коллов? А то уже запарился напрочь. ![]() |
|
Создано: 22 сентября 2006 02:14 · Личное сообщение · #21 |
|
Создано: 22 сентября 2006 23:07 · Личное сообщение · #22 |
|
Создано: 23 сентября 2006 01:08 · Личное сообщение · #23 stahh , посмотри с какими аргументами создаётся поток - может он в suspended и потом прододжается из таймера. Или наооборот, тормозится из него. В любом случае, я знаю только несколько вариантов завершения потока: 1) через API - SuspendThread() 2) указание потоку что бы остановился - то есть разблокирование потока через event (synchronization object) или message. А поток делает return. Найди в Иде окуда вызываются SuspendThread(), SetEvent() и посмотри, потом поставишь breakpoint и проверишь. Да, ещё глянь как блокирутся поток - если через MsgWaitForMultipleObjects() то ещё посмотри SendMessage() и PostMessage(). Короче, посмотри что присходит в теле потока - если у тебя вторая схема, то поток разблокировавшись, достанет кусок данных из очереди/контейнера/переменной и потом сделает return или ExitThread(). ![]() |
|
Создано: 23 сентября 2006 23:21 · Личное сообщение · #24 Поток создается в suspended, но и в первій и во второй раз. Так что дело не в этом. Я тоже думал аргументы, но они не меняются. Вот это мне и не понятно. Получается так, первый раз создание потока проходит через кернел и возвращается в таймер. Из таймера идет сразу опять создание потока - и рабочая ф-ция. А потом идет возврат полностью к проце нажатия батона. Походу там MsgWaitForMultipleObjects() и данные достаются, но вот отследить эти данные - не получается. Я ж говорю, что обрабатывается через таймер, да и MsgWaitForMultipleObjects() срабатывает стока раз ![]() ![]() |
|
Создано: 24 сентября 2006 01:21 · Поправил: s0larian · Личное сообщение · #25 по поводу API - посмотри в Иде есть ли вызовы SuspendThread(), и если есть то откуда. Дело, скорее всего, вот вчём - из одного из таймеров вызывается что-то что посылает твоему потоку кусок данных (серийный номер или посто "я не активирован"). То есть, я думаю, что поток сам решает что софтину ломают и останавливается. Таймек, кста, вызывается в котнексте главного потока, если это WM_TIMER. То есть это просто message handler. (таймер, правда, можно сделать и свмому в отдельном потоке используя Sleep(timeout) или WaitForXxxxObject(..., timeout)) Логика работы в этом случае вот какая - поток просыпается (то есть MsgWaitForMultipleObjects() возвращается в код софтины) и проверяет что случилось. Тут три класса вариантов: 1) new windows message 2) signalled synchronization object 3) timeout Что именно случилось говорит return value полученное от xxxWaitForXxx(). В случае с сообщением, софтина посмотрит на message id, wparam и lparam. Случае с timeout - это скорее всего poll mode, и проверка какой-нить очереди или векрота событий. Смотри ниже. Ну а второй случай - это что-то типа NewJobEvent, который будит твой поток, и ты знаешь, что надо читать какой-нить вектор. Просто это можно делать после сигнала или каждые 50ms.... Короче я клоню к тому, что одна из ветвей, которые исполняются после возврата из xxxWaitForXxx(), ведёт к смерти этого потока. Отследи в Иде где принимается это решение. ![]() |
|
Создано: 25 сентября 2006 02:23 · Личное сообщение · #26 |
|
Создано: 25 сентября 2006 16:16 · Поправил: s0larian · Личное сообщение · #27 |
|
Создано: 25 сентября 2006 23:43 · Личное сообщение · #28 Вот смотри http://www.exelab.ru/f/action=vthread&forum=7&topic=6328 Если чо, я в личку напишу, посоветуюсь. А пока - швах. Тема закрыта.(по правилам?) ![]() |
<< . 1 . 2 . |
![]() |
eXeL@B —› Основной форум —› Активация через инет. |