[TuT] Values CE-sicher machen

01/07/2011 18:21 .SaFe#1
Huhu, heute zeige ich euch, wie ihr eure Adressen (Values) für Cheat Engine unzugänglich macht.
Ich zeige es euch hier Anhand eines Labels in dem die Zahlen dargestellt werden. Das ganze ist in C# / VB.NET

VB.NET
C#
Dies ist eine sehr einfache , aber effektive Methode.
Wenn die , die es mit Cheat Engine probieren Glück haben, können sie höchstens den Text des Labels ändern.
Eure Zahl allerdings nicht, weil die von Cheat Engine nicht angezeigt wird.
Dies ist eine super Methode für Spiele-Programmierung für Leben , etc.

MfG
.SaFe
01/08/2011 12:50 bestora#2
man kann das trozdem hacken
man kann den einen wert z.b. 100 (Leben zum beispiel) in 99999 ändern

dann hat man eine viel größere Zahl
01/10/2011 15:43 .SaFe#3
Hast du dir alles durchgelesen ? Scheinbar nicht.
Gut dass du gebannt wurdest.
Sie sind für CE unzugänglich, weil sie "innen" festsitzen.
01/10/2011 16:50 nkkk#4
C# / VB kann man aber sowiesehr einfach decompilieren,
wenn man das ganze mit einer nativ commpilierten sprache macht, kan man auch ganz einfach gucken wo der inhalt des buttons abgespeichert wirdund dann mit ein bischen asm erknntnissen gucken wo de wert abgespeicher wird.
wenn man den code vor naja "unerfahrenen leuten" schützen will ist das sicherlich ganz nützlich.

ganz abgsehen davon das ich von code der sich vor mir versteckt nicht viel halte, ich will schleisslich immer wissen was auf meinem PC passiert xD.
01/10/2011 16:54 Al Kappaccino#5
Erm, das ändert nix dran das du den Wert rausfinden kannst, oder denkst du Endzahl steht in der Adresse auch als "Endzahl"?
01/10/2011 17:28 .SaFe#6
Quote:
Originally Posted by nkkk View Post
C# / VB kann man aber sowiesehr einfach decompilieren,
wenn man das ganze mit einer nativ commpilierten sprache macht, kan man auch ganz einfach gucken wo der inhalt des buttons abgespeichert wirdund dann mit ein bischen asm erknntnissen gucken wo de wert abgespeicher wird.
wenn man den code vor naja "unerfahrenen leuten" schützen will ist das sicherlich ganz nützlich.

ganz abgsehen davon das ich von code der sich vor mir versteckt nicht viel halte, ich will schleisslich immer wissen was auf meinem PC passiert xD.
Es geht ja auch um Cheat Engine und net um Decompiler
01/10/2011 20:08 xNopex#7
Imho wirst du mit dem von dir veröffentlichten Code mit CE nie eine "Zahl finden", weil der GC schon aufgeräumt hat. Die Scope wurde verlassen und sollte der GC aktiv geworden sein, wurde der Speicher ordnungsgemäß gesäubert, nachdem die Funktion verlassen wurde. Speicherst du die Variable jedoch als Member ab, dann sollte sie sich, nach meinem Verständniss, auch an einer Adresse im Speicher befinden und aufspürbar sein. Dabei ist es egal, ob du den Wert direkt zuweist, oder durch unnötige Rechnereien schlussendlich doch wieder zuweist. D.h.:

Quote:
Class Bla
{
private int a;
public void Zack()
{
int b = 5;
int c = 6;
this.a = b+c;
this.label1.Text = this.a.ToString();
}
}
a sollte alles andere als verborgen bleiben. Habe es nicht getestet, nur es ist für mich so logisch. Wenn jemand testen mag und mir das Ergebniss mitteilen mag, wär ich ihm sehr dankbar.

Damit wäre deine Technik, um die Variablen vor CE zu schützen leider nicht erfolgreich. Willst du die Variable dauerhaft verwenden, musst du sie längerfristig speichern. Dein Code verwendet die variable nur innerhalb der Funktion. Deswegen kannst du sie nicht mit CE finden. Sonst schon.
01/10/2011 20:51 MrSm!th#8
Ich habe alles durchgelesen und weiß, dass es Blödsinn ist.

Sowas ist alles andere als "CE-sicher", falls sowas überhaupt geht.
01/10/2011 21:55 -AmA-#9
Quote:
Originally Posted by xNopex View Post
Imho wirst du mit dem von dir veröffentlichten Code mit CE nie eine "Zahl finden", weil der GC schon aufgeräumt hat. Die Scope wurde verlassen und sollte der GC aktiv geworden sein, wurde der Speicher ordnungsgemäß gesäubert, nachdem die Funktion verlassen wurde. Speicherst du die Variable jedoch als Member ab, dann sollte sie sich, nach meinem Verständniss, auch an einer Adresse im Speicher befinden und aufspürbar sein. Dabei ist es egal, ob du den Wert direkt zuweist, oder durch unnötige Rechnereien schlussendlich doch wieder zuweist. D.h.:



a sollte alles andere als verborgen bleiben. Habe es nicht getestet, nur es ist für mich so logisch. Wenn jemand testen mag und mir das Ergebniss mitteilen mag, wär ich ihm sehr dankbar.

Damit wäre deine Technik, um die Variablen vor CE zu schützen leider nicht erfolgreich. Willst du die Variable dauerhaft verwenden, musst du sie längerfristig speichern. Dein Code verwendet die variable nur innerhalb der Funktion. Deswegen kannst du sie nicht mit CE finden. Sonst schon.
this ^

deine variable ist nicht statisch und wird somit nach dem Aufruf der Methode weggeputzt :p
Logisch das du sie in CE nicht findest :D

benutz doch mal das:

Code:
        int anfangszahl = 1234567890;

        private void button1_Click(object sender, EventArgs e)
        {
            int abziehzahl = 5;
            int endzahl;
            endzahl = anfangszahl - abziehzahl;
            label1.Text = endzahl.ToString();
        }
habe die Zahl 1234567890 gewählt weil ich nicht unter 1000 adressen mit dem Inhalt 100 die richtige suchen wollte
01/11/2011 15:19 5769854332#10
Habe vor kurzem was gelesen über die Frage, wie man Games CE-sicher macht. Vielleicht interessierts ja irgendwen.
Es stammt aus der Helpfile von ArtMoney (sowas wie CheatEngine).

Hier ist der Link zur Seite:
Code:
http://www.artmoney.ru/
01/16/2011 14:15 MasterGamer2#11

Ich würds wohl so machen.
01/17/2011 10:05 -AmA-#12
Quote:
Originally Posted by MasterGamer2 View Post

Ich würds wohl so machen.
Für nichts!
Den wenn du die Variable Gold änderst, wird dein
"//TODO: PC des Hackers unbenutzbar machen"
erst ausgeführt wenn du die Variable erhöhst... Sinnlos ;)
Da brauchst du wohl nen Timer der alle x ms die Var überprüft...

btw: spätestens nach dem 1.Fail beim ändern würd ich mit unbekannten Werten arbeiten...
Dabei würde deine Kontroll Variable auch erscheinen ;)