Пилю программку по обсчёту китайского покера

22
Статистика
Статистика
22
Статистика темы
  • Популярность
    Топ-309
  • Постов
    2,261
  • Просмотров
    173,606
  • Подписок
    22
  • Карма автора
    -45
1 102 103 104 105 114
  • В след версии уберу из вызова параметры, гденить внутри потока буду брать

    в статике вообще не найти будет, только на лету

    Ответить Цитировать
    246/314
    + 0
  • Jak @ 31.03.23 

    В след версии уберу из вызова параметры, гденить внутри потока буду брать

    в статике вообще не найти будет, только на лету

    конечно добавляй разного рода защиты, не думаю что кто то глубоко ковыряться будет , но все же ... 

    вообще жду недождусь chatGPT-дизассемблер ))) 

    вот это будет крутяг ... с ассемблера на высокого уровня код в один щелчок... 

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

    Ответить Цитировать
    746/882
    + 1
  • Спасибо, что ты показал как легко ломается программа без защиты.

    Ведь раньше я писал только для себя, соответственно не было никакой защиты.

    Мне главное считать правильно и быстро.

    А выходит, что если пишешь наружу, надо как-то защищать прогу. И ты это легко показал. Еще раз спасибо!

    Правда все эти защиты отнимают милли/микросекунды времени, но ладно, переживем 😀

    Ответить Цитировать
    247/314
    + 0
  • Jak @ 31.03.23 

    Спасибо, что ты показал как легко ломается программа без защиты.

    Пожалуйста 😫🙏🙏💓

    Спасибо за прогу

    А кто это тут число 30 в регистр xmm0 загружает и для чего))) 

    Неужели с чем то сравнивать будете, умножая на 1000 мс) 

    Сломать можно всё, стоимость какая всего этого, взлома, у меня ушло 1.5 часа с перерывами

    Цена вопроса ну пусть 5к руб в час, это 100 баксов

    Ответить Цитировать
    747/882
    + 0
  • Jak, чтобы лучше защищаться необходимо понимать как это работает:

    Вот берётся число 30 умножается на 1000 и прибавляется текущий таймер в мс и записывается в память 

    В отладчике это всё видно что происходит

    Лучше тогда к ожидаемому времени привязать код, выполнять его частями или хранить ссылки на функции в массиве и выполнять по происшествии Н секунд, Н тую функцию... Такое уже сложно ломается и распаковывается

    Ответить Цитировать
    748/882
    + 0
  • 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-ми разрядный проц, он не умел умножать плавающие числа, а мне надо было посчитать объем порезанного ствола дерева ))) Т.е. я писал текст на С, а компилятор преобразовывал это в асм-текст.

    Про защиту.

    Да мне это и не надо. Если бы я хотел защитить, я оставил бы все на своем винте.

    Я же готов просто так, без всякой защиты, отдать в люди.

    Это общество попросило поставить задержку.

    А потом увидел как этим можно воспользоваться, решил немного поиграть, защитить.

     

    Согласись, если бы мне надо было сделать суперзащиту, мне проще ничего никому не давать.

     

    Бля. Выпил вискаря и потянуло на ностальгию )))

    Сообщение отредактировал Jak - 31.3.2023, 20:52
    Ответить Цитировать
    248/314
    + 0
  • .

    Ответить Цитировать
    249/314
    + 0
  • c00l0ne @ 31.03.23 

    Grinder500, j5 вниз

    ты случайно не 100-250 лимит катаешь по нашим заветам ?) 

    если выигрываешь гив ас тен процент плиз ... а то финансионал ситуэйшн катастрофикал даунстрикейшн ...

    Как сказал один космонавт из китайской народной республики.

    Гагарин первым полетел в космос.

    А в аквариуме разводят рыбу.

    Ответить Цитировать
    5/6
    + 0
  • Jak @ 31.03.23 

    вискаря

    Не болейте, 

    Jak @ 31.03.23 

    компилятор для С в 89м для процессора КР580ВМ80А

    Грац

    Сейчас времена другие, gpt 4 пишет компилятор "по приказу" оператора за минуту... Как же всё меняется быстро... 🚀

    Пс главное расслабиться и получать нью эксперианс от "пиндосских" технологий,  правда там есть и русские и беларусы и украинцы и остальеой весь мир, сливки инженеров программистов ... Гл хф

    Технари нынче не в почёте)

    Ответить Цитировать
    749/882
    + 0
  • 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 пала: 

    пишите новую ... 

    Сообщение отредактировал c00l0ne - 31.3.2023, 23:33
    Ответить Цитировать
    750/882
    + 0
  • Я вообще-то знаю как задержку можно убрать нажатием 3-х кнопок     в нужном месте.

     

    А вообще - красавчик  

     

    История

    Когда-то в 88-м или 89-м делали мы прибор для управления трактором. Этот трактор имел манипулятор, брал дерево, торцевал его (обрезал один конец), прогонял через валы на определенную длину, срезал все ветки, попутно мерил диаметр и считал объем ствола, отмерял сколько надо, отрезал и т.д. по кругу. Длину можно было задавать любую. 

    Сейчас такие трактора у пиндосов везде, а 30 лет назад их еще не было. 

    Так вот для такого трактора мы делали приборчик, типа дипломата, который в лесу мог автономно управлять этим монстром, ясно что он был на микропроцессоре. Звали приборчик ПУМА (Пульт Управления Манипулятором Автоматический).

    Писал я для него прогу управления на ассемблере. Тогда и понадобился компилятор для С. На асме много не попишешь, все очень медленно. Да и мне надо управлять всякими концевиками, включать/выключать пилу, считать объем, умножать, запоминать и в конце смены выдать объем сколько оператор напилил бревен.

    Так вот, для электронщиков я написал типа дизассемблера прогу, можно было подключиться к Пуме, запустить прогу, остановить в любом месте, посмотреть память, регистры, поменять что хочешь, причем не в кодах а прям мнемонику пишешь типа "jmp 125" и команда сама писалась куда надо. В общем удобная штука. А процессор был 8 битный. Восьми!!! Карл!!!

    Так я не хотел чтобы ее у меня украли. Поставил защиту. Надо было в течении первых 100 нажатий на клаву (мышек тогда еще не было) нажать Ctrl+D = код 4. Как нажал ^D, код программы менялся и больше не надо это вводить. Про это никто не знал. А если не нажать, то прога на экран давала ошибки, в памяти всякая хрень, короче работать нельзя.

    Ушел я в отпуск и забыл сказать про защиту. Прихожу, мне говорят, писец ничего не понятно. Работаем полчаса все хорошо, потом память в Пуме слетает, уже коробку памяти выкинул, заебались паять.

    Я говорю, так надо нажать ^D.  

    Меня чуть не убили.

    Ответить Цитировать
    250/314
    + 0
  • Grinder500 @ 31.03.23 

    Гагарин первым полетел в космос.

    А в аквариуме разводят рыбу

    ничего не понятно, но очень интересно ...

     

    Jak @ 01.04.23 

    Я говорю, так надо нажать ^D. 

    могли бы и додуматься )

    Ответить Цитировать
    751/882
    + 0
  • 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 чисел и считаем вариантики ...

     

    после полного цикла, получим заветную цифру 

    а в видео математик не убедил ) 

    там он когда выборки делает заменами , у него есть гипотеза которую я бы не считал истиной ) 

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

     

    правильный ответ

    код

     

     

     

     

     

    Ответить Цитировать
    752/882
    + 0
  • А теперь вопрос, вот вы приехали на олимпиаду и у Вас есть ручечка, немного в ней пасточки и листочков бумаги пачка: 

    решите эту задачу)

    Ответить Цитировать
    753/882
    + 0
  • c00l0ne, чё тут не понятного то 

    "Карты деньги два ствола"

    Китайское гавно

    Ответить Цитировать
    6/6
    + 0
  • Какая-то хрень в Дельфи.

     

    если написать так:

    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 бита

    Ответить Цитировать
    251/314
    + 0
  • Jak, самый прикольный дебаг в моей жизни был лет в 16-17... 

    сижу значит катаю под хп или вин7 в гташку 3 ... 

    вдруг эта чудная игрушка зацикливается чтоли зависает фризит ... 

    короче "не играет", персонаж на месте стоит, игра подзависла - но сделала она это вовремя : 

    потому что я в то время активно "тренировался" и комп был заряжен по полной для отладки софта 

    softice дебаггер ida дизасм и прочие радости ассемблерной жизни 

     

    приостанавливаю работу windowsа: запускаю значит softice(отладчик уровня ядра Windows), цепляюсь к процессу гта3 и что же вижу ?

      а там классическое зацикливание ... по какому то условию... 

    не долго думая выпускаю игру из цикла и вуаля мы снова "грабим убифаем и создаем проблемы копам в три звезды" 

    до сих пор запомнилось ... SoftIce был топ...

    пс а сейчас какое время: есть в паблике исходники winxp и можно плотно заняться изучением их, кастомизить винxp под себя , но годы уже не те... эх молодость ... 

     

    Jak

    Jak @ 01.04.23 

    maska:=$1FFF shl ff;

     

    Uint64($1FFF)

    Jak @ 01.04.23 

    maska - 64бит, комп про это знает, знает, что ответ будет 64бит

    а про числовой параметр он не знает ничего, что это 64бита, он считает что число 32битное, поэтому биты провернутся по кругу и получится сдвиг на 39-32 на 7 порядков ...

    Сообщение отредактировал c00l0ne - 1.4.2023, 23:14
    Ответить Цитировать
    754/882
    + 0
  • Была ошибка, когда в миде флешдро-черви (старшая масть)

    Выложил обновление.

    Ответить Цитировать
    252/314
    + 0
  • Jak, это все мелочи, 

    главное правильный функционал ... 

    1) добавить 3 макс (в формулах получаем скуп х2 и свое собранное роялти х2)

    2) добавить те поля о которых я говорил , это смещение и пустые руки  

    3) потоков побольше

     

    пс если мне что то перепадет с обучения и будет задействован ваш софт, половину по праву скину профита...

    Ответить Цитировать
    755/882
    + 0
  • c00l0ne @ 04.04.23 

    главное правильный функционал ... 

    1) добавить 3 макс (в формулах получаем скуп х2 и свое собранное роялти х2)

    2) добавить те поля о которых я говорил , это смещение и пустые руки  

    а как ты собираешься отслеживать все изменения, которые будут  вносить новые возможности? Например почему добавление скупа -6, лучше скупа -3? Как ты определишь, что один вариант лучше другого? На глаз? Это не серьезно. На мой взгляд, есть только один вариант узнать как влияют те или иные фичи добавляемые в расчет - дать сыграть программе в режиме максимально приближенном к реальному игровому процессу и посмотреть как меняются ее основные показатели глобально. 

     

    Сейчас нет ответа на главный вопрос. Если я играю например в позиции 1 из 3 и я выбираю всегда лучший вариант для продолжения, которая предлагает любая программа, то на каких показателях я буду играть? А что если эти показатели будут хуже человеческих? А если они вдруг окажутся  хуже человеческих, то какой практический смысл применения любой программы?

    Ответить Цитировать
    30/35
    + 1
1 102 103 104 105 114
1 человек читает эту тему (1 гость):
Зачем регистрироваться на GipsyTeam?
  • Вы сможете оставлять комментарии, оценивать посты, участвовать в дискуссиях и повышать свой уровень игры.
  • Если вы предпочитаете четырехцветную колоду и хотите отключить анимацию аватаров, эти возможности будут в настройках профиля.
  • Вам станут доступны закладки, бекинг и другие удобные инструменты сайта.
  • На каждой странице будет видно, где появились новые посты и комментарии.
  • Если вы зарегистрированы в покер-румах через GipsyTeam, вы получите статистику рейка, бонусные очки для покупок в магазине, эксклюзивные акции и расширенную поддержку.