Eliminar datos del ProcessHacker 2

Esta sección es para preguntas sobre programación/scripting usando AutoHotkey.

Moderator: Flipeador

Pablo99cabj
Posts: 4
Joined: 16 Jun 2018, 18:20

Eliminar datos del ProcessHacker 2

16 Jun 2018, 18:30

Hola, quiero saber es si con AutoHotkey se puede borrar datos/residuos que dejan los programas en el Process Hacker, como esto por ejemplo: https://gyazo.com/fae851f8d76c7183e4387507d4c8a5f1. Por favor si me pueden ayudar estaría muy agradecido.
User avatar
Flipeador
Posts: 1204
Joined: 15 Nov 2014, 21:31
Location: Argentina
Contact:

Re: Eliminar datos del ProcessHacker 2

16 Jun 2018, 19:22

Si y no.
Esa ventana te la muestra cuando le das doble clic al proceso, te vas a la pestaña Memory, haces clic en el botón Strings... y luego OK, ¿No?.
Si la respuesta es SI: esa información está en la memoria privada de explorer.exe. ¿puedes eliminarla?, NO. ¿puedes modificar la información para que no muestre nada?, TAL VEZ. Entonces.. ¿es seguro hacerlo?, NO. No es seguro, básicamente porque no sabes que tipo de datos estas modificando, y puede ser datos críticos para el proceso. Lo mejor sería reiniciando el proceso explorer.exe. Puedes buscar "Como reiniciar el explorador de Windows".
Si la respuesta es NO: entonces, ¿que ventana es esa, la de la imagen?.
Pablo99cabj
Posts: 4
Joined: 16 Jun 2018, 18:20

Re: Eliminar datos del ProcessHacker 2

16 Jun 2018, 21:27

Flipeador wrote:Si y no.
Esa ventana te la muestra cuando le das doble clic al proceso, te vas a la pestaña Memory, haces clic en el botón Strings... y luego OK, ¿No?.
Si la respuesta es SI: esa información está en la memoria privada de explorer.exe. ¿puedes eliminarla?, NO. ¿puedes modificar la información para que no muestre nada?, TAL VEZ. Entonces.. ¿es seguro hacerlo?, NO. No es seguro, básicamente porque no sabes que tipo de datos estas modificando, y puede ser datos críticos para el proceso. Lo mejor sería reiniciando el proceso explorer.exe. Puedes buscar "Como reiniciar el explorador de Windows".
Si la respuesta es NO: entonces, ¿que ventana es esa, la de la imagen?.
Si, pero lo que pasa es que descargue un autoclick para chitearla en un juego y no se como mierda borrarlo jaja, tambien hice eso de reiniciar el exlorer.exe y nada sigue igual :cry:
Lo que te digo sería algo como esto https://www.youtube.com/watch?v=RvbQxytDRCk , desde ya gracias por contestarme amigo.
User avatar
Flipeador
Posts: 1204
Joined: 15 Nov 2014, 21:31
Location: Argentina
Contact:

Re: Eliminar datos del ProcessHacker 2

16 Jun 2018, 21:55

¿Quieres "borrar" ciertas cadenas en un juego?, ¿Por que?, ¿En que afecta esto?, ¿Se puede saber el nombre del juego?.
No entiendo el propósito de esto, como ya te he dicho, no es nada seguro. Si me das más detalles podemos intentar algo...
Pablo99cabj
Posts: 4
Joined: 16 Jun 2018, 18:20

Re: Eliminar datos del ProcessHacker 2

16 Jun 2018, 22:11

Flipeador wrote:¿Quieres "borrar" ciertas cadenas en un juego?, ¿Por que?, ¿En que afecta esto?, ¿Se puede saber el nombre del juego?.
No entiendo el propósito de esto, como ya te he dicho, no es nada seguro. Si me das más detalles podemos intentar algo...
Minecraft, y esas son strings de un autoclick o sea es ilegal en el juego y si me revisan la pc y me encuentran eso me dan ban jaja, por eso lo quiero borrar u ocultar pero si me dices que no es seguro es mejor dejarlo asi
User avatar
Flipeador
Posts: 1204
Joined: 15 Nov 2014, 21:31
Location: Argentina
Contact:

Re: Eliminar datos del ProcessHacker 2

18 Jun 2018, 09:12

Lo estaré revisando en la semana que viene. :wave:
User avatar
Flipeador
Posts: 1204
Joined: 15 Nov 2014, 21:31
Location: Argentina
Contact:

Re: Eliminar datos del ProcessHacker 2 | Search a string in a process memory

25 Jun 2018, 15:21

Bien, mira, he logrado hacer que funcione en Notepad++ (buscar una cadena), pero para entender bien el código necesitas tener conocimientos sobre programación, especialmente sobre DllCall, si no lo tienes todo esto puede resultar en una perdida de tiempo, ya que para lograr que funcione puede requerir varias pruebas que incluyen la modificación del código AHK.

Primero que nada, debemos aclarar algunas cosas:
  • Para el correcto funcionamiento, debes ejecutar la versión de AHK correcta dependiendo de los bits del proceso. Por ejemplo, si el proceso es de 64-Bit debes utilizar
    AutoHotkeyU64.exe.
  • AutoHotkey no sirve para esto, debido a que al ser un lenguaje interpretado las operaciones (que son muchas) resultan muy lentas. Lo mejor es utilizar un lenguaje compilado, como C++. Esto también depende de tu PC.
  • La codificación de la cadena a buscar debe coincidir con la codificación de la cadena en el programa.
  • Si la memoria en donde reside la cadena esta protegida, las cosas se complican aún más, necesitamos añadir más DllCalls.
  • Puede que tengas que ejecutar el Script como Administrador.
Primero, vamos hacer una prueba. El ejemplo que te pongo a continuación es para Notepad++. Si quieres probar, debes ejecutar Notepad++ y escribir la cadena SomeDataToFind (codificación ANSI: Barra de menu\Formato\Convertir en ANSI). Luego al ejecutar el Script te devuelve la dirección de memoria donde empieza la cadena.
Nota: El script es únicamente para AHKv2. Puedes descargarlo desde el enlace en mi firma. Puedes descargar Notepad++ de aquí.

Code: Select all

ProcessID := ProcessExist("notepad++.exe")           ; aquí recuperamos el identificador del proceso
String := "SomeDataToFind"                           ; la cadena a buscar
StrPutVar(String, Data, Size)                        ; convertimos la cadena a UTF-8
Addr := GetAddressOfData(ProcessID, &Data, Size-1)   ; pasamos la dirección de memoria de la cadena UTF-8 y el tamaño de esta (bytes).
MsgBox Addr         ; muestra la dirección de memoria del inicio de la cadena



; ------------------------------------------

StrPutVar(String, ByRef Buffer, ByRef Size := "", Encoding := "UTF-8")
{
    VarSetCapacity(Buffer, (Size := StrPut(String, Encoding) - VarSetCapacity(Buffer, 0)*0) * ((Encoding = "UTF-16") + 1))
    Return IsByRef(Size) ? StrPut(String, &Buffer, Size, Encoding) * 0 + &Buffer : StrPut(String, &Buffer, Size, Encoding)
} ; AutoHotkey Documentation



; https://www.codeproject.com/Articles/716227/Csharp-How-to-Scan-a-Process-Memory
GetAddressOfData(ProcessID, Data, Size)
{
    ; OpenProcess function
    ; https://msdn.microsoft.com/en-us/library/windows/desktop/ms684320(v=vs.85).aspx
    ; PROCESS_VM_READ = 0x0010 | PROCESS_QUERY_INFORMATION = 0x0400
    Local hProcess := DllCall("Kernel32.dll\OpenProcess", "UInt", 0x0010|0x0400, "Int", FALSE, "UInt", ProcessID, "Ptr")
    If (!hProcess)
        Return FALSE

    ; SYSTEM_INFO structure
    ; https://msdn.microsoft.com/en-us/library/windows/desktop/ms724958(v=vs.85).aspx
    Local SYSTEM_INFO := ""
    VarSetCapacity(SYSTEM_INFO, A_PtrSize == 4 ? 36 : 48)
    ; GetSystemInfo function
    ; https://msdn.microsoft.com/en-us/library/windows/desktop/ms724381(v=vs.85).aspx
    DllCall("Kernel32.dll\GetSystemInfo", "UPtr", &SYSTEM_INFO)
    Local                   Address := NumGet(&SYSTEM_INFO + 8)                ; LPVOID lpMinimumApplicationAddress   (the lowest memory address accessible to applications and DLLs)
        , MaximumApplicationAddress := NumGet(&SYSTEM_INFO + 8 + A_PtrSize)    ; LPVOID lpMaximumApplicationAddress   (the highest memory address accessible to applications and DLLs)

    ; MEMORY_BASIC_INFORMATION structure
    ; https://msdn.microsoft.com/en-us/library/windows/desktop/aa366775(v=vs.85).aspx
    Local sizeof_MEMORY_BASIC_INFORMATION := A_PtrSize == 4 ? 28 : 48
    VarSetCapacity(MEMORY_BASIC_INFORMATION, sizeof_MEMORY_BASIC_INFORMATION)

    Local RegionSize := 0, State := 0, Protect := 0
    While (Address < MaximumApplicationAddress)
    {
        ; VirtualQueryEx function
        ; https://msdn.microsoft.com/en-us/library/windows/desktop/aa366907(v=vs.85).aspx
        If (DllCall("Kernel32.dll\VirtualQueryEx", "Ptr", hProcess, "UPtr", Address, "UPtr", &MEMORY_BASIC_INFORMATION, "UPtr", sizeof_MEMORY_BASIC_INFORMATION, "UPtr") == sizeof_MEMORY_BASIC_INFORMATION)
        {
            Address    := NumGet(&MEMORY_BASIC_INFORMATION)                            ; PVOID  BaseAddress    (base address of the region of pages)
            RegionSize := NumGet(&MEMORY_BASIC_INFORMATION + 3*A_PtrSize)              ; SIZE_T RegionSize     (size of the region beginning at the base address in which all pages have identical attributes)
            State      := NumGet(&MEMORY_BASIC_INFORMATION + 4*A_PtrSize, "UInt")      ; DWORD  State          (the state of the pages in the region)
            Protect    := NumGet(&MEMORY_BASIC_INFORMATION + 4*A_PtrSize + 4, "UInt")  ; DWORD  Protect        (access protection of the pages in the region)

            If (State == 0x1000 && Protect == 0x04)    ; MEM_COMMIT = 0x1000 | PAGE_READWRITE = 0x04
            {
                Local Buffer := ""
                VarSetCapacity(Buffer, RegionSize)    ; out of memory --> use AHKU64 for 64-Bit processes

                ; ReadProcessMemory function
                ; https://msdn.microsoft.com/en-us/library/windows/desktop/ms680553(v=vs.85).aspx
                Local BytesRead := 0
                If (DllCall("Kernel32.dll\ReadProcessMemory", "Ptr", hProcess, "UPtr", Address, "UPtr", &Buffer, "UPtr", RegionSize, "UPtrP", BytesRead))
                {
                    Loop (RegionSize-Size)
                    {
                        ; https://msdn.microsoft.com/es-es/library/zyaebf12.aspx
                        If (!DllCall("msvcrt.dll\memcmp", "UPtr", Data, "UPtr", &Buffer+A_Index, "UPtr", Size, "CDecl"))
                        {
                            DllCall("Kernel32.dll\CloseHandle", "Ptr", hProcess)
                            Return Address + A_Index
                        }
                    }
                }
            }
            Address += RegionSize
        }
    }

    DllCall("Kernel32.dll\CloseHandle", "Ptr", hProcess)
    Return FALSE
}
Para probar en tu juego, cambia el nombre del proceso y la cadena a buscar.
Pablo99cabj
Posts: 4
Joined: 16 Jun 2018, 18:20

Re: Eliminar datos del ProcessHacker 2

25 Jun 2018, 16:51

La verdad es que no tengo idea de programacion, pero lo voy a intentar igual :thumbup:
Una pregunta mas, ese script lo tengo que pegar en notepad ¿verdad? y gracias por tomarte el tiempo en averiguar esto.
User avatar
Flipeador
Posts: 1204
Joined: 15 Nov 2014, 21:31
Location: Argentina
Contact:

Re: Eliminar datos del ProcessHacker 2

25 Jun 2018, 19:46

Notepad o cualquier otro editor de texto. Notepad es el más básico, no tiene resaltado de sintaxis ni nada, un editor completo es SublimeText que puedes descargar en mi firma, sino busca en el subforo de editores.
Te aclaro que el Script que te pase no esta completo, o sea, no hace lo que pides (borrar las cadenas), ya que para "borrarlas" primero tenemos que conocer la dirección de memoria en donde reside esa cadena, que es lo que hace el Script que te puse arriba. Usé AHKv2 porque me es más cómoda su sintaxis además creería que tiene mejor rendimiento.
Los pasos para "borrar" la cadena que se me ocurre son: Determinar la dirección de memoria donde inicia la cadena y reescribir esos datos con ceros o alguna otra cadena aleatoria sin sentido.
El problema en tu caso, como ya te he mencionado arriba, es que se requieren conocimientos, en varias cosas, principalmente: DllCall, punteros, como Windows administra la memoria, estructuras, codificación, como se almacenan los bytes en memoria, etc, es demasiado para alguien que recien empieza. Tal ves CheatEngine te sirva, no tengo idea.

De momento no voy a poder seguir este tema porque no estoy en casa sino hasta el fin de semana. Recuerda que el Script es únicamente para la versión. 2 de AHK, esta no requiere instalación, simplemente guarda el Script en un archivo de texto cualquiera con la extensión .ahk y arrastralo hasta AutoHotkeyU64.exe o AutoHotkeyU32.exe dependiendo de los bits del proceso en el cual se va a buscar la cadena.

Return to “Pedir Ayuda”

Who is online

Users browsing this forum: No registered users and 14 guests