C# - Hack

06/14/2013 14:57 X3enox#1
Hi,

habe gerade mal ein nützliches Tutorial gefunden, welches ich auch befolgt habe und mir einen Test-InvHack machen wollte.

Program.cs:

Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using WindowsFormsApplication1;

namespace 
{
    static class Program
    {
        /// <summary>
        /// Der Haupteinstiegspunkt für die Anwendung.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}
Form1.cs:

Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Diagnostics;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        [DllImport("kernel32.dll", SetLastError = true)]
        static extern bool WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, byte[] lpBuffer, uint nSize, out int lpNumberOfBytesWritten);
        [DllImport("kernel32.dll")]
        public static extern IntPtr OpenProcess(int dwDesiredAccess, bool bInheritHandle, int dwProcessId);

        public Form1()
        {
            InitializeComponent();
        }

        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            IntPtr Addr = (IntPtr)0x34239FD7;
            if ((string)listBox1.SelectedItem == "AAA12GL")
            {
                WriteIntegr(Addr, 7101);
            }
            
        }

        private void WriteIntegr(IntPtr Address, int Value)
        {
            var array = BitConverter.GetBytes(Value);
            int bytesWritten;
            int WolfId = Process.GetProcessesByName("Wolfteam.bin")[0].Id;
            IntPtr hProc = OpenProcess([U][B]ADRESSE[/B][/U], false, WolfId);
            WriteProcessMemory(hProc, Address, array, (uint)array.Length, out bytesWritten);
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
    }
}
So, nur funktioniert das ganze nicht bzw. kann auch gar nicht funktionieren, da mir die ProcessID fehlt.
Für Softnyx lautet diese ja anscheinend 0x1F0FF.
Und für AERIA DE? Da einfach nach dem Prozess in CE schauen und die Nummer da einbauen?

Und btw, kann der Hack überhaupt in diesem Zustand laufen?
06/14/2013 16:35 C0RE'#2
Mach das am besten in Visual Basic.
dazu brauchst du auch nur WriteInteger("Wolfteam.bin","Adresse","Value","Byt e")
Das machst du in nen Timer und fertig!
06/14/2013 16:53 X3enox#3
Ja, aber brauche ich noch die ProcessID?
Also das was da fett markiert ist.
Und hast du zufällig die für DE? Wäre dir dankbar.

Edit: Fehler 1 "WriteInteger" wurde nicht deklariert. Auf das Objekt kann aufgrund seiner Schutzstufe möglicherweise nicht zugegriffen werden.
Code:
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        WriteInteger("wolfteam.bin", "&34398900", "3")
    End Sub
End Class
06/14/2013 20:54 C0RE'#4
Quote:
Originally Posted by X3enox View Post
Ja, aber brauche ich noch die ProcessID?
Also das was da fett markiert ist.
Und hast du zufällig die für DE? Wäre dir dankbar.

Edit: Fehler 1 "WriteInteger" wurde nicht deklariert. Auf das Objekt kann aufgrund seiner Schutzstufe möglicherweise nicht zugegriffen werden.
Code:
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        WriteInteger("wolfteam.bin", "&34398900", "3")
    End Sub
End Class

Du brauchst die WriteMemory Class. -> Google
06/14/2013 22:38 3DProgrammer#5
I will explain it to you, 0x1F0FF is the memory access rights which means MEMORY ALL ACCESS.
The ProcessID which you need is here:
Quote:
int WolfId = Process.GetProcessesByName("Wolfteam.bin")[0].Id;
But that should work, i don't know why you want to edit it, you just need an address and you are done.

BTW: Your error:

Quote:
Edit: Fehler 1 "WriteInteger" wurde nicht deklariert. Auf das Objekt kann aufgrund seiner Schutzstufe möglicherweise nicht zugegriffen werden.
Is because i wrote the function name wrongly "WriteIntegr" it should be "WriteInteger", also his parameters is wrong if you gonna use my function:
Quote:
WriteIntegr("Wolfteam.bin","Adresse","Value","Byt e")
It should be:
Quote:
WriteIntegr(Address, value)

Final: I have edited it & made it easier, should work.

Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Diagnostics;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        [DllImport("kernel32.dll", SetLastError = true)]
        static extern bool WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, byte[] lpBuffer, uint nSize, out int lpNumberOfBytesWritten);

        public Form1()
        {
            InitializeComponent();
        }

        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            IntPtr Addr = (IntPtr)0x34239FD7;
            if ((string)listBox1.SelectedItem == "AAA12GL")
            {
                WriteInteger(Addr, 7101);
            }
            
        }

        private void WriteInteger(IntPtr Address, int Value)
        {
            var array = BitConverter.GetBytes(Value);
            int bytesWritten;
            IntPtr hProc = Process.GetProcessesByName("Wolfteam.bin")[0].Handle;
            WriteProcessMemory(hProc, Address, array, (uint)array.Length, out bytesWritten);
        }
    }
}
06/15/2013 14:21 X3enox#6
First of all, thank you.

My problem with "WrinteInteger" was this in my VB-Code, not in the C#-Code ^^

I will test both, thanks.


Edit: Hm, es kommt "Failed to open Wolfteam.bin", obwohl es offen ist...als Administrator ausgeführt, erledigt.
06/16/2013 01:10 timi257#7
Und jetzt funktioniert er?
Das ist ja mal ziemlich easy.. :/ :D
06/18/2013 20:21 C0RE'#8
Release doch nicht alles. Umso schnell wird es wieder gepatcht!