How to improve this Anticheat System?

General FreeBASIC programming questions.
Post Reply
mrminecrafttnt
Posts: 131
Joined: Feb 11, 2013 12:23

How to improve this Anticheat System?

Post by mrminecrafttnt »

Hi guys, i've created this anticheatsystem an make it a little bit resilient for some attacks with cheatengine but this is not enough for my conditions any links or tipps to improve this? :)
Special Idea: adress randomisation with hash checks for for modification detection and make this resilient but i dont know how to realize this :)
Thanks!

Code: Select all

randomize timer
type ll_integer
    value1 as integer
    key1 as integer
    hash as integer
    declare sub set (value as integer)
    declare function get as integer
end type

sub ll_integer.set (value as integer)
    'print "S";
    key1 = int(rnd*99999999999999)
    value1 = value xor key1
    hash = value1+key1
end sub

function ll_integer.get as integer
    'print "G";
    if hash = value1 xor key1 then
        set value1 xor key1
        return value1 xor key1
    end if
end function



type ac_integer
    value1 as ll_integer
    value2 as ll_integer
    value3 as ll_integer
    key1 as ll_integer
    key2 as ll_integer
    key3 as ll_integer
    dic as ll_integer
    lhash as ll_integer
    invailedflag as integer
    declare sub set (value as integer) 
    declare function get as integer
end type

sub ac_integer.set (value as integer) 
    
    
    PRINT "SET ( adress=";HEX(@THIS);",value="+str(value);" )"
    if invailedflag = 0 then
        key1.set int(rnd*999999999)
        key2.set int(rnd*999999999)
        key3.set int(rnd*999999999)
        value1.set value xor key1.get
        value2.set value xor key2.get
        value3.set value xor key3.get
        lhash.set value * 2
        dic.set key1.get+key2.get+key3.get+value1.get+value2.get+value3.get+lhash.get
    end if
    
end sub

function ac_integer.get as integer
    locate csrlin+1,1
    PRINT "GET ( adress=";HEX(@THIS);" )"
    if invailedflag = 0 then
        if dic.get = key1.get+key2.get+key3.get+value1.get+value2.get+value3.get+lhash.get then
            return value1.get xor key1.get
        else
            Print " Recoverymode (";HEX(@THIS);")"
            if (value1.get xor key1.get) = (value2.get xor key2.get) then Print "Use Method 1":set value1.get xor key1.get : return value1.get xor key1.get
            if (value1.get xor key1.get) = (value3.get xor key3.get) then Print "Use Method 2":set value1.get xor key1.get : return value1.get xor key1.get
            if (value2.get xor key2.get) = (value3.get xor key3.get) then Print "Use Method 3":set value2.get xor key2.get : return value2.get xor key2.get
            Print " Recovery failed set data to invailed ( adress=";HEX(@THIS);" )"
            invailedflag =  1
            set 0
            return 0
        end if
    else
        return 0
    end if
end function


'example
dim as ac_integer test
test.set 12345
do
print ""+str(test.get)
sleep 500
loop
Hedgehog
Posts: 3
Joined: Sep 30, 2022 17:45

membership recant

Post by Hedgehog »

etgjietbjkfgmbmfdv;lkrighitjgigjldfl;fl;kglfdkglsfkhjgfmlf;dkglkflkgl;dfhkjgkljl;kg4l,gmhklnhtklnl
Last edited by Hedgehog on Apr 15, 2023 19:18, edited 2 times in total.
mrminecrafttnt
Posts: 131
Joined: Feb 11, 2013 12:23

Re: How to improve this Anticheat System?

Post by mrminecrafttnt »

Hedgehog wrote: Oct 21, 2022 19:26 Hi mrminecrafttnt
'
code analysis to know what your code is for:
'
take a look at this:

Code: Select all

'
dim shared as uinteger f01,f02,code1
declare sub w_(a as ubyte)    :declare sub mk(k0 as ubyte) :declare sub txt()
dim shared as integer f0(255),f0b(255),f0c(255)
dim shared as string PCN
'
type ll_integer
    dim as LongInt code1,key1,hash
    declare sub set (value as integer)
    declare function get as integer
end type
'
sub ll_integer.set (value as integer)      'test.set 12345
    key1   = int(rnd*99999999999999)
    code1 = value xor key1
    'hash   = value1+key1
end sub
'
function ll_integer.get as integer          'str(test.get)
        'if hash = value1 xor key1
        set code1 xor key1
        ? "code1:";code1;" xor key1:";key1;" = ";code1 xor key1 ;" (=decode)"
        return code1 xor key1              'decoder
end function
'
dim as ll_integer test
? "press F1  ....(F2)"
test.set 12345
'
do
    PCN = str(test.get) :?
    do:mk 59:mk 60 :loop until f0(59) or f0(60): f0(59)=0
    if f0(60) then txt :f0(60)=0 :endif
loop
'
sub w_(a as ubyte):do:mk(a):loop until f0(a)  :end sub 
sub mk(k0 as ubyte)
    if f0b(k0)=0 and MULTIKEY(k0)   then f0(k0)=not(f0(k0)):f0b(k0)=true:f0c(k0)+=1:endif
    if f0b(k0)   and MULTIKEY(k0)=0 then f0b(k0)=0 :endif 
end sub
sub txt()
    ? "chuck.summer@mail.com:"
    ? "Any file can be coded (nobody can use this file :it is locked/coded"
    ? "Use the key to decode this file :(unlock/decode the file)"
end sub
'
'PCN
All right i am working on it :)
Post Reply