Jak @ 31.03.23В след версии уберу из вызова параметры, гденить внутри потока буду брать
в статике вообще не найти будет, только на лету
конечно добавляй разного рода защиты, не думаю что кто то глубоко ковыряться будет , но все же ...
вообще жду недождусь chatGPT-дизассемблер )))
вот это будет крутяг ... с ассемблера на высокого уровня код в один щелчок...
ладно ковыряться больше времени нет ... не нашел я таймеры ... да и лень уже искать, посмотрел как процы работают ... какие регистры используют ... оч круто компилятор делфи команды использует ... хороший компилятор ...
Спасибо, что ты показал как легко ломается программа без защиты.
Ведь раньше я писал только для себя, соответственно не было никакой защиты.
Мне главное считать правильно и быстро.
А выходит, что если пишешь наружу, надо как-то защищать прогу. И ты это легко показал. Еще раз спасибо!
Правда все эти защиты отнимают милли/микросекунды времени, но ладно, переживем 😀
Jak @ 31.03.23Спасибо, что ты показал как легко ломается программа без защиты.
Пожалуйста 😫🙏🙏💓
Спасибо за прогу
А кто это тут число 30 в регистр xmm0 загружает и для чего)))
Неужели с чем то сравнивать будете, умножая на 1000 мс)
Сломать можно всё, стоимость какая всего этого, взлома, у меня ушло 1.5 часа с перерывами
Цена вопроса ну пусть 5к руб в час, это 100 баксов
Jak, чтобы лучше защищаться необходимо понимать как это работает:
Вот берётся число 30 умножается на 1000 и прибавляется текущий таймер в мс и записывается в память
В отладчике это всё видно что происходит
Лучше тогда к ожидаемому времени привязать код, выполнять его частями или хранить ссылки на функции в массиве и выполнять по происшествии Н секунд, Н тую функцию... Такое уже сложно ломается и распаковывается
c00l0ne @ 31.03.23кто это тут число 30 в регистр xmm0 загружает и для чего)))
я ничего не загружал )) я даже не знаю про этот регистр ))
ты думаешь, везде где есть 30 - это время?
30 там редко? или ты все 30-ки проверил?
в след раз, надо брать задержку 51, а потом можно ее поделить на 2, или так и оставить, пусть будет 51сек.
там много циклов от 0 до 51
c00l0ne @ 31.03.23Сломать можно всё, стоимость какая всего этого, взлома, у меня ушло 1.5 часа с перерывами
С этим полностью согласен, после того как я использую сломанный Windows, Delphi и С++ последней модели, всякие офисы и другие сложные и дорогие штуки.
Я вообще имею много всякого на компе и ни разу не платил этим пиндосам. Хотя согласен, они очень умные. И я их уважаю за это.
Да я это и раньше знал. Защитить ничего нельзя. В 90-х я ломал проги как и ты - одним битом. У меня была своя прога, типа HIEW, я ее сам написал. С дебаггером для 386 асма.
Потом стало сложней. И не интересно, лес, уголь ... продавал. 90е!!!
Часто вспоминаю... Как свое достижение. Я написал, компилятор для С в 89м для процессора КР580ВМ80А, это 8-ми разрядный проц, он не умел умножать плавающие числа, а мне надо было посчитать объем порезанного ствола дерева ))) Т.е. я писал текст на С, а компилятор преобразовывал это в асм-текст.
Про защиту.
Да мне это и не надо. Если бы я хотел защитить, я оставил бы все на своем винте.
Я же готов просто так, без всякой защиты, отдать в люди.
Это общество попросило поставить задержку.
А потом увидел как этим можно воспользоваться, решил немного поиграть, защитить.
Согласись, если бы мне надо было сделать суперзащиту, мне проще ничего никому не давать.
Бля. Выпил вискаря и потянуло на ностальгию )))
.
c00l0ne @ 31.03.23Grinder500, j5 вниз
ты случайно не 100-250 лимит катаешь по нашим заветам ?)
если выигрываешь гив ас тен процент плиз ... а то финансионал ситуэйшн катастрофикал даунстрикейшн ...
Как сказал один космонавт из китайской народной республики.
Гагарин первым полетел в космос.
А в аквариуме разводят рыбу.
Jak @ 31.03.23вискаря
Не болейте,
Jak @ 31.03.23компилятор для С в 89м для процессора КР580ВМ80А
Грац
Сейчас времена другие, gpt 4 пишет компилятор "по приказу" оператора за минуту... Как же всё меняется быстро... 🚀
Пс главное расслабиться и получать нью эксперианс от "пиндосских" технологий, правда там есть и русские и беларусы и украинцы и остальеой весь мир, сливки инженеров программистов ... Гл хф
Технари нынче не в почёте)
c00l0ne @ 31.03.23А кто это тут число 30 в регистр xmm0 загружает и для чего)))
Jak @ 31.03.23ничего не загружал )) я даже не знаю про этот регистр ))
ты думаешь, везде где есть 30 - это время?
30 там редко? или ты все 30-ки проверил?
ну это так работает: вы пишите на высоком уровне
timer = 30
timer *= 1000
if elapsedMilliseconds >timer then
CANCONTINUE
else
WAIT TIMER
а в ассемблере идет низкий уровень,
call GetTickCounter
MOV ds:[elapsedMilliseconds], rax
MOV xmm0,30
MOV xmm1,1000
mul xmm,xmm
cmp xmm0, ds:[elapsedMilliseconds]
ja label1
вот я наткнулся в поисках защиты на этот кусок и подумал что он идеально подходит для защиты )
это я для читателей объясняю
И да, это почему то совсем не использовалось ... я даже подумал что это стратегия защиты такая "ложный след" ... ) лвл 99 мышления) возможно осталось со старой версии... вся защита была в каких то потоках которые сильно замедляли процесс...
Броня v2 пала:
пишите новую ...
Я вообще-то знаю как задержку можно убрать нажатием 3-х кнопок в нужном месте.
А вообще - красавчик
История
Когда-то в 88-м или 89-м делали мы прибор для управления трактором. Этот трактор имел манипулятор, брал дерево, торцевал его (обрезал один конец), прогонял через валы на определенную длину, срезал все ветки, попутно мерил диаметр и считал объем ствола, отмерял сколько надо, отрезал и т.д. по кругу. Длину можно было задавать любую.
Сейчас такие трактора у пиндосов везде, а 30 лет назад их еще не было.
Так вот для такого трактора мы делали приборчик, типа дипломата, который в лесу мог автономно управлять этим монстром, ясно что он был на микропроцессоре. Звали приборчик ПУМА (Пульт Управления Манипулятором Автоматический).
Писал я для него прогу управления на ассемблере. Тогда и понадобился компилятор для С. На асме много не попишешь, все очень медленно. Да и мне надо управлять всякими концевиками, включать/выключать пилу, считать объем, умножать, запоминать и в конце смены выдать объем сколько оператор напилил бревен.
Так вот, для электронщиков я написал типа дизассемблера прогу, можно было подключиться к Пуме, запустить прогу, остановить в любом месте, посмотреть память, регистры, поменять что хочешь, причем не в кодах а прям мнемонику пишешь типа "jmp 125" и команда сама писалась куда надо. В общем удобная штука. А процессор был 8 битный. Восьми!!! Карл!!!
Так я не хотел чтобы ее у меня украли. Поставил защиту. Надо было в течении первых 100 нажатий на клаву (мышек тогда еще не было) нажать Ctrl+D = код 4. Как нажал ^D, код программы менялся и больше не надо это вводить. Про это никто не знал. А если не нажать, то прога на экран давала ошибки, в памяти всякая хрень, короче работать нельзя.
Ушел я в отпуск и забыл сказать про защиту. Прихожу, мне говорят, писец ничего не понятно. Работаем полчаса все хорошо, потом память в Пуме слетает, уже коробку памяти выкинул, заебались паять.
Я говорю, так надо нажать ^D.
Меня чуть не убили.
MaroonFive @ 20.03.23Лика, здравствуйте, я слышал, что Сергей Gipsy любит такие задачи - не могли бы вы, пожалуйста, передать ему такую задачу (просто ваш канал один из самых активных). Просто он говорил - его удивляло, когда он не мог решить подобные математические задачи.
Сразу скажу - что задача совсем не школьная.
Итак - задача Кыргызстанской школьной олимпиады звучала таким образом: https://www.youtube.com/watch?v=daVZuDKI0Q8
Определите количество способов выбрать 25 чисел из целых чисел от 1 до 50 так, чтобы для любых двух выбранных чисел одно не было делителем другого.
Когда я посмотрел её решение - и после этого люди предложили ещё как минимум 2 решения плюс к 512 найденным автором - я не успокоился.Мне абсолютно было непонятно - есть таких способов ещё 30 или их тысячи.
Самостоятельно я решить не мог - и я обратился на форум математиков!!! К моему счастью, задача нашла огромный отклик. Более того - один из них составил программу, заставляющую искать компьютер методом перебора. Другой же математик предлагает, что всё можно даже решить логически.Ответы у них получилось одинаковые. Я скину ссылку на обсуждение на форуме математиков завтра - хотя легко и нагуглить.
Вопрос в том: обычный покерист способен решить это или нет?
вот таким же алгоритмом как в китайский можно эту задачку решить )
составляем дерево и считаем кол-во вариантов ...
разных ...
пример ветви :
число 1 в корне :
след ветви 2 3 4 5 6 7 8 9 10 11 12 13 14 ... 26
проверяем все числа не подходят, значит с 1 у нас нету вариантов доступных само собой
след число 2
след ветви 3 5 7 9 11......
проверка исключит все четные числа
заходит во все четные
3 5 7 9 11 13 15 ... 27
3
5 7 11 13 ........
проверка исключит 9 и 15 т.к. 3 является делителем
и т.д. делаем до глубины в 25 чисел и считаем вариантики ...
после полного цикла, получим заветную цифру
а в видео математик не убедил )
там он когда выборки делает заменами , у него есть гипотеза которую я бы не считал истиной )
он утверждает что только заменой можно новые варианты образовывать , но мы можем так же и добавлением новых чисел и исключениями старых образовывать новые варианты ... вообщем я не пошел бы на уроки к такому мафематику
правильный ответ
код
А теперь вопрос, вот вы приехали на олимпиаду и у Вас есть ручечка, немного в ней пасточки и листочков бумаги пачка:
решите эту задачу)
c00l0ne, чё тут не понятного то
"Карты деньги два ствола"
Китайское гавно
Какая-то хрень в Дельфи.
если написать так:
ff:=39;
maska:=$1FFF;
maska:=maska shl ff;
то в maska $1FFF сдвигается на 39 бит влево и будет $FFF8000000000, все верно
а если так:
ff:=39;
maska:=$1FFF shl ff;
то в maska будет $FFF80. сдвигается всего на 7 бит влево, а надо на 39
и сразу ошибка в расчетах. долго искал эту ошибку
39=32+7
maska - 64бит, комп про это знает, знает, что ответ будет 64бит, но записывает только старшие 32 бита
Jak, самый прикольный дебаг в моей жизни был лет в 16-17...
сижу значит катаю под хп или вин7 в гташку 3 ...
вдруг эта чудная игрушка зацикливается чтоли зависает фризит ...
короче "не играет", персонаж на месте стоит, игра подзависла - но сделала она это вовремя :
потому что я в то время активно "тренировался" и комп был заряжен по полной для отладки софта
softice дебаггер ida дизасм и прочие радости ассемблерной жизни
приостанавливаю работу windowsа: запускаю значит softice(отладчик уровня ядра Windows), цепляюсь к процессу гта3 и что же вижу ?
а там классическое зацикливание ... по какому то условию...
не долго думая выпускаю игру из цикла и вуаля мы снова "грабим убифаем и создаем проблемы копам в три звезды"
до сих пор запомнилось ... SoftIce был топ...
пс а сейчас какое время: есть в паблике исходники winxp и можно плотно заняться изучением их, кастомизить винxp под себя , но годы уже не те... эх молодость ...
Jak,
Jak @ 01.04.23maska:=$1FFF shl ff;
Uint64($1FFF)
Jak @ 01.04.23maska - 64бит, комп про это знает, знает, что ответ будет 64бит
а про числовой параметр он не знает ничего, что это 64бита, он считает что число 32битное, поэтому биты провернутся по кругу и получится сдвиг на 39-32 на 7 порядков ...
Была ошибка, когда в миде флешдро-черви (старшая масть)
Выложил обновление.
Jak, это все мелочи,
главное правильный функционал ...
1) добавить 3 макс (в формулах получаем скуп х2 и свое собранное роялти х2)
2) добавить те поля о которых я говорил , это смещение и пустые руки
3) потоков побольше
пс если мне что то перепадет с обучения и будет задействован ваш софт, половину по праву скину профита...
c00l0ne @ 04.04.23главное правильный функционал ...
1) добавить 3 макс (в формулах получаем скуп х2 и свое собранное роялти х2)
2) добавить те поля о которых я говорил , это смещение и пустые руки
а как ты собираешься отслеживать все изменения, которые будут вносить новые возможности? Например почему добавление скупа -6, лучше скупа -3? Как ты определишь, что один вариант лучше другого? На глаз? Это не серьезно. На мой взгляд, есть только один вариант узнать как влияют те или иные фичи добавляемые в расчет - дать сыграть программе в режиме максимально приближенном к реальному игровому процессу и посмотреть как меняются ее основные показатели глобально.
Сейчас нет ответа на главный вопрос. Если я играю например в позиции 1 из 3 и я выбираю всегда лучший вариант для продолжения, которая предлагает любая программа, то на каких показателях я буду играть? А что если эти показатели будут хуже человеческих? А если они вдруг окажутся хуже человеческих, то какой практический смысл применения любой программы?
В след версии уберу из вызова параметры, гденить внутри потока буду брать
в статике вообще не найти будет, только на лету