Сейчас на форуме: subword, rtsgreg1989, zds (+9 невидимых) |
eXeL@B —› Основной форум —› Таймер в программе (скрипт AutoIt 3) |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 02 февраля 2008 04:44 · Поправил: Модератор · Личное сообщение · #1 Ссылка: dump.ru/files/o/o352451733/ В общем такая вот порога, весит пол метра... Ограничение у нее следующее: работает 2 минуты, после этого выключается... Вообще программа сама по себе странная, и не ясно как толком ее отлаживать, работает в каком то непонятном, постоянном цикле... Таймер на 2 минуты начинает отсчет сразу после нажатия на СТАРТ, отловить который никак не получается, причем время считается даже если порогу остановить в отладчике... Дело вот в чем, программа работает в цикле и нужные процедуры (участки кода) вызываются через call спомощью переменных, в данной пороге вот тут: 00419088 >|. FF50 08 CALL NEAR DWORD PTR DS:[EAX+8] Т.е. отловить мессаджБок проблемы не составляет, 00425F93 - сюда прыгнет программа через 2 минуты работы... Но вот как двигаться дальше? Как к первоисточнику подняться пока что то не ясно... Если у кого есть время, поглядите что к чему... ----- -=истина где-то рядом=- |
|
Создано: 02 февраля 2008 07:24 · Личное сообщение · #2 У мну енто чудо закрывается сразу и молча (а не через 2 минуты). А под голой Ольгой при запуске кидает месагу (см. аттач), после чего тоже закрываеццо. ЗЫ Под Win 9x. d1b7_01.02.2008_CRACKLAB.rU.tgz - msg.png |
|
Создано: 02 февраля 2008 10:28 · Личное сообщение · #3 Да и запускать не обязательно. Версию достаточно посмотреть: AutoIt v3 Script : 3, 2, 10, 0. ru.wikipedia.org/wiki/AutoIt Есть полная русская дока на оф. сайте. Была бы версия до 3.2.5 скрипт из exe'шника можно было бы декомпилировать самой AutoIt, (ещё с паролем фиг знает как быть). Думаю целесообразно отловить момент открытия оверлеея из exe-шника и дальше смотреть, как движок с ним работает. А ещё GPcH'a спросить нужно, он, наверное, разбирал эту фигню. ----- Всем привет, я вернулся |
|
Создано: 02 февраля 2008 15:21 · Поправил: s2003r · Личное сообщение · #4 |
|
Создано: 02 февраля 2008 19:45 · Личное сообщение · #5 Копать ИМХО надо в сторону 00452F47 50 PUSH EAX
и 0045EFCE 50 PUSH EAX
Таймеры (SetTimer) пробовал удалять (все) - никакого эффекта... Отлаживать, естессно, только в сайсе.. ----- программистом не рождаются - им умирают |
|
Создано: 02 февраля 2008 19:57 · Личное сообщение · #6 |
|
Создано: 02 февраля 2008 20:32 · Личное сообщение · #7 Еще одна фигня: если поставить бряк на EndDialog, то через раз оказывается, что мессага вызывалась из 004260E9 |> \FF75 FC PUSH DWORD PTR SS:[EBP-4] ; /Style
----- программистом не рождаются - им умирают |
|
Создано: 02 февраля 2008 21:02 · Личное сообщение · #8 Я вот что думаю, если есть участок кода, куда прыгает порога через 2 минуты (00425F93) то поидее должен где то присутствовать код, где непосредственно отсчет времени идет... Или вот так сделать, вначале этой процедуры 00425F93 сделать джамп (кудато), так, что б программа продолжила работать. только вот куда делать этот джам, что то пока не ясно... Может в этом направлении покапать стоит? ----- -=истина где-то рядом=- |
|
Создано: 02 февраля 2008 23:08 · Личное сообщение · #9 KingSise пишет: вот что думаю, если есть участок кода, куда прыгает порога через 2 минуты (00425F93) то поидее должен где то присутствовать код, где непосредственно отсчет времени идет... Логично)) Мне вот еще что интересно.. посчитай точное время работы проги. Сдается мну, что это не таймер в прямом смысле этого слова.. У меня прога после нажатия кнопки "Старт" работала 93 секунды... ----- программистом не рождаются - им умирают |
|
Создано: 03 февраля 2008 01:47 · Личное сообщение · #10 |
|
Создано: 03 февраля 2008 02:18 · Личное сообщение · #11 |
|
Создано: 04 февраля 2008 01:42 · Личное сообщение · #12 |
|
Создано: 04 февраля 2008 02:16 · Личное сообщение · #13 |
|
Создано: 04 февраля 2008 02:37 · Личное сообщение · #14 |
|
Создано: 04 февраля 2008 03:52 · Личное сообщение · #15 |
|
Создано: 04 февраля 2008 06:59 · Личное сообщение · #16 |
|
Создано: 04 февраля 2008 09:08 · Личное сообщение · #17 |
|
Создано: 05 февраля 2008 00:24 · Личное сообщение · #18 Ща чуток поглядел.. интересная штука, но ИМХО ток для новичков подходит Движок работает примерно так Функа TimerInit вызывает QueryPerformanceCounter А TimerDiff вызывает QueryPerformanceFrequency QueryPerformanceCounter При этом юзается постоянно выделение динамической памяти Сам интерпретатор статичен, то есть в разных прогах находится по одним и тем же адресам Сравнение If $TIMER_DEMO_DIFF >= 90000 Then работает примерно так Код 00410F07 DC5D F8 FCOMP QWORD PTR SS:[EBP-8] 00410F0A DFE0 FSTSW AX 00410F0C F6C4 41 TEST AH,41 00410F0F 75 C2 JNZ SHORT 00410ED3 ; демка или нет Эта сигнатура по поиску в памяти находит сравнение(этот участок кода что выше) DC5DF8DFE0F6C44175C2 Тобишь ставим бряк QueryPerformanceFrequency и QueryPerformanceCounter После срабатывания бряка на QueryPerformanceCounter Ставим на 00410F07 вот и все, но QueryPerformanceCounter срабатывает еще несколько раз до этого Короче в окне инфо будет следующее при срабатывании бряка на 00410F07 ST=90000.000000000000000 Stack SS:[0089F660]=108358.8584582677 (тут значение может отличатся) И после этого выскочит мессага с историей о демке Как побороть думайте сами %)) А да(бгг) сам AutoIt проверяет наличие отладчика IsDebuggerPresent P. S. Тут самое реальное перекомпиляция плюс можно расширить функционал Все для этого есть (сильно не пинайте я ток учусь %) (посмотрел просто пока качал компиль AutoIt)) ИМХО переименовать надо топик в AutoIt3 ----- ЗЫ: истЕна где-то рядом, Welcome@Google.com |
|
Создано: 06 февраля 2008 06:18 · Личное сообщение · #19 |
|
Создано: 06 февраля 2008 19:29 · Личное сообщение · #20 KingSise пишет: А как ты нашол, что какая функция вызывает? С помощью приватной тулузы - скромное название "универсальный парсер(анализатор) VM`ов" Писался движок для отладчика Рема в качестве дополнительного модуля, но проект канул в лету... Сейчас другой реализуется, какой нетрудно догадаться... Чтобы понять, как этот работает на уровне кода, ИМХО разобрать надо не меньше 3-4 VM`ов самому и без туториалов(наверно загнул сильно, но всеже %)) я еще показал и участок кода как работает IF(!), главное лицо так сказать... тут как я понял, все обсуждали, где и как работает таймер, ну вот я и рассказал как вот еще чуть, но больше не просите! плз. (я против сабжа, тем более, когда это касается жидошекелей) короче че я делал, по быстрому правда(прогу ломать не собирался, просто ради интереса посмотрел) 1. нашел место, где скрипт проинициализируется Это дело происходит по адресу 00406CB7 E806050000 CALL 004071C2 поставить на него бряк Вот я вызвал Memory map(Alt+m) в контекстном меню Appearance->Always on top(чтобы окно Memory map не исчезало) после того как сработает бряк жмем F8 в карте памяти должно появится подсвеченное красным 00E20000 00100000 Priv RW RW 00F20000 00200000 Priv RW RW 01120000 00386000 Priv RW RW Все "скрипт в памяти", теперь юзаем поиск по памяти на предмет наличия вот таких байтов 00015F90(перевернутые 905F0100) У меня находились вот здесь 014707E0 00015F90 Я взял, поменял(пропатчил) их на 00895440(40548900)=9000000=~3 часа И нажал старт, пока я там лазил по хелперу, рассматривал скрипт, короче занимался своими делами, у меня прога проработала больше 9 минут Там время пишется, если че в окне, но теоретически должна больше трех часов работать, можно значение увеличить если надо Вот в принципе и все(с помощью чего нашел все это, выше написал уже)... мне это не надо - я ломаю когда надо ток для себя P. S. Но вот как Vovan666 ее отломал, с удовольствием почитал бы про это... ;) ----- ЗЫ: истЕна где-то рядом, Welcome@Google.com |
|
Создано: 06 февраля 2008 20:21 · Личное сообщение · #21 Ну я ее тоже отломал, впринцепе там действительно просто... Остальные вопросы у меня были как бы уже по скрипту и к данной программе не относятся, на которые ты в принцепе коственно ответил... Вчастности конечно интересовало, как например найти такое: IF GUICTRLREAD($PASS)<> $ENIGMA THEN MSGBOX ----- -=истина где-то рядом=- |
|
Создано: 07 февраля 2008 05:22 · Личное сообщение · #22 KingSise хз. ты как-то спрашиваешь лаконично, получаюццо танцы с бубном и гадания на кофейной гуще знаешь ты уже это или нет… Пиши че сам уже понял, чтоб лишнего не писать. А то напишу, а ты потом скажешь, что знал уже это! Получаеццо для кого писал, для себя что ли… ;( Вот основной цикл движка 00418DB2 XOR EBX,EBX 00418DB4 MOV BYTE PTR DS:[EDI+348],BL 00418DBA JMP SHORT 00418E06 00418DBC CMP BYTE PTR DS:[EDI+348],BL 00418DC2 JNZ SHORT 00418E1C 00418DC4 MOV ESI,EDI ;вот этот CALL 00418C78 общается с GUI ;проги, ловит сообщения и передает их в интерпретатор скриптов 00418DC6 CALL 00418C78 00418DCB XOR ESI,ESI 00418DCD INC ESI 00418DCE CMP EAX,ESI 00418DD0 JE SHORT 00418E10 00418DD2 MOV EAX,EDI 00418DD4 CALL 00418F7B 00418DD9 CMP AL,1 00418DDB JE SHORT 00418E06 00418DDD MOV EAX,DWORD PTR SS:[EBP+8] 00418DE0 INC DWORD PTR SS:[EBP+8] 00418DE3 MOV DWORD PTR DS:[EDI+284],EAX 00418DE9 CALL 00407658 00418DEE CMP EAX,EBX 00418DF0 JNZ SHORT 00418DFA 00418DF2 MOV DWORD PTR DS:[EDI+288],ESI 00418DF8 JMP SHORT 00418E06 00418DFA LEA ECX,DWORD PTR SS:[EBP+8] 00418DFD PUSH ECX 00418DFE PUSH EAX 00418DFF MOV ECX,EDI ;вот этот CALL 00429C2B запускает исполнители команд скрипта в том числе и IF ;каждая команда скрипта проходит через него ;судя по твоим постам, ты где-то рядом был 00418E01 CALL 00429C2B 00418E06 CMP BYTE PTR DS:[EDI+28C],BL 00418E0C JE SHORT 00418DBC Теперь про IF Любой IF(как я заметил, но не экспериментировал) проходит через этот участок кода На один IF может вызываццо два раза(там еще зависит от вызова с какого места) 0040FC9D PUSH EBP 0040FC9E MOV EBP,ESP 0040FCA0 PUSH ECX 0040FCA1 MOV EAX,DWORD PTR DS:[ECX+8] 0040FCA4 DEC EAX 0040FCA5 PUSH ESI 0040FCA6 JE SHORT 0040FD14 0040FCA8 DEC EAX 0040FCA9 JE SHORT 0040FD10 0040FCAB DEC EAX 0040FCAC JE SHORT 0040FD0C 0040FCAE DEC EAX 0040FCAF JE SHORT 0040FCC9 0040FCB1 SUB EAX,5 0040FCB4 JE SHORT 0040FCC0 0040FCB6 DEC EAX 0040FCB7 JNZ SHORT 0040FD08 0040FCB9 MOV EAX,DWORD PTR DS:[ECX] 0040FCBB FILD DWORD PTR DS:[EAX+4] ... 0040FD08 FLDZ 0040FD0A JMP SHORT 0040FD16 0040FD0C FLD QWORD PTR DS:[ECX] 0040FD0E JMP SHORT 0040FD16 0040FD10 FILD QWORD PTR DS:[ECX] 0040FD12 JMP SHORT 0040FD16 0040FD14 FILD DWORD PTR DS:[ECX] 0040FD16 POP ESI 0040FD17 LEAVE 0040FD18 RETN Дальше чуток потресить тебе надо, чтобы понять, что будет дальше и как это делаеццо Короче логика сравнения реализована через сопроцессор(FPU) А вообще я вот не пойму что ты хочешь Если у тебя есть скрипт, ну поменяй как тебе надо (справка, причем ахрененнная на русском там есть) да тупо скомпиль, вот и все KingSise пишет: сделать джамп (кудато), так, что б программа продолжила работать. Патчить логику IF(джампы ставить), ну просто не вариант(!), там все IF`ы через одно место проходят, поменяешь один, другие будут работать не правильно! ЗЫ:ИМХО (если конечно он во всем скрипте один, то можно) Если патчить то тока сорец скрипта в exe, короче копай сам, мне это не интересно... И еще там зомби движок писали, юзают ООП по полной плюс проверки везде, левого кода валом да и вообще мона там сделать так что одни джампы и мусор в коде будет при этом сам компиль С++ это все сделает, гавнапрогеры даже напрягаццо не будут… Там оптимизации никакой, они даже не знают что это такое Это мне напоминает, берет какое-нить чмо пишет прогу на дельфи и юзает паблик алго для шифрования кода Сам делает пару копипастов кода из какого-нить фака по дельфи, кидает кнопочки на форму и компилит - пара десятков минут Потом выкладывает и говорит заламайте, вот банить надо таких умников И вообще логику скриптового языка вкуривать через код, когда есть декомпиль(опенсорс)??? Ну, сам подумай тут что-то не то… ----- ЗЫ: истЕна где-то рядом, Welcome@Google.com |
|
Создано: 07 февраля 2008 10:54 · Личное сообщение · #23 Demon666 пишет: получаюццо танцы с бубном и гадания на кофейной гуще знаешь ты уже это или нет… Эм, я не говорил что то что ты писал, я знаю... Наоборот, заломать получилось именно по твоим советам, убив нафиг QueryPerformanceFrequency. Demon666 пишет: Если у тебя есть скрипт, ну поменяй как тебе надо (справка, причем ахрененнная на русском там есть) да тупо скомпиль, вот и все Оригенала скрипта у меня нет, а выдранный содержит кучу ошибок и (или) не доконца выдирается, перекомпилить его у меня не вышло, сколько не пыталлся... В общем как ты и советовал, буду наверное читать доки и исправлять ошибки из выдранного скрипта... Насчет "IF GUICTRLREAD($PASS)<> $ENIGMA THEN MSGBOX"... Скопилировал 2 файла с одинаковым кодом, но противоположенным условием, различий более 20... Demon666 пишет: Если патчить то тока сорец скрипта в exe Походу это вообще единственный вариант, трэйсить ехе - Demon666 пишет: Сам делает пару копипастов кода из какого-нить фака по дельфи, кидает кнопочки на форму и компилит - пара десятков минут Потом выкладывает и говорит заламайте, вот банить надо таких умников - к чему это ты сказал - не понял. Автором данного чуда я не являюсь, сайт откуда я это качал, сейчас не работает, но если не ошибаюсь, эту порогу за 35 баксов толкают... Demon666 пишет: Ну, сам подумай тут что-то не то… +1 ----- -=истина где-то рядом=- |
|
Создано: 07 февраля 2008 11:33 · Личное сообщение · #24 KingSise пишет: к чему это ты сказал - не понял. Автором данного чуда я не являюсь Не-не, это я не в твою сторону! Просто писаки гавнозащит скрываюццо за возможностями компиляторов при этом не делают ровным счетом ни чего, я ну вот для примера про это http://exelab.ru/f/action=vthread&forum=1&topic=10749&page =0 А люди мучаются потом Так и здесь вся эта путаница и сложность только из-за того, что так компиль сделал Можно создать класс и откомпилить по-разному, будет или чистенький код аж приятно будет или хрен поймешь потом как это вообще работает(вот AutoIt как раз такой случай) KingSise пишет: Оригенала скрипта у меня нет, а выдранный содержит кучу ошибок и (или) не доконца выдирается А понятно Ну, тут как вариант надо смотреть выше, те функи от которых зависит это условие, при этом IF не трогать Там че-то про шифрование было написано, может из-за этого декомпиль не фурычит или версия новая и декомпиль не поддерживает Попробуй если есть возможность старую версию проги отдекомпилить может там будет, то что тебе надо Ну, а так без проги как вилами по воде... ----- ЗЫ: истЕна где-то рядом, Welcome@Google.com |
|
Создано: 07 февраля 2008 17:18 · Личное сообщение · #25 насколько я понял этот АутоИт прога это бот для www.3k.mail.ru/, но у декомпилера есть проблема с рускими буквами, он их не востанавливает, и еще обрезает сам скрипт поэтому нада в нем ставить галку не удалять временные файлы. и в файле с окончанием restore_old1 ,будет весь скрипт, но чтобыего скомпилить нада мусок которым являются русские надписи окультурить |
|
Создано: 07 февраля 2008 23:19 · Личное сообщение · #26 HOMEZ, у меня не получилось перекомпилить, с русскими буквами и обрезанием впринцепе оно понятно, но в с крипте вроди как другие ошибки присутствуют... Новая версия данной пороги, чудок покапал... Закаченный файл: dump.ru/files/o/o137639026/ Пароль установлен: 661378 Чудок покопал, проверка тут: $KEY1= GUICTRLREAD($LOG)
Сейчас читаю доки пока, что б ошибки в скрипте убрать.... З.Ы. Декомпиль работает нормально, крмпилировал примеры самым новым компиляторам, декомпилированный скрипт компилится обратно... А вот в этой пороге какой то мудреный скрипт, хз что там где к чему относится... ----- -=истина где-то рядом=- |
|
Создано: 08 февраля 2008 05:24 · Личное сообщение · #27 |
|
Создано: 08 февраля 2008 16:27 · Личное сообщение · #28 хм.. кхе-кхе, любопытная история получаеццо, чем дальше, тем... KingSise Вообще ты хоть расскажи, скока лет первой демке и вот когда появился этот new, что ты выложил? (сразу после этого топа чтоле?) Значит, смотрю в скрипте строчки подозрительные %)) надодумать качек в нем завелся, сталобыть опасно на сайтег стучиццо! Пытаеццо засранчика подгрузить! Срочно апгрейдю средства безопасности и, и... ну вот и все выскочило предупреждение из файлека 3k.txt Так как некоторые личности стали злоупотреблять демо версией, пришлось создать новую, более жесткую. Запущена версия 0.0.3/2 Если нашли ошибку, сообщайте ICQ... Сталобыть надодумать отсюда и понятно, почему такая опасность взлома возникла! %))(аж прослезился между ног) Но это как оказалось, только было начало.. значит лезу на главную (спосаццо-то надо, нас же предупредили) А там ппц Сайт временно закрыт. Сейчас срочно изучаем причину массового бана. Будем делать новую версию. Зашел на это троецарствие, а там ипать полномаштабный лохотрон плаклъ пацсталом – какие-то картинки продают, смски слать надо, за это жидоманеток дают форум даже есть... неужели стока лохов там тусуеццо %) качать клиент надо почти 50-и метровый, имеет ли смысл ковыряццо когда походу админы лавочку прикрыли... Мож че пропустил, но там явно за 10 минуток не завалить такого зверя Я конечно потом когда пиво пить буду, подробнее посмотрю – но вот так просто тратить время на это у меня желания нет ----- ЗЫ: истЕна где-то рядом, Welcome@Google.com |
|
Создано: 08 февраля 2008 19:24 · Личное сообщение · #29 |
|
Создано: 08 февраля 2008 19:29 · Поправил: KingSise · Личное сообщение · #30 Demon666 пишет: еет ли смысл ковыряццо когда походу админы лавочку прикрыли... Думаю ломать ее смысла не имеет да и не нужно это, как видешь, всех кому автор сего чуда свою "программко" за 35 wmz продал - побанили, если есчо отломанную выложить - будет больше банов, имхо, релизить не стоит... А так, для изучения скрипта - вполне пригодно.... Demon666 пишет: Так как некоторые личности стали злоупотреблять демо версией Это как я понял от сюда: www.wbot.info/3k.txt Гы, лольно.... Интересно, кто ж так демкой злоупотреблять стал, не мы ли? ----- -=истина где-то рядом=- |
. 1 . 2 . >> |
eXeL@B —› Основной форум —› Таймер в программе (скрипт AutoIt 3) |