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