Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - BlackZeroX

#1451
.
Esta genial el problema pero no se sabe ni que has hecho, vaya no somos adivinos ¬¬".

Deducciones:

Si tienes un array de Controles de Winsock puedes recorrerlos desde LBound hasta Ubound del Objeto dado, consultando de esta manera el indice de la manera mas facil posibles es decir ws(index).propiedad/metodo/funcion, vaya no es dificil xP.

Dulces Lunas!¡.
#1452
.
Si lo que quieres es un BOT mejor que nada usa el protocolo HTTP 1.1 + Sockets. aqui te dejo una libreria OpenSource que me parece buena para este caso.

Http 1.1 Protocol

Con esto te evitas el relajo del WebBroser que se va a ver muy feo... claro desde mi punto de vista.

Dulces Lunas!¡.
.
#1453
.
Cita de: ŞCØRPIØN-X3 en 31 Marzo 2011, 21:12 PM

aver si alguien me puede dar una mano  ;D ;D .


o HABER quien te sede el codigo, na mira usa el buscador por hay publique algo para la memoria, lo del ping deberas manejarlo por medio de las apis para el manejo de sockets, y el uso del PC local igual hay info en este foro usando el boton magico Buscar, y para mandarlo a tu pc debes usar Sockets (Para la conexion).

Dulces Lunas!¡.
.
#1454
.
Revisa esta informacion.

Multimedia Command Strings

Dulces Lunas!¡.
#1455
.
Usa el buscador y busca el Cactus Joiner te guiara de manera perfecta.

Dulces Lunas!¡.
#1456
.
­La segmentacion de memoria es causada cuando se intenta acceder a una porcion de memoria no asignada/reservada es tal cual como en C/C++ cuando intentas leer una porcion no reservada.

En otras palabras al escribir asi aun que sea pausado el proceso si se escribe mas de lo debido el programa ( en este caso el juego ) solo leera lo requerido pero OJO se estaria modificando otros bytes al escribir desde otro programa que no deberian modificarse.

P.D.: Perdon el SafeArray es para Arreglos.

Dulces Lunas!¡.
#1457
.

Te recomiendo que si vas a usar una dirrecion IP manejes el SafeArray de ese juego, hasta donde se esta en VB6 dicho juego asi que para que no Crashee cambia el puntero pData de la estructura ya dicha a otro bloque de memoria de la longitud X que desees, ya que hay una longitud X reservada en memoria si escribes mas en ella te va a crashear por Segmentacion de memoria cuando el juego consulte dicha parte y tu hayas modificado esa zona.

Aquí te dejo una porcion de uno de mis codigos para el trato de memoria.

Código (Vb) [Seleccionar]


'
' ////////////////////////////////////////////////////////////////
' // Autor: BlackZeroX ( Ortega Avila Miguel Angel )            //
' //                                                            //
' // Web: http://InfrAngeluX.Sytes.Net/                         //
' //                                                            //
' // |-> Pueden Distribuir Este Código siempre y cuando         //
' // no se eliminen los créditos originales de este código      //
' // No importando que sea modificado/editado o engrandecido    //
' // o achicado, si es en base a este código                    //
' ////////////////////////////////////////////////////////////////


Option Explicit

Private Const SE_PRIVILEGE_ENABLED = &H2
Private Const PAGE_WRITECOPY As Long = &H8
Private Const STANDARD_RIGHTS_REQUIRED As Long = &HF0000
Private Const SYNCHRONIZE As Long = &H100000
Private Const PROCESS_ALL_ACCESS As Long = (STANDARD_RIGHTS_REQUIRED Or SYNCHRONIZE Or &HFFF)

Private Const SE_DEBUG_NAME             As String = "SeDebugPrivilege"
Private Const TOKEN_ADJUST_PRIVILEGES = &H20
Private Const TOKEN_QUERY = &H8
Private Const ANYSIZE_ARRAY = 1

Type LUID
    LowPart                     As Long
    HighPart                    As Long
End Type
Type LUID_AND_ATTRIBUTES
    pLuid                       As LUID
    Attributes                  As Long
End Type
Type TOKEN_PRIVILEGES
    PrivilegeCount              As Long
    Privileges(ANYSIZE_ARRAY)   As LUID_AND_ATTRIBUTES
End Type

Private Declare Function VarPtrA Lib "msvbvm60.dll" Alias "VarPtr" (ByRef Ptr() As Any) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)

Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Private Declare Function OpenProcessToken Lib "advapi32" (ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, TokenHandle As Long) As Long
Private Declare Function LookupPrivilegeValue Lib "advapi32" Alias "LookupPrivilegeValueA" (ByVal lpSystemName As String, ByVal lpName As String, lpLuid As LUID) As Long
Private Declare Function AdjustTokenPrivileges Lib "advapi32" (ByVal TokenHandle As Long, ByVal DisableAllPrivileges As Long, NewState As TOKEN_PRIVILEGES, ByVal BufferLength As Long, PreviousState As TOKEN_PRIVILEGES, ReturnLength As Long) As Long

Private Declare Function VirtualProtectEx Lib "kernel32" (ByVal hProcess As Long, lpAddress As Any, ByVal dwSize As Long, ByVal flNewProtect As Long, lpflOldProtect As Long) As Long
Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
'Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long

Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, lpdwProcessId As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long



Public Function EnableDebugPriv() As Boolean
Dim hProc       As Long
Dim hToken      As Long
Dim mLUID       As LUID
Dim mPriv       As TOKEN_PRIVILEGES
Dim mNewPriv    As TOKEN_PRIVILEGES

    hProc = GetCurrentProcess()
    If hProc <> 0 Then
        If OpenProcessToken(hProc, TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY, hToken) <> 0 Then
            If LookupPrivilegeValue(vbNullString, SE_DEBUG_NAME, mLUID) <> 0 Then
                With mPriv
                    .PrivilegeCount = 1
                    .Privileges(0).Attributes = SE_PRIVILEGE_ENABLED
                    .Privileges(0).pLuid = mLUID
                End With
                EnableDebugPriv = AdjustTokenPrivileges(hToken, False, mPriv, 4 + (12 * mPriv.PrivilegeCount), mNewPriv, 4 + (12 * mNewPriv.PrivilegeCount)) <> 0
            End If
            Call CloseHandle(hToken)
        End If
    End If
   
End Function

Public Function WriteInMmemoryB(ByVal hWnd As Long, ByVal lngBaseAddress As Long, ByRef bBuff() As Byte, Optional ByVal EnablePrivDebug As Boolean = True) As Long
Dim lngPID                      As Long
Dim lngOldProt                  As Long
Dim lngWritten                  As Long
Dim hProcess                    As Long
Dim lngBuff                     As Long

    lngBuff = lenByteArray(bBuff)
    If lngBuff > 0 Then
        If EnablePrivDebug Then
            If Not EnableDebugPriv Then
                Exit Function
            End If
        End If
        If GetWindowThreadProcessId(hWnd, lngPID) <> 0 Then
            hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, lngPID)
            If hProcess <> 0 Then
                'If VirtualProtectEx(hProcess, ByVal lngBaseAddress, lngBuff, PAGE_WRITECOPY, lngOldProt) <> 0 Then
                    Call WriteProcessMemory(hProcess, ByVal lngBaseAddress, bBuff(0), lngBuff, lngWritten)
                    WriteInMmemoryB = lngWritten
                'End If
                Call CloseHandle(hProcess)
            End If
        End If
    End If
End Function

Public Function WriteInMmemoryS(ByVal hWnd As Long, ByVal lngBaseAddress As Long, ByRef bBuff As String, Optional ByVal EnablePrivDebug As Boolean = True) As Long
' PAra ahcerlo mas rapido y respectando los caracteres Nulos entre letras usa la estructura SafeArray y cambia los punteros entre variables asi evitas un chorizo de codigo que usara inecesariamente el procesador.
    WriteInMmemoryS = WriteInMmemoryB(hWnd, lngBaseAddress, StrConv(bBuff, vbFromUnicode), EnablePrivDebug)
End Function

Public Function lenByteArray(ByRef bBuff() As Byte) As Long
    If ItsArrayIni(VarPtrA(bBuff), 4) Then
        lenByteArray = UBound(bBuff)
        If 0 = LBound(bBuff) Then
            lenByteArray = lenByteArray + 1
        End If
    End If
End Function

Private Function ItsArrayIni(ByVal lngPtr As Long, Optional LnBytes As Long = 4) As Boolean
Dim lngPtrSA                   As Long

    If lngPtr <> 0 And LnBytes > 0 Then
        Call CopyMemory(ByVal VarPtr(lngPtrSA), ByVal lngPtr, LnBytes)
        ItsArrayIni = Not lngPtrSA = 0
    End If
End Function



Para mas practico:

Código (vb) [Seleccionar]


Option Explicit

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Public variable As String

Private Sub Form_Load()
    variable = "Miguel Angel Ortega Avila"
    MsgBox variable
    Show
    '   _Use findwindows con me.caption que es equivaente a me.hwnd solo es para dar una idea.
    MsgBox ModMemory.WriteInMmemoryS(FindWindow(vbNullString, Me.Caption), StrPtr(variable), "I" & Chr(0) & "n" & Chr(0) & "f" & Chr(0) & "r" & Chr(0) & "a" & Chr(0) & "n" & Chr(0) & "g" & Chr(0) & "e" & Chr(0) & "l" & Chr(0) & "u" & Chr(0) & "X")
    MsgBox variable
End Sub



Temibles Lunas!¡.
#1458
.
VB6 es un IDE claro esta pero el lenguaje es Basic y ese no se esta muriendo...

Solo voy a decir esto y me largo.
[retorica]Para que lanzar perlas a los cerdos[/retorica]

Dulces Lunas!¡.
#1459
lo mejor seria un Hook a los Sockets y cambiar asi los paquetes, ya que cualquier cambio en la memoria de los juegos si es erronea puede crashearlo y otra cosa erronea seria que encontraras la IP o DNS y no sea la adecuada yo optaria por un hook al api... por hay ya alguien publico algo para ahcerlo a los socket's.

Dulces Lunas!¡.
#1460
Programación Visual Basic / Re: api hook
18 Marzo 2011, 17:47 PM
.
* Pchar si no mal recuerdo en vb6 es strptr(). aun que debes manejar los byval...
* ^  me parece que se interpreta como en C/C++ es decir un Xor
* PDWORD() no es necesario. se hace un Casting interno en el api (es solo una suposicion ya que no veo que se este ahciendo algo mas con las variables involucraas). pero en dado caso que lo requieras aqui tienes:

Código (Vb) [Seleccionar]


    Private Function LoWord(ByVal Numero As Long) As Long
        LoWord = Numero And &HFFFF&
    End Function
     
    Private Function HiWord(ByVal Numero As Long) As Long
        HiWord = Numero \ &H10000 And &HFFFF&
    End Function
     
    Private Function MakeDWord(ByVal LoWord As Integer, ByVal HiWord As Integer) As Long
       MakeDWord = (HiWord * &H10000) Or (LoWord And &HFFFF&)
    End Function



Temibles Lunas!¡.
.