#programowanie
03:48…
Koniec EAC bypassera poprzez dodanie kernel drivera

Łączny czas spędzony w godzinach 62:31

Z moja programistyka jest tak ze w sumie robie to z własnych zainteresowań, jako „cel” obrałem prostego bota do gry w która i tak nie gram ale pisząc to wyrwalem już 7banow testując czy „działa”

Tak wiec bot do gry „Albion Online” został napisany, wykorzystując strikte pythona i jego opencv.
Działa gathering surowców, działa prosty „movement” na polowe mapy aby zbierał te surowce, jak i wylogowanie sie gdy waga dojdzie aż postać chodzi wolniej.

Najwiecej jebania było dla mnie z C++ (nie wiem skąd macie do tego cierpliwość ale ten język był dla mnie kompletnie obcy) PVOIDy/bool’e to coś pojebanego…
Ale troche już te pojebanie zrozumiałem.

C++ wykorzystane includy to „driver/hook/memory”
Python „opencv,pillow,pyrect,pywin32,pyautogui i z 20 innych”

Samo napisanie w pythonie stanowilo przyjemność, lecz dla EAC było to wręcz z buta wykrywalne, wygooglowalem jak obejść EAC, nasunęło mi by „dodać sterownik”, jak zobaczyłem możliwość tylko C++ dosłownie mialem koszmar, udało sie znaleźć 1/3 kodu ctrl+v, działało 10 min - ban…
Nienawidziłem nigdy C++ był ten jezyk dla mnie opornie zrozumiały, czytając bibliotekę oraz co i jak odpowiada za funkcje itd. Troszkę mi rozjaśniło sprawę, mogę śmiało napisać ze spędziłem nad samym C++ najwiecej czasu i nerwów aby w ogole zrozumieć co ja robie…

Mimo ze „troche” nauki wyciągnąłem używając C++ to nie wiem czy chce do niego wracać
W pythonie siedzę może rok czasu, pisząc coś sporadycznie i sie ucząc wymyślając swoje własne skrypty to ten jezyk sprawia mi przyjemność, może dla tego ze sporadycznie coś robiłem w lua ok. 2 lat czasu

Chyba następny próg jaki sobie postawie to jakieś crackowanie API, coś przedewszystkim gdzie jest ten python, bo to ze zrozumiałem pare funkcji C++ jakoś nadal nie napawa mnie miłością…

Ale jestem z siebie dumny, ze udało sie coś zrobić, coś co działa, i obchodzi „zabezpieczenia”.
Projekt oczywiście robiłem sam dla siebie, nie gram w gry wiec bot i tak mi sie nie przyda, po prostu byłem ciekaw czy jestem w stanie sie tego podjąć.

Opencv ma naprawdę ciekawe funkcje i widzę w tym duży potencjał, teraz widzę ze trzeba skupić sie na requesrach i pokombinować coś z tym api 😃

Nie wiem na ile jest to niewykrywalne (na jak długo)

Ps. Kiedyś wspomniałem tutaj ze lubie kryptografie i w tym najdłużej siedzę, i tez rozkminiam napisanie własnego kodu ktory bazuje na mojej wymyślonej matematycznej kryptografii, tylko sie zastanawiam jak utrudnić reverse engineering aby nikt nigdy nie mogl tego złamać aby sie dowiedzieć jak to działa, zależało by mi na napisaniu aplikacji ze dostajesz np „(./x#+==„ a po podaniu hasła które obie strony znają masz np słowo „dziewięć”.

Macie jakieś pomysły jak taka inżynierię wsteczna można upierdzielic? Czym to decryptowac ?
ataxbras

@mBank Inżynierię wsteczną można utrudnić, ale nie powstrzymać. Nie da się stworzyć wykonywalnego kodu, który byłby całkowicie nieczytelny algorytmicznie, bo zwyczajnie nie będzie on działał (to problem black-box obfuscation - nie da się tego zrobić i można to udowodnić). Generalnie szukaj hasła code obfuscation - technik jest od groma, odnoszą się do różnych sposobów ukrycia mechanizmu działania poprzez rozbicie kroków na mniejsze, crossowanie danych i wiele innych.

To wszystko utrudnia dekompilację, ale nie może jej uniemożliwić.

Najbezpieczniejsze kryprograficznie narzędzia, to takie, gdzie wiadomo jak to działa, ale u podstaw leży konkretny problem matematyczny, który jest jednokierunkowo trudny, i niezależnie od samego software'u trudnym pozostanie (faktoryzacja liczb pierwszych, znajdowanie punktów na krzywych eliptycznych, problem najkrótszego wektora w siatkach, itd.). Tak generalnie działa każde szyfrowanie. Metoda jest mniej istotna. Poza tym, security by obsucurity to bardzo naiwne podejście z wielu innych przyczyn (choćby audytu rzeczywistej entropii).

mBank

@ataxbras Co do code obfuscation, troche kiedyś tego używałem z ogolnie dostępnych w internecie technik, lecz nigdy nie wydawały mi sie one dość skuteczne dla ludzi którzy mimo wszystko i tak to ogarną, jedne były łatwiejsze do złamania drugie trudniejsze o tyle ze bardziej bym szedł w coś co by mogło czytać z hashu, o ile coś takiego jest wykonalne ale dodając tez hash zawsze bedzie tez łatwiejsza droga do deobfuscate… tak ze zawsze jedno drugie wyklucza.


Wlasnie myślałem podobnie, rozbicie jednej funkcji załóżmy na 4, każda jedna przemielić troche „inaczej”.


Z tym „konkretnym” problemem matematycznym dałeś mi dużo do myślenia, bo tez sporo nad tym swego czasu myslalem..

Krzywe eliptyczne to bardziej myślałem nad NTRU, mimo ze jest OS to troche tez daje do myślenia..

Mówisz o wektorze inicjującym ?


Kurde liczę sie z tym ze jest to dość złożony proces, tj utrata entropii również poprzez atak na w/w przezemnie wektor, to jest dość kontrowersyjne.


No ale dzięki za odpowiedz w każdym bądź razie, będę jeszcze na bank myślał a uważam ze co dwie głowy to nie jedna.


A nad apka krypto mysle długi czas i częściowo jakis tam kod poczatkowy z swoim ciągiem mam napisany (wzór matematyczny odpowiadający za to co piszesz) jeszcze nie testowałem inputu, jak by to wychodziło, bo bodajże stanąłem na literze H, jest to dość popierdolone abym mogl to wytłumaczyć pisząc to tak o, kiedyś może założę o tym wątek ktory zapewnię bedzie miał kilkanascie postów bo nie idzie tego opisać z buta 😂

mBank

Ps. U mnie troche to wyglada nad tym co sam wymyśliłem jak szachownica polibiusza oraz VIC. Tak w skrócie mogę to uproscic

ataxbras

@mBank Techniki obfuskacji kodu z zasady nie są skuteczne. Niezależnie jak bardzo poszatkujesz swój kod, dodasz funkcje mieszające, to w końcu i tak dostajesz kod wykonywalny. Dekompilacja nigdy nie daje wyniku 1:1, ale nie o to też chodzi - bardziej chodzi o algorytm, a ten wyjmiesz z kodu zawsze (bo maszyna musi go móc wykonać).

Obfuskacja w zasadzie służy jedynie opóźnieniu odczytu algorytmu najprostszymi metodami.

Jest możliwe pójście dalej - nauczenie modelu AI na zbiorze zmutowanych programów wykonujących jakiś algorytm. Zmutowanych, to znaczy takich, gdzie efekt jest ten sam, ale układ funkcji nieco inny. Modele AI są deterministyczne, ale przy odrobinie zabawy można zapewnić im untractability. Wtenczas, sam model "wytwarza" skompilowany output, ale poza metodami statystycznymi nie sposób dociec formy wejściowej. Dalej jest to tylko działanie na przeczekanie, bo finalnie algorytm i tak będzie odczytywalny z kodu.

Można iść jeszcze dalej i zastosować szyfrowanie homomorficzne. Wtenczas samo przetwarzanie jest ukryte. I tutaj mamy już coś w miarę mocnego. Jedynym minusem jest krok wejściowy szyfrowania i odpowiednie jego zabezpieczenie.


Krzywe eliptyczne to bardziej myślałem nad NTRU, mimo ze jest OS to troche tez daje do myślenia..

Mówisz o wektorze inicjującym ?

NTRU bazuje na kratach (nie cierpię Polskiego matematycznego - po angielsku lattice). W lattice problemem jednokierunkowym jest znalezienie najkrótszego wektora (shortest vector problem - SVP), a nie krzywe eliptyczne.


Kurde liczę sie z tym ze jest to dość złożony proces, tj utrata entropii również poprzez atak na w/w przezemnie wektor, to jest dość kontrowersyjne.

Ponieważ powyżej ustaliliśmy, że nie chodzi mi o wektor inicjujący, to powinniśmy ustalić, czy wiemy o czym rozmawiamy. Jednak, jeśli masz jakiś wektor inicjujący, którego odczyt może ujawnić tekst otwarty, to już jesteś w czarnej d***.


No ale dzięki za odpowiedz w każdym bądź razie, będę jeszcze na bank myślał a uważam ze co dwie głowy to nie jedna.

Mogę Ci pewne rzeczy podpowiedzieć, bo mam kilkuletni romans z opiniowaniem algorytmów kryptograficznych pod kątem quantum resistance. Niemniej, muszę być pewny, że obaj operujemy w tym samym zakresie wiedzy.


A nad apka krypto mysle długi czas i częściowo jakis tam kod poczatkowy z swoim ciągiem mam napisany (wzór matematyczny odpowiadający za to co piszesz) jeszcze nie testowałem inputu, jak by to wychodziło, bo bodajże stanąłem na literze H, jest to dość popierdolone abym mogl to wytłumaczyć pisząc to tak o, kiedyś może założę o tym wątek ktory zapewnię bedzie miał kilkanascie postów bo nie idzie tego opisać z buta

Jeśli Twój algorytm jest zależny od znaków alfabetu to na samym wstępie lądujesz z entropią w pobliżu niemieckiej Enigmy, czyli łamanie tego na farmie GPU to najwyżej sekundy. Chyba, że będzie one time pad, ale do tego wystarczy porządny generator liczb losowych.


Ps. U mnie troche to wyglada nad tym co sam wymyśliłem jak szachownica polibiusza oraz VIC. Tak w skrócie mogę to uproscic

No właśnie - jak powyżej. Tego typu szyfry są dobre, jeśli istnieje bezpieczny kanał dla klucza, bo są to metody symetryczne. Nawet wtedy jednak, entropia dla VIC to 2^38, czyli nic w dzisiejszych czasach. I nawet jak pomieszasz bardziej to poza 2^40 nie wyjdziesz. Nie wspomnę o komputerach kwantowych, które to zjedzą w ułamku sekundy.

Zaloguj się aby komentować