Сейчас на форуме: Slinger, Rio (+5 невидимых)

 eXeL@B —› Основной форум —› Активация через инет.
<< . 1 . 2 .
Посл.ответ Сообщение


Ранг: 127.3 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 15 сентября 2006 23:27
· Личное сообщение · #1

Ломаю один CGI-сканер. В сети его нет, тока демки. Чел мне подогнал полную. Прога при каждом запуске лезет на свой сервак, и проверяет логин_пасс. Если в оффлайне - то выдает ошибку, что нет коннекта. При проверке на серваке - выдает ошибку, что логин-пасс - не канают.
Обходится в одной ф-ции и то и то. Прога тупо ждет, когда ее активируют. Но вот фигня- работать не хочет. Там можно сканить один урл, или сеть. Так она даже аипишники не перебирает. Ну я подумал, что надо активировать.
Нашел ф-цию, где это дело происходит. Там активно юзается base-64 & winsock.dll. Короче, теперь прога говорит, что активация прошла успешно, но работать все равно не хочет. В той ф-ции, что отвечает за работу, вроде ничо подозрительного нет. Т.е. никаких ключей ниоткуда не читает.
Вопрос ко всем. Кто-то когда-нить ломал такое дело? Если да, то как. Нужны любые подсказки.
И еще трабла. Любой бряк вешает прогу. Нимогу не потрейсить, ни вообще. Чо за фигня и как с ней бороться? Сталкивался уже с такой хренью, после каждого бряка перезагружал прогу. Но там мало работы было. А тут надо трейсить эту ф-цию, где ключ проверяется. А она на 30-40 экранов.




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 16 сентября 2006 22:26
· Личное сообщение · #2

RAMZEZzz пишет:
AdsCleaner

Да, это она, точняк.




Ранг: 127.3 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 17 сентября 2006 00:33
· Личное сообщение · #3

Эта прога на серваке проверяет логин-пасс. И это я обошел, пишет, что авторизация прошла успешно. Но вот не работает Или сервер присылает какой-то код активации, или еще чего. Проверить можно тока при наличии валидной пары. Если б сервак присылал тока 200ОК, то прога б работала.
Тот обработчик - мимо кассы, как говорит один знакомый. Это служебная проца, толи ВНД, толи еще чего. У меня все дома, а инета щас нет, не помню точно. Так вот там брякается постоянно. Но после выхода из этого цикла и должна начинаться работа. Как бы отловить это дело? Можно конечно давить Ф8 и считать, но я на второй сотне сбился. Может есть какой-то способ попроще. Условный бряк тоже не катит. Я ж не знаю, куда выход будет.




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 17 сентября 2006 01:23
· Личное сообщение · #4

как я понимаю, ты всё в отладчике сидишь. попробуй дизасмнуть в IDA, там проще разгребать, не придётся F8 отжимать. да и вообще лучше параллельно разребать в отладчике и в дизассемблере. также не забывай обзывать переменные в коде, чтобы при повторной встрече уже знать, что к чему
какие-нить крипто сигнатуры нашёл в файле?
файл запакован? секция кода писабельна? это я к тому, что чтобы раскриптовывать код по ключу (на тот случай если прога это делает), то прога должна писать в секцию кода. можешь отловить эту запись.

-----
EnJoy!





Ранг: 467.7 (мудрец), 5thx
Активность: 0.270
Статус: Участник
Иной :)

Создано: 18 сентября 2006 00:31 · Поправил: [HEX]
· Личное сообщение · #5

Jupiter, stahh
Тяжеловато конечно сидеть и гадать что там может быть.... авторы могут напихать все что угодной, а интернет активация поидее почти ничем не отличается от обычной регистрации (метод передачи вводимой информации в процедуру проверки регистрации разная и все), просто кусок кода находиться на серваке (от банального сравнения серийника в БД, до раскриптовки куска программы).

Лучше один раз увидеть чем 100 раз услышать....

-----
Computer Security Laboratory





Ранг: 127.3 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 18 сентября 2006 08:27
· Личное сообщение · #6

[HEX] Если будет возможность - залью куда-нить. Посмотришь если чо?
Прога посылает строку вида /rem.php&d10=user&d11=pass&d12=job=stopped и т.д
Наверняка и ответ должен быть в этом плане.
Jupiter Прога ничем не криптована. Есть тока бэйс64. Дело в том, что ида жутко тормозит. Прога не маленькая и размер тока бсс - 160 метров! А бсс - пустая(нах надо?).Так что пока в ольке. Но тут трабла не в этом. Код если и дописывается, то узнать без валидного ключа как? А проца проверки имеет вид свитча. Где 0 - проверка руль, 2 - нет коннекта, 1 - проверка бэд.




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 18 сентября 2006 09:14
· Личное сообщение · #7

stahh
ну во-первых, в IDA можно явно задавать что грузить, а что нет.
к тому же IDA, в отличие от OllyDbg, показывает граф со всеми в т.ч. "глубокими" обращениями к выбранной функции. поэтому можешь кинуть файл в иду и идти спать. к утру она всё разберёт (не забудь применить сигны, если известен HLL)
а уж кэйсы с идой проще разбирать

[HEX]
а интернет активация поидее почти ничем не отличается от обычной регистрации (метод передачи вводимой информации в процедуру проверки регистрации разная и все)
согласен

-----
EnJoy!





Ранг: 104.1 (ветеран)
Активность: 0.070
Статус: Участник
искатель истЕны

Создано: 18 сентября 2006 09:52 · Поправил: Paxan
· Личное сообщение · #8

stahh
гг. расскажу тебе один секрет, распакуй прогу статик унпакером (к примеру др.головы). размер её будет около 6 метров. в base64 там запрятаны тока строки.




Ранг: 221.8 (наставник)
Активность: 0.150
Статус: Участник

Создано: 18 сентября 2006 13:08
· Личное сообщение · #9

stahh
у нас такое чуство что мы смотрим одну и туже прогу. (вы получили ее от одного хэкера) и прога запакована аспаком?




Ранг: 127.3 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 18 сентября 2006 23:14
· Личное сообщение · #10

Red Bar0n Aспак 2.12 . Можешь в личку написать, если надо.
Paxan Ессно я ее распачил анпаком от доктора. Но иде пох. Задаешь строку на поиск, и она бсску полчаса шуршит. Да и плохо я с идой знаком. Надо Криса перечитать.

Короч, разобрал я проверку полностью. На форме есть таймер, который постоянно работает(нах надо?). Этот таймер создает поток. В этом потоке идет проверка. В бейс 64 зашифрованы строки запроса. Сначала идет запрос на яндекс(или другой сервак, там еще пара линков забита). Ожидается ответ 200 ОК. Если коннекта нет, то в память помещается строка ServerError:.... Потом посылается запрос на свой сервак. Ожидается строка Thats all, сравнивается с ответом, а там ошибка.
Чо я тока не пробовал. Таймер можно убить полностью, на работе проге это никак не отражается. Прога висит и тупо ждет активации. Можно еще в пяти или шести местах патчить. Обойти коллы, поменять переходы. Или подставить данные(лучший вариант). Тогда прога говорит, что активация - гуд. Но работать не хочет
То ли я совсем тупой, то ли есть какая-то хитрость.
Да, одна из функций по потоку обозвана TreadWrapper. Это тот враппер? Или это обычная делфовская ф-ция по защите потока?

Ну, какие тут могут быть варианты? Лично мне в голову ничо не приходит.




Ранг: 127.3 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 18 сентября 2006 23:18
· Личное сообщение · #11

Paxan Я чот сразу не догнал про размер. Ты знаешь чо я ломаю? Ты сломал?




Ранг: 104.1 (ветеран)
Активность: 0.070
Статус: Участник
искатель истЕны

Создано: 19 сентября 2006 01:29
· Личное сообщение · #12

stahh знаю, что ты ломаешь и даже знаю кому. Сам я её смотрел где-то часик-другой, с наскока она не взялась на более детальное рассмотрение пока что нет времени. Но прога интересная =)




Ранг: 127.3 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 20 сентября 2006 01:51
· Личное сообщение · #13

Paxan Я вообщето не для кого не ломаю. Чела, который мне прислал линк на прогу, - я не знаю. А прога действительно интересная. И работает. Тока не у меня Я с ней парюсь уже неделю. Сходу тока активацию отключил. Дело в том, что там проверка на серваке и активация вообще не должны проходит. Эта ветка кода должна отключаться. Я смотрел старую версию.
Вообще-то кой-чего нарыл. Линки уже перебирает. А дальше - швах. Если будут новостя - сообщай. Хотя, если у тя заказ Я если сломаю - выложу на варезник.




Ранг: 221.8 (наставник)
Активность: 0.150
Статус: Участник

Создано: 20 сентября 2006 02:40
· Личное сообщение · #14

stahh пишет:
Я если сломаю - выложу на варезник.

а вот этого не надо приведет к наихудшим последствиям для рунета....




Ранг: 104.1 (ветеран)
Активность: 0.070
Статус: Участник
искатель истЕны

Создано: 20 сентября 2006 02:42
· Личное сообщение · #15

stahh
Как чего нарою - сообщу, но пока времени её копать нету. А выкладывать на паблик не стоит, и так в рунете говна хватает, а с помощью проги еще больше вырастит.




Ранг: 328.7 (мудрец), 73thx
Активность: 0.170.01
Статус: Участник

Создано: 20 сентября 2006 12:03
· Личное сообщение · #16

вот еще одна прога с регистрацией в инете - www.aid4mail.com/Aid4Mail_Setup.exe
что интересно
exe-шник -защищен экзекриптором
а dll - отвечающая за регистрацию - аспром видимо из последних версий



Ранг: 153.9 (ветеран)
Активность: 0.120
Статус: Участник
reborn

Создано: 20 сентября 2006 12:24
· Личное сообщение · #17

r99 пишет:
видимо из последних версий

Видимо из тех версий что выкладывали китайцы. ибо щас за моду взяли себе много аффтаров вешать ломаные проты.

-----
~ the Power Of Reversing team ~





Ранг: 127.3 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 20 сентября 2006 23:27
· Личное сообщение · #18

приведет к наихудшим последствиям для рунета May be. У меня с афтаром личные счеты. Лано, посмотрим.
r99 Вот Релееру в личку кинь линк. Пусть он ее в базы касперу отправит.
Paxan Да там хрен чо нароешь. Я проверку разобрал полностью. Можно сделать даже, чтоб обращение к ини, где логин и пас забиты - уходило в никуда. Один хрен прога не работает. Походу, придется переписвыать рабочую ф-цию.




Ранг: 104.1 (ветеран)
Активность: 0.070
Статус: Участник
искатель истЕны

Создано: 20 сентября 2006 23:38
· Личное сообщение · #19

stahh
вполне мб и так. с серванта она возможно получает кусок функи и заменяет текущий или еще какой-нибудь изврат.




Ранг: 127.3 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 21 сентября 2006 23:56
· Личное сообщение · #20

Да. Такое вот почему. Короче прога создает поток. Потрейсил через кернел. Возврат в прогу, и поток убивается. А иногда вызов проходит в другую ветку кернела, но оттуда идет колл в прогу. А там рабочая ф-ция. Не могу отследить почему происходит изменение трассы. Пока трейсю - ничо не происходит. Тока жму Ф9 - прога уходит в новую ветку. Пробовал подниматься по ретам. Поднялся в кернел. А ф-ция, где колл ведет в прогу - ниоткуда. Стек полностью пустой, ни рета, ни в дереве коллов ничо нет. Кто-то сталкивался с такой фигней? Как отследить изменение коллов?
А то уже запарился напрочь.



Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 22 сентября 2006 02:14
· Личное сообщение · #21

stahh пишет:
Стек полностью пустой, ни рета, ни в дереве коллов ничо нет

А там случаем не MFC42(или новее). Очень похоже на одну прогу.




Ранг: 127.3 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 22 сентября 2006 23:07
· Личное сообщение · #22

Нет там MFC нет вообще. Похоже, работает таймер. Там их три штуки. Вроде один и передает чота, после чего происходит активация рабочей ф-ции. А вот как это отследить - не знаю. Через него проходят все оконые вызовы и процедуры. И он постоянно срабатывает. - короче. Но не верю, что низя сломать.




Ранг: 387.4 (мудрец)
Активность: 0.170
Статус: Участник
системщик

Создано: 23 сентября 2006 01:08
· Личное сообщение · #23

stahh
, посмотри с какими аргументами создаётся поток - может он в suspended и потом прододжается из таймера. Или наооборот, тормозится из него. В любом случае, я знаю только несколько вариантов завершения потока:
1) через API - SuspendThread()
2) указание потоку что бы остановился - то есть разблокирование потока через event (synchronization object) или message. А поток делает return.

Найди в Иде окуда вызываются SuspendThread(), SetEvent() и посмотри, потом поставишь breakpoint и проверишь. Да, ещё глянь как блокирутся поток - если через MsgWaitForMultipleObjects() то ещё посмотри SendMessage() и PostMessage(). Короче, посмотри что присходит в теле потока - если у тебя вторая схема, то поток разблокировавшись, достанет кусок данных из очереди/контейнера/переменной и потом сделает return или ExitThread().




Ранг: 127.3 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 23 сентября 2006 23:21
· Личное сообщение · #24

Поток создается в suspended, но и в первій и во второй раз. Так что дело не в этом. Я тоже думал аргументы, но они не меняются. Вот это мне и не понятно. Получается так, первый раз создание потока проходит через кернел и возвращается в таймер. Из таймера идет сразу опять создание потока - и рабочая ф-ция. А потом идет возврат полностью к проце нажатия батона. Походу там MsgWaitForMultipleObjects() и данные достаются, но вот отследить эти данные - не получается. Я ж говорю, что обрабатывается через таймер, да и MsgWaitForMultipleObjects() срабатывает стока раз Буду конечно ковырять, но хз.




Ранг: 387.4 (мудрец)
Активность: 0.170
Статус: Участник
системщик

Создано: 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(), ведёт к смерти этого потока. Отследи в Иде где принимается это решение.




Ранг: 127.3 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 25 сентября 2006 02:23
· Личное сообщение · #26

s0larian Попробую отследить, но хз. Там и сам таймер вызывается по CALL Near EAX. И очень много ф-ций вызыываются так.




Ранг: 387.4 (мудрец)
Активность: 0.170
Статус: Участник
системщик

Создано: 25 сентября 2006 16:16 · Поправил: s0larian
· Личное сообщение · #27

stahh, про регистры: AFAIK VC++ использует ECX для вызовов C++ виртуальных функций. Ну а если EAX... хмм.. а там нету таблички просто в памяти, которая заполняется при иницаилизации? Глянь cross-references в Иде.




Ранг: 127.3 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 25 сентября 2006 23:43
· Личное сообщение · #28

Вот смотри http://www.exelab.ru/f/action=vthread&forum=7&topic=6328
Если чо, я в личку напишу, посоветуюсь. А пока - швах.

Тема закрыта.(по правилам?)


<< . 1 . 2 .
 eXeL@B —› Основной форум —› Активация через инет.
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати