Problemas declarando una variable VB.NET

Iniciado por KanoxSmoKinG, 5 Marzo 2017, 05:41 AM

0 Miembros y 1 Visitante están viendo este tema.

KanoxSmoKinG

Hola amigos, Estoy creando un Trainer para un juego lo que pasa es que tengo un problema en el código de programacion

Uso este código para declarar un nuevo valúe para un address

WriteMemory(GetModuleHandle("OPERATION7", "OPERATION7") + &HCC88B0, New Byte() {&HE7, &H3})

Hasta hay todo bien por que el value que quiero poner es 999 (3E7 HEXADECIMAL = 999 DECIMAL) Y así lo pongo en el codigo
{&HE7, &H3}
Pero al querer declarar un value mas grande como 4594064 en la calculadora hexadecimal me da este numero (461990) y no se como acomodar esos números en el código, Ya intente con
{&H46, &H19, &H90}
Pero al activar la función en el juego no me sirve, como los acomodo?
Esto es lo que trae el proyecto hasta arriba
Public Class Form2

    Const VK_LBUTTON = &H1
    Const VK_RBUTTON = &H2
    Const VK_CANCEL = &H3
    Const VK_MBUTTON = &H4
    Const VK_XBUTTON1 = &H5
    Const VK_XBUTTON2 = &H6
    Const VK_BACK = &H8
    Const VK_TAB = &H9
    Const VK_CLEAR = &HC
    Const VK_RETURN = &HD
    Const VK_SHIFT = &H10
    Const VK_CONTROL = &H11
    Const VK_MENU = &H12
    Const VK_PAUSE = &H13
    Const VK_CAPITAL = &H14
    Const VK_KANA = &H15
    Const VK_HANGUEL = &H15
    Const VK_HANGUL = &H15
    Const VK_JUNJA = &H17
    Const VK_FINAL = &H18
    Const VK_HANJA = &H19
    Const VK_KANJI = &H19
    Const VK_ESCAPE = &H1B
    Const VK_CONVERT = &H1C
    Const VK_NONCONVERT = &H1D
    Const VK_ACCEPT = &H1E
    Const VK_MODECHANGE = &H1F
    Const VK_SPACE = &H20
    Const VK_PRIOR = &H21
    Const VK_NEXT = &H22
    Const VK_END = &H23
    Const VK_HOME = &H24
    Const VK_LEFT = &H25
    Const VK_UP = &H26
    Const VK_RIGHT = &H27
    Const VK_DOWN = &H28
    Const VK_SELECT = &H29
    Const VK_PRINT = &H2A
    Const VK_EXECUTE = &H2B
    Const VK_SNAPSHOT = &H2C
    Const VK_INSERT = &H2D
    Const VK_DELETE = &H2E
    Const VK_HELP = &H2F
    Const K_0 = &H30
    Const K_1 = &H31
    Const K_2 = &H32
    Const K_3 = &H33
    Const K_4 = &H34
    Const K_5 = &H35
    Const K_6 = &H36
    Const K_7 = &H37
    Const K_8 = &H38
    Const K_9 = &H39
    Const VK_A = &H41
    Const VK_B = &H42
    Const VK_C = &H43
    Const VK_D = &H44
    Const VK_E = &H45
    Const VK_F = &H46
    Const VK_G = &H47
    Const VK_H = &H48
    Const VK_I = &H49
    Const VK_J = &H4A
    Const VK_K = &H4B
    Const VK_L = &H4C
    Const VK_M = &H4D
    Const VK_N = &H4E
    Const VK_O = &H4F
    Const VK_P = &H50
    Const VK_Q = &H51
    Const VK_R = &H52
    Const VK_S = &H53
    Const VK_T = &H54
    Const VK_U = &H55
    Const VK_V = &H56
    Const VK_W = &H57
    Const VK_X = &H58
    Const VK_Y = &H59
    Const VK_Z = &H5A
    Const VK_LWIN = &H5B
    Const VK_RWIN = &H5C
    Const VK_APPS = &H5D
    Const VK_SLEEP = &H5F
    Const VK_NUMPAD0 = &H60
    Const VK_NUMPAD1 = &H61
    Const VK_NUMPAD2 = &H62
    Const VK_NUMPAD3 = &H63
    Const VK_NUMPAD4 = &H64
    Const VK_NUMPAD5 = &H65
    Const VK_NUMPAD6 = &H66
    Const VK_NUMPAD7 = &H67
    Const VK_NUMPAD8 = &H68
    Const VK_NUMPAD9 = &H69
    Const VK_MULTIPLY = &H6A
    Const VK_ADD = &H6B
    Const VK_SEPARATOR = &H6C
    Const VK_SUBTRACT = &H6D
    Const VK_DECIMAL = &H6E
    Const VK_DIVIDE = &H6F
    Const VK_F1 = &H70
    Const VK_F2 = &H71
    Const VK_F3 = &H72
    Const VK_F4 = &H73
    Const VK_F5 = &H74
    Const VK_F6 = &H75
    Const VK_F7 = &H76
    Const VK_F8 = &H77
    Const VK_F9 = &H78
    Const VK_F10 = &H79
    Const VK_F11 = &H7A
    Const VK_F12 = &H7B
    Const VK_F13 = &H7C
    Const VK_F14 = &H7D
    Const VK_F15 = &H7E
    Const VK_F16 = &H7F
    Const VK_F17 = &H80
    Const VK_F18 = &H81
    Const VK_F19 = &H82
    Const VK_F20 = &H83
    Const VK_F21 = &H84
    Const VK_F22 = &H85
    Const VK_F23 = &H86
    Const VK_F24 = &H87
    Const VK_NUMLOCK = &H90
    Const VK_SCROLL = &H91
    Const VK_LSHIFT = &HA0
    Const VK_RSHIFT = &HA1
    Const VK_LCONTROL = &HA2
    Const VK_RCONTROL = &HA3
    Const VK_LMENU = &HA4
    Const VK_RMENU = &HA5
    Const VK_BROWSER_BACK = &HA6
    Const VK_BROWSER_FORWARD = &HA7
    Const VK_BROWSER_REFRESH = &HA8
    Const VK_BROWSER_STOP = &HA9
    Const VK_BROWSER_SEARCH = &HAA
    Const VK_BROWSER_FAVORITES = &HAB
    Const VK_BROWSER_HOME = &HAC
    Const VK_VOLUME_MUTE = &HAD
    Const VK_VOLUME_DOWN = &HAE
    Const VK_VOLUME_UP = &HAF
    Const VK_MEDIA_NEXT_TRACK = &HB0
    Const VK_MEDIA_PREV_TRACK = &HB1
    Const VK_MEDIA_STOP = &HB2
    Const VK_MEDIA_PLAY_PAUSE = &HB3
    Const VK_LAUNCH_MAIL = &HB4
    Const VK_LAUNCH_MEDIA_SELECT = &HB5
    Const VK_LAUNCH_APP1 = &HB6
    Const VK_LAUNCH_APP2 = &HB7
    Const VK_OEM_1 = &HBA
    Const VK_OEM_PLUS = &HBB
    Const VK_OEM_COMMA = &HBC
    Const VK_OEM_MINUS = &HBD
    Const VK_OEM_PERIOD = &HBE
    Const VK_OEM_2 = &HBF
    Const VK_OEM_3 = &HC0
    Const VK_OEM_4 = &HDB
    Const VK_OEM_5 = &HDC
    Const VK_OEM_6 = &HDD
    Const VK_OEM_7 = &HDE
    Const VK_OEM_8 = &HDF
    Const VK_OEM_102 = &HE2
    Const VK_PROCESSKEY = &HE5
    Const VK_PACKET = &HE7
    Const VK_ATTN = &HF6
    Const VK_CRSEL = &HF7
    Const VK_EXSEL = &HF8
    Const VK_EREOF = &HF9
    Const VK_PLAY = &HFA
    Const VK_ZOOM = &HFB
    Const VK_PA1 = &HFD
    Const VK_OEM_CLEAR = &HFE

    Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Keys) As Keys

No se si tenga algo que ver eso, Y de paso me pueden explicar que significa?

Eleкtro

#1
Hola.

Cita de: KanoxSmoKinG en  5 Marzo 2017, 05:41 AM3E7 HEXADECIMAL = 999 DECIMAL) Y así lo pongo en el codigo
{&HE7, &H3}

Cita de: KanoxSmoKinG en  5 Marzo 2017, 05:41 AMal querer declarar un value mas grande como 4594064 en la calculadora hexadecimal me da este numero (461990)
{&H46, &H19, &H90}

Tú mismo te has respondido, el primer valor es &H3E7i (999), no &HE7 (231) y &H3 (3). Y el segundo valor hex. es &H461990i.
No sé por qué estás intentando "separar" el valor en valores distintos y especificarlos en un array.

Cita de: KanoxSmoKinG en  5 Marzo 2017, 05:41 AMno se como acomodar esos números en el código

Dudo mucho que alguien pueda intentar ayudarte ni averiguar el problema real con los offsets/valores si no muestras el código de la función "WriteMemory", puesto que no es la función Win32 WriteMemory (la cual toma 4 argumentos, mientras que la tuya solo toma 2 argumentos).




Cita de: KanoxSmoKinG en  5 Marzo 2017, 05:41 AM
Esto es lo que trae el proyecto hasta arriba
...
No se si tenga algo que ver eso, Y de paso me pueden explicar que significa?

Esas constantes hacen referencia a los códigos de las teclas virtuales (Virtual Key Code) de Windows.
...es innecesario declarar esas constantes cuando ya están definidas de forma administrada en la enumeración System.Windows.Forms.Keys.

La función Win32 GetAsyncKeyState sirve para obtener el estado de una tecla (Virtual Key), para saber si la tecla ha sido pulsada o no. Esta función también es innecesaria declararla cuando ya está administrada en el espacio de nombres System.Windows.Input del core de WPF (WindowsBase.dll + PresentationCore.dll) junto a todo el resto de utilidades necesarias para trabajar con teclas virtuales, mapeo de teclas y el teclado en general.

Aparte, esta sintaxis está obsoleta en la programación .NET:
Citar
Código (vbnet) [Seleccionar]
Declare Function GetAsyncKeyState Lib "user32"
...el método correcto para declarar funciones no administradas es haciendo uso del atributo DllImport:
...de lo contrario usando la sintaxis obsoleta de VB6 no existe forma de aprovechar las ventajas del P/Invoke.

En resumen, la persona que haya escrito ese código que estás intentando usar denota bastante inexperiencia en la programación de .NET Framework que le llevan a este tipo de malos hábitos... y debido a eso en mi opinión no sería muy recomendable estar utilizando un código de ese programador para temas delicados como la modificación de direcciones de memoria en un proceso externo.

¡Saludos!








KanoxSmoKinG

Cita de: Eleкtro en  5 Marzo 2017, 08:14 AM
Hola.

Tú mismo te has respondido, el primer valor es &H3E7i (999), no &HE7 (231) y &H3 (3). Y el segundo valor hex. es &H461990i.
No sé por qué estás intentando "separar" el valor en valores distintos y especificarlos en un array.
Lo que pasa que asi venia por defecto el codigo, Separo &H3E7 (999) Venia primero el ultimo codigo y despues los primeros 2
Y no se por que.
Pero gracias  :D Ya estoy tratando de escribir en la memoria con otros métodos mas simples.