Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 10:58

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Byte Variable Problem

Discussion on Byte Variable Problem within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Dec 2009
Posts: 1,622
Received Thanks: 2,070
Byte Variable Problem

Hallo.

Ich schreibe an einem programm, das mit der funktion "WriteASM" einen Byte in eine Bestimmte Addresse schreiben soll.

Dieser Byte, soll aus einer EditBox ausgelesen werden.

In die Editbox soll nun z.B. FD, FE, FC oder irgendein Byte geschrieben werden.

Dann soll WriteASM eben diesen byte so übernehmen und in die Addresse schreiben.

Mein problem ist, dass ich nicht weiß wie ich das anstellen soll :S

Wenn ich es so mache:

Code:
MessageBoxA(0,"Jetzt sollte Combo Beschrieben werden.","Yeah!",MB_ICONINFORMATION);
    int combo = GetDlgItemInt(hwndDlg,IDC_EDIT1,0,0); //Hier sollte der Byte ausgelesen, und in Combo geschrieben werden.

  WriteASM(ADR_COMBO, (DWORD)(PBYTE)combo, 1); //Nach dieser Zeile stürzt der Prozess ab :S
  MessageBoxA(0,"Jetzt sollte Combo Beschrieben sein.","Yeah!",MB_ICONINFORMATION);
Stürzt der Prozess ab.
freehuntx is offline  
Old 12/18/2011, 09:59   #2
 
Dr. Coxxy's Avatar
 
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
GetDlgItemText(...)
wcstoul(...)
writeprocessmemory(...)

siehe msdn

getdlgitemint holt eine dezimalzahl aus der dialogbox, das sind aber hexadezimalzahlen.
musst dir also den text holen, den als hex behandeln und umwandeln, und das dann reinschreiben.
wie deine WriteASM funktion aussieht weiß ich nicht, vermute aber mal, dass damit asm befehle geschrieben werden können und keine einzelnen bytes, dafür solltest du writeprocessmemory oder wenn du im programm bist memcpy benutzen.
Dr. Coxxy is offline  
Old 12/18/2011, 19:07   #3
 
elite*gold: 0
Join Date: Dec 2009
Posts: 1,622
Received Thanks: 2,070
Also in meinem Beispiel, soll eine zahl zwischen 1 und 50 reingeschrieben werden.

Und diese sollen dann auch so als byte beschrieben werden, also 0x50 oder 0x34 etc.

Tut mir leid wenn ich es falsch erklärt habe.

z.B. man schreibt 45 rein.
Dann soll die addresse mit "\x45" beschrieben werden.

Und hier die WriteASM funktion.

Code:
void WriteASM(DWORD dwAddy, DWORD dwASM, int len)
{
    unsigned long Protection;
    VirtualProtect((void*)dwAddy, len, PAGE_EXECUTE_READWRITE, &Protection);
    memcpy((void*)dwAddy, (const void*)dwASM, len);
    VirtualProtect((void*)dwAddy, len, Protection, NULL);
}
freehuntx is offline  
Old 12/18/2011, 19:07   #4
 
elite*gold: 0
Join Date: Feb 2009
Posts: 1,137
Received Thanks: 573
Ein Byte ist eine zahl des bereichs 0..255, und das was du hast ist ein text (string).
trage den byte als byte ein und nicht als string und dann passt das
warfley is offline  
Old 12/18/2011, 19:18   #5
 
elite*gold: 0
Join Date: Dec 2009
Posts: 1,622
Received Thanks: 2,070
Quote:
Originally Posted by warfley View Post
Ein Byte ist eine zahl des bereichs 0..255, und das was du hast ist ein text (string).
trage den byte als byte ein und nicht als string und dann passt das
Das verstehe ich nicht ganz.

Also dass ein Byte in Decimaler(?) sicht 1-255 ist weiß ich.
Und ich habe gemacht, dass die Editbox nur Zahlen annimmt, weil wie gesagt nur ein byte bereich von 1 - 50 eingetragen werden soll.
1-50 in hexdecimaler sicht.
freehuntx is offline  
Old 12/18/2011, 19:31   #6


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,908
Received Thanks: 25,409
Das Problem ist aber, dass GetDlgItemInt die Zahl als Dezimalzahl interpretiert! Hexadezimalzahlen werden nicht erkannt, die Buchstaben werden ignoriert!
MrSm!th is offline  
Old 12/18/2011, 19:39   #7
 
elite*gold: 0
Join Date: Dec 2009
Posts: 1,622
Received Thanks: 2,070
Quote:
Originally Posted by MrSm!th View Post
Das Problem ist aber, dass GetDlgItemInt die Zahl als Dezimalzahl interpretiert! Hexadezimalzahlen werden nicht erkannt, die Buchstaben werden ignoriert!
Das ist schon klar.

12 oder 23 oder 50 ist ja in dem fall schon der byte in hexdecimaler sichtweise.

Es enthält keine Buchstaben, sondern nur 1-50.
Naja Smith du kennst doch in S4 die Combo Addresse.
Als byte hat diese standartmäßig den wert 01.
Und man kann ihn von 01 bis 50 ändern.

Und das möchte ich eben realisieren.
Ich möchte eine art Ingame Hack Panel per dlg box machen, weil d3d lw ist.
freehuntx is offline  
Old 12/18/2011, 23:18   #8


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,908
Received Thanks: 25,409
Nein ich kenne sie nicht.

Quote:
12 oder 23 oder 50 ist ja in dem fall schon der byte in hexdecimaler sichtweise.

Es enthält keine Buchstaben, sondern nur 1-50.
Damit überspringst du aber die ganzen Buchstaben-Zahlen.

Oder meinst du, dass man eine Dezimalzahl eingeben soll? (also sie wird nicht als 0x23, sondern als 23 interpretiert)
Das wäre aber ein Widerspruch, zu deinen bisherigen Posts.
Du sagtest ja, wenn man 50 eingibt, wird 0x50 geschrieben.
Wird es aber eben nicht, sondern 0x32!

Aber das sollte nichts mit deinem Crash zu tun haben. Hast du mal geprüft, ob am Ende dort eine valide Instruction steht? Vielleicht beschädigst du sie, weil du an eine falsche Stelle schreibst.
MrSm!th is offline  
Old 12/18/2011, 23:35   #9
 
elite*gold: 0
Join Date: Feb 2009
Posts: 1,137
Received Thanks: 573
du vertauschst da wohl etwas, 50 in dezimal sind nicht 0x50 in hexa, sondern x32 (3*16+2*1)
warfley is offline  
Old 12/18/2011, 23:39   #10
 
elite*gold: 0
Join Date: Dec 2009
Posts: 1,622
Received Thanks: 2,070
Hmm kann es sein dass ich gerade etwas falsch verstehe?

Also in Cheat Engine habe ich eine Addresse, die den Typ Array of Byte hat.
Dieser ist Standartmässig auf 01.

Wenn ich ihn z.B. auf 10 stelle wird im spiel, die Combo pro attacke mit 10 multipliziert.

wenn ich es auf 45 stelle, wird sie mit 45 multipliziert.

Und es hat ja den typ byte.
freehuntx is offline  
Old 12/19/2011, 09:50   #11
 
xNopex's Avatar
 
elite*gold: 0
Join Date: May 2009
Posts: 827
Received Thanks: 471
Lass die Leute das halt gleich im Zehnersystem in die Editbox eingeben. Das sind wir eh eher gewohnt als das 16er. Der Computer speichert das eh dual. Von daher ist es egal ob du es im 10er, 12er, 16er, 124er System einliest. Dann hast du aber weniger Probleme. Wenn es unbedingt im 16er System sein soll, dann lese den Inhalt der Editbox als String ein und wandle den String z.B. mithilfe des Hornerschemas in eine Zahl zur Basis Zehn um.
xNopex is offline  
Old 12/19/2011, 12:39   #12


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,908
Received Thanks: 25,409
Quote:
Originally Posted by freehuntx View Post
Hmm kann es sein dass ich gerade etwas falsch verstehe?

Also in Cheat Engine habe ich eine Addresse, die den Typ Array of Byte hat.
Dieser ist Standartmässig auf 01.

Wenn ich ihn z.B. auf 10 stelle wird im spiel, die Combo pro attacke mit 10 multipliziert.

wenn ich es auf 45 stelle, wird sie mit 45 multipliziert.

Und es hat ja den typ byte.
Weil CE es dezimal einliest und du übrigens auch.
Wenn man 50 eingibt, wird auch 50 geschrieben und nicht 0x50 und das ist ja auch absolut richtig so.
MrSm!th is offline  
Thanks
1 User
Reply


Similar Threads Similar Threads
Cost of accessing a casted variable vs. assigning the casted variable? (C#)
01/05/2011 - CO2 Programming - 5 Replies
I know that in unmanaged C++, casting is at compile-time, so it's better to avoid the assignment and simply access it for all instances. However, in C#, I have no idea since I'm pretty new to it.
Überprüfen ob Variable Eine Variable ist
10/16/2010 - AutoIt - 26 Replies
Hey leute ich wollte fragen ob/wie man überprüfen kann ob eine Variable eine Variable ist z.b. so $k = 1 $i = $k if $i = VARIABLE Then msgbox(0,'$i ist eine variable!!','') endif PS:Wp releast man nochma TuT (z.b. für metin2??)
Problem error: Subscript used whit non-Array variable "
08/26/2010 - Last Chaos - 1 Replies
hey leute, seitdem mein laptop ein windows update gemacht hat funktioniert der ultra bot nicht. es dann kommt immer die fehlermeldung " error: Subscript used whit non-Array variable " vor diesem update ging der bot noch.
[Problem] Inputbox(GUI) auslesen und als Variable speichern
08/08/2010 - AutoIt - 8 Replies
Hallo, ich bin neu hier und habe ein Problem mit Autoit hier erstmal das Script : #include <ButtonConstants.au3> #include <EditConstants.au3>
Problem with public static byte Authenticate
06/10/2010 - CO2 Private Server - 1 Replies
database.cs line 1498 public static byte Authenticate(string UserName, string Password) { try { MySqlDataAdapter DataAdapter = new MySqlDataAdapter("SELECT * FROM `Accounts` WHERE `AccountID` = '" + UserName + "'", Connection); DataSet DSet = new DataSet(); DataAdapter.Fill(DSet, "Account");



All times are GMT +1. The time now is 10:59.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.