O_O no sabia eso que se podia usar eso independiente form donde estuviera declarada por lo que siempre pensé que para llamar a un fusione X desde un formularios X tenia que estar declarada en un modulo O_O
Bueno uno aprende Cosa nueva todo los dias... he aprendido algo nuevo
Para usar Esa Funcion y llamarla desde Cualquier formulario la tienes que poner en un modulo no tengo mucha experiencia en modulos pero solo cambia el private por public y te quedaria algo asi
Código:
Imports Microsoft Imports Microsoft.Win32 Imports Microsoft.Win32.Registry Arriba de la palabra modulo importas las librerias que usa el ejemplo Module (nombre de tu modulo) Public Function start_Up(ByVal bCrear As Boolean) As String todo el code End Function
Ahora Puedes llamar a la funsion Star_up desde cualquier modulo
Con Solo Ponerle Al codigo Msgbox(star_up(True)) ' esto es para que inicie Msgbox(star_up(false)) para que no inicie mas
Yo usaria un checkbox y le pongo por defecto que este checked o seleccionado para que me muestre el form luego puedes guardar la setting del checked box para que te cargue en cada inicio el status del checkbox asi le das la opcion al usuario de que configure a gusto asi quiere o no que inicie con windows
Hola a todos Buenos Tengo una pequeña problema me gustaría Pasar un CE- Scripts a vb.net
ya que he creado mi trainer pero aun me falta mucho porque ya tengo los address que me importan pero me gustaría poder hacer la inyección de codigo.
Mi codigo del Scripts Es este
Código:
[sub][ENABLE] //code from here till the end of the code will be used to disable the cheat
alloc(newmem,2048) //2kb should be enough label(returnhere) label(originalcode) label(exit)
newmem: //this is allocated memory, you have read,write,execute access //place your code here add [edi+24], 1 originalcode: //inc [edi+24] //mov eax,[edi+24] exit: jmp returnhere "popcapgame1.exe"+95B7C: jmp newmem nop returnhere: [DISABLE] //code from here till the end of the code will be used to disable the cheat alloc(newmem,2048) //2kb should be enough label(returnhere) label(originalcode) label(exit) newmem: //this is allocated memory, you have read,write,execute access //place your code here originalcode: inc [edi+24] mov eax,[edi+24] exit: jmp returnhere "popcapgame1.exe"+95B7C: jmp newmem nop returnhere: [/sub]
Ojo, Solo Pido Ayuda :una Guia Para Aprender a pasarlo al vb.net el script se que en C+ se puede pero conocimiento de C+ = null
Buenos Despues De Tanto Leer Logre Creear mi Trainer de de PvZ 2
Les dejo
Citar
Código:
En un Modulo Colocamos Esto
Código:
'Importamos la libreria Imports System.Runtime.InteropServices 'Propietario Original del modulo 'Autor: Cless ' Editado: por Mi Module MemoryEditor '########## Funcion Para Leer Memoria ############ ' LMBytes: Sirve Para leer Los bytes ' LMInt: aun no entiendo su funsionalidad completamente no si si lee de 2bytes, 4 bytes 8byte o un array ' LMFloat: Sirve para leer memoria flotante ' LMDouble: Sirve para leer Memoria Double '########## Funcion Para Escribir Memoria ############ ' EMBytes: Sirve Para escribir Los bytes ' EMInt: aun no entiendo su funsionalidad completamente no si Escribir de 2bytes, 4 bytes 8byte o un array ' EMFloat: Sirve para Escribir memoria flotante ' EMDouble: Sirve para Escribir Memoria Double
Private Declare Function LMBytes Lib "kernel32" Alias "ReadProcessMemory" _ (ByVal Handle As Integer, ByVal Address As Integer, _ ByRef Value As Byte, Optional ByVal Size As Integer = 2, _ Optional ByRef Bytes As Integer = 0) As Byte Private Declare Function LMInt Lib "kernel32" Alias "ReadProcessMemory" _ (ByVal Handle As Integer, ByVal Address As Integer, ByRef Value As Integer, _ Optional ByVal Size As Integer = 4, Optional ByRef Bytes As Integer = 0) As Integer Private Declare Function LMFloat Lib "kernel32" Alias "ReadProcessMemory" _ (ByVal Handle As Integer, ByVal Address As Integer, ByRef Value As Single, _ Optional ByVal Size As Integer = 4, Optional ByRef Bytes As Integer = 0) As Single Private Declare Function LMDouble Lib "kernel32" Alias "ReadProcessMemory" _ (ByVal Handle As Integer, ByVal Address As Integer, ByRef Value As Double, _ Optional ByVal Size As Integer = 8, Optional ByRef Bytes As Integer = 0) As Double Private Declare Function EMBytes Lib "kernel32" Alias "WriteProcessMemory" _ (ByVal Handle As Integer, ByVal Address As Integer, ByRef Value As Byte, _ Optional ByVal Size As Integer = 2, Optional ByRef Bytes As Integer = 0) As Byte Private Declare Function EMInt Lib "kernel32" Alias "WriteProcessMemory" _ (ByVal Handle As Integer, ByVal Address As Integer, ByRef Value As Integer, _ Optional ByVal Size As Integer = 4, Optional ByRef Bytes As Integer = 0) As Integer Private Declare Function EMFloat Lib "kernel32" Alias "WriteProcessMemory" _ (ByVal Handle As Integer, ByVal Address As Integer, ByRef Value As Single, _ Optional ByVal Size As Integer = 2, Optional ByRef Bytes As Integer = 0) As Single Private Declare Function EMDouble Lib "kernel32" Alias "WriteProcessMemory" _ (ByVal Handle As Integer, ByVal Address As Integer, ByRef Value As Double, _ Optional ByVal Size As Integer = 2, Optional ByRef Bytes As Integer = 0) As Double
Public Function LBytes(ByVal NombreDelExe As String, ByVal Address As Integer) As Byte Dim Value As Byte If Process.GetProcessesByName(NombreDelExe).Length <> 0 Then Dim Handle As Integer = Process.GetProcessesByName(NombreDelExe)(0).Handle If Handle <> 0 Then LMBytes(Handle, Address, Value) End If End If Return Value End Function Public Function LInt(ByVal NombreDelExe As String, ByVal Address As Integer) As Integer Dim Value As Integer If Process.GetProcessesByName(NombreDelExe).Length <> 0 Then Dim Handle As Integer = Process.GetProcessesByName(NombreDelExe)(0).Handle If Handle <> 0 Then LMInt(Handle, Address, Value) End If End If Return Value End Function Public Function LFloat(ByVal NombreDelExe As String, ByVal Address As Integer) As Single Dim Value As Single If Process.GetProcessesByName(NombreDelExe).Length <> 0 Then Dim Handle As Integer = Process.GetProcessesByName(NombreDelExe)(0).Handle If Handle <> 0 Then LMFloat(Handle, Address, Value) End If End If Return Value End Function Public Function LDouble(ByVal NombreDelExe As String, ByVal Address As Integer) As Double Dim Value As Double If Process.GetProcessesByName(NombreDelExe).Length <> 0 Then Dim Handle As Integer = Process.GetProcessesByName(NombreDelExe)(0).Handle If Handle <> 0 Then LMBytes(Handle, Address, Value) End If End If Return Value End Function Public Function LPBytes(ByVal NombreDelExe As String, ByVal Pointer As Integer, ByVal ParamArray Offset As Integer()) As Byte Dim Value As Byte If Process.GetProcessesByName(NombreDelExe).Length <> 0 Then Dim Handle As Integer = Process.GetProcessesByName(NombreDelExe)(0).Handle If Handle <> 0 Then For Each I As Integer In Offset LMInt(Handle, Pointer, Pointer) Pointer += I Next LMBytes(Handle, Pointer, Value) End If End If Return Value End Function Public Function LPInt(ByVal NombreDelExe As String, ByVal Pointer As Integer, ByVal ParamArray Offset As Integer()) As Integer Dim Value As Integer If Process.GetProcessesByName(NombreDelExe).Length <> 0 Then Dim Handle As Integer = Process.GetProcessesByName(NombreDelExe)(0).Handle If Handle <> 0 Then For Each I As Integer In Offset LMInt(Handle, Pointer, Pointer) Pointer += I Next LMInt(Handle, Pointer, Value) End If End If Return Value End Function Public Function LPFloat(ByVal NombreDelExe As String, ByVal Pointer As Integer, ByVal ParamArray Offset As Integer()) As Single Dim Value As Single If Process.GetProcessesByName(NombreDelExe).Length <> 0 Then Dim Handle As Integer = Process.GetProcessesByName(NombreDelExe)(0).Handle If Handle <> 0 Then For Each I As Integer In Offset LMInt(Handle, Pointer, Pointer) Pointer += I Next LMFloat(Handle, Pointer, Value) End If End If Return Value End Function Public Function LPDouble(ByVal NombreDelExe As String, ByVal Pointer As Integer, ByVal ParamArray Offset As Integer()) As Double Dim Value As Double If Process.GetProcessesByName(NombreDelExe).Length <> 0 Then Dim Handle As Integer = Process.GetProcessesByName(NombreDelExe)(0).Handle If Handle <> 0 Then For Each I As Integer In Offset LMInt(Handle, Pointer, Pointer) Pointer += I Next LMDouble(Handle, Pointer, Value) End If End If Return Value End Function Public Sub EBytes(ByVal NombreDelExe As String, ByVal Address As Integer, ByVal Value As Byte) If Process.GetProcessesByName(NombreDelExe).Length <> 0 Then Dim Handle As Integer = Process.GetProcessesByName(NombreDelExe)(0).Handle If Handle <> 0 Then EMBytes(Handle, Address, Value) End If End If End Sub Public Sub EInt(ByVal NombreDelExe As String, ByVal Address As Integer, ByVal Value As Integer) If Process.GetProcessesByName(NombreDelExe).Length <> 0 Then Dim Handle As Integer = Process.GetProcessesByName(NombreDelExe)(0).Handle If Handle <> 0 Then EMInt(Handle, Address, Value) End If End If End Sub Public Sub EFloat(ByVal NombreDelExe As String, ByVal Address As Integer, ByVal Value As Single) If Process.GetProcessesByName(NombreDelExe).Length <> 0 Then Dim Handle As Integer = Process.GetProcessesByName(NombreDelExe)(0).Handle If Handle <> 0 Then EMFloat(Handle, Address, Value) End If End If End Sub Public Sub EDouble(ByVal NombreDelExe As String, ByVal Address As Integer, ByVal Value As Double) If Process.GetProcessesByName(NombreDelExe).Length <> 0 Then Dim Handle As Integer = Process.GetProcessesByName(NombreDelExe)(0).Handle If Handle <> 0 Then EMDouble(Handle, Address, Value) End If End If End Sub Public Sub EPBytes(ByVal NombreDelExe As String, ByVal Pointer As Integer, ByVal Value As Byte, ByVal ParamArray Offset As Integer()) If Process.GetProcessesByName(NombreDelExe).Length <> 0 Then Dim Handle As Integer = Process.GetProcessesByName(NombreDelExe)(0).Handle If Handle <> 0 Then For Each I As Integer In Offset LMInt(Handle, Pointer, Pointer) Pointer += I Next EMBytes(Handle, Pointer, Value) End If End If End Sub Public Sub EPInt(ByVal NombreDelExe As String, ByVal Pointer As Integer, ByVal Value As Integer, ByVal ParamArray Offset As Integer()) If Process.GetProcessesByName(NombreDelExe).Length <> 0 Then Dim Handle As Integer = Process.GetProcessesByName(NombreDelExe)(0).Handle If Handle <> 0 Then For Each I As Integer In Offset LMInt(Handle, Pointer, Pointer) Pointer += I Next EMInt(Handle, Pointer, Value) End If End If End Sub Public Sub EPFloat(ByVal NombreDelExe As String, ByVal Pointer As Integer, ByVal Value As Single, ByVal ParamArray Offset As Integer()) If Process.GetProcessesByName(NombreDelExe).Length <> 0 Then Dim Handle As Integer = Process.GetProcessesByName(NombreDelExe)(0).Handle If Handle <> 0 Then For Each I As Integer In Offset LMInt(Handle, Pointer, Pointer) Pointer += I Next EMFloat(Handle, Pointer, Value) End If End If End Sub Public Sub EPDouble(ByVal NombreDelExe As String, ByVal Pointer As Integer, ByVal Value As Double, ByVal ParamArray Offset As Integer()) If Process.GetProcessesByName(NombreDelExe).Length <> 0 Then Dim Handle As Integer = Process.GetProcessesByName(NombreDelExe)(0).Handle If Handle <> 0 Then For Each I As Integer In Offset LMInt(Handle, Pointer, Pointer) Pointer += I Next EMDouble(Handle, Pointer, Value) End If End If End Sub
End Module
Ahora En el Formulario Principal Ponemos El siguiente Codigo
Código:
Public Class FRMTRAINER <System.Runtime.InteropServices.DllImport("user32.dll")> _ Private Shared Function GetAsyncKeyState(ByVal vkey As System.Windows.Forms.Keys) As Short End Function Private Sub TGeneral_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TGeneral.Tick Dim hotkey As Boolean hotkey = GetAsyncKeyState(Keys.F3) hotkey = GetAsyncKeyState(Keys.F4) hotkey = True Select Case hotkey Case Is = GetAsyncKeyState(Keys.F3) TSoles.Enabled = True Case Is = GetAsyncKeyState(Keys.F4) TMoney.Enabled = True End Select End Sub Private Sub TMoney_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TMoney.Tick EPInt("popcapgame1", &H73D7E8, 99999, &H94C, &H50) 'le agrega 1m de Dolares
TMoney.Enabled = False End Sub Private Sub TSoles_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSoles.Tick EPInt("popcapgame1", &H73D7E8, 99999, &H868, &H5578) ' infinitos soles TSoles.Enabled = False End Sub End Class
creo que sigo confundido Pero tratare de explicarlo mejor
usare este video de ejemplo
ya que de ese modo es que estoy haciendo el trainer
Mi adrdess base seria asi 0073d7e8 + offset 2(868) + offset+ 1(5578) el cual da el nuevo valor y el address que tiene valor almacenado en una adress dinamica
por lo que seria algo asi &h73d7e8 la dirección hex pero el problema es en todo los código que he visto solo ponen la dirección base no usan offset O_O todo radica como le meto los offset a esa dirección por que si pongo solo la address y el valor me cierra el programa algo debo estar haciendo mal y me gustaría como dije aprender desde 0 a pescar con dinamita
Eso ya lo tengo entendido ya tengo el Pointer Que nunca cambia al reiniciar el juego o al salir del juego...
como vez en la imagen ya tengo algunos del os Valores que he encontrado en el juego y todo se pueden usar una y otra vez cerrando el juego y al abrirlo sigue funsionando mi problema es como usarlo para crear un trainer en un lenguaje x por ejemplo vb.net O_O ya que casi en todas las guia que he visto dan ejemplo como asi &h(Address), 12312(Valor a Cambiar) pero mi address pointer es Asi &h(address), Offset , Offset Valor O_O http://i46.tinypic.com/1onotk.png
Hola A todos. creo que casi ni posteo aca pero si leo mucho el foro XD
Tengo un pequeño problema tengo un pequeño proyecto de en visual net studio
mi problema surge con el siguiente
tengo un formularios principal al cual le quiero cambiar la apariencia todo bien ya que se la logro cambiar pero cuando guardo los setting al cerrar no logro cargarlo desde en el primer formularios...
El codigo lo tengo de este modo
Citar
Codigo En el Formularios 1 no existe ningun problema Con este codigo ya que si me lo guarda y lo carga y todo bien
Citar
Public Class frmprincipal Private Sub frmprincipal_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load movgame.Movie = Application.StartupPath + "\" + "mariobros3.swf" movgame.Play() CbStyle.Items.Add("Default") CbStyle.Items.Add("Azul") CbStyle.Items.Add("Verde") CbStyle.Items.Add("Rojo") CbStyle.Items.Add("Amarillo") CbStyle.SelectedIndex = 0 Me.Text = "Block de Nota |By Franco| ~~ " & Date.Today CbStyle.Text = My.Settings.ColorStyle 'NUDopac.Value = My.Settings.FrmOpacidad End Sub Private Sub NumericUpDown1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NUDopac.ValueChanged ' Me.Text = "Block de Nota |By Franco| ~~ " & Date.Today & " ~~ " & Me.NUDopac.Value.ToString + "/100" Me.Opacity = 0.2 + Me.NUDopac.Value / 100
End Sub Private Sub CbStyle_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CbStyle.SelectedIndexChanged If CbStyle.Text = "Azul" Then Me.BackColor = Color.Blue ElseIf CbStyle.Text = "Verde" Then Me.BackColor = Color.Green ElseIf CbStyle.Text = "Rojo" Then Me.BackColor = Color.Red ElseIf CbStyle.Text = "Amarillo" Then Me.BackColor = Color.Yellow ElseIf CbStyle.Text = "Default" Then Me.BackColor = Color.Chocolate End If End Sub Private Sub cmdStyle_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdStyle.Click If CbStyle.Text = "Default" Then My.Settings.ColorStyle = CbStyle.Text My.Settings.FrmOpacidad = NUDopac.Value My.Settings.Save() My.Settings.Reload() ElseIf CbStyle.Text = "Azul" Then My.Settings.ColorStyle = CbStyle.Text My.Settings.FrmOpacidad = NUDopac.Value My.Settings.Save() My.Settings.Reload() ElseIf CbStyle.Text = "Verde" Then My.Settings.ColorStyle = CbStyle.Text My.Settings.FrmOpacidad = NUDopac.Value My.Settings.Save() My.Settings.Reload() ElseIf CbStyle.Text = "Rojo" Then My.Settings.ColorStyle = CbStyle.Text My.Settings.FrmOpacidad = NUDopac.Value My.Settings.Save() My.Settings.Reload() ElseIf CbStyle.Text = "Amarillo" Then My.Settings.ColorStyle = CbStyle.Text My.Settings.FrmOpacidad = NUDopac.Value My.Settings.Save() My.Settings.Reload() End If End Sub End Class
Pero el problema es cuando quiero crear eso en un segundo formularios y llamarlo con un boton no logro cargar el cbstyle = que es un combobox del segundo formularios
Pd: si el post no va en este formularios algun @mod me puede hacer el favor de movierlo gracias