|
Mostrar Mensajes
|
Páginas: [1]
|
1
|
Programación / .NET (C#, VB.NET, ASP) / De Visual Basic 6.0 A Visual Basic 2008
|
en: 23 Enero 2009, 20:12 pm
|
Hola.! alguien sabe puede y tiene el tiempo necesario (no creo que se lleve mucho) para pasar este codigo a Visual Basic 2008? (esta hecho en visual basic 6.0) ojala alguien pueda aqui os dejo el code: 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 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 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 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 FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, lpdwProcessId As Long) As Long Private Const PAGE_WRITECOPY = &H8& Private Const PROCESS_ALL_ACCESS = &H1F0FFF
Private Sub Form_Load() Dim hWnd As Long, lngPID As Long, hProcess As Long Dim lngOldProt As Long Dim lngData As Long, lngWritten As Long hWnd = FindWindow(vbNullString, "Cheat Engine 5.2") If hWnd > 0 Then Call GetWindowThreadProcessId(hWnd, lngPID) hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, lngPID) If hProcess <> 0 Then lngData = 1092616192 If VirtualProtectEx(hProcess, ByVal &H400000, LenB(lngData), PAGE_WRITECOPY, lngOldProt) <> 0 Then If WriteProcessMemory(hProcess, ByVal &H400000, lngData, LenB(lngData), lngWritten) <> 0 Then Call MsgBox("Success!" & vbCrLf & lngWritten & " bytes written.") End If End If Call CloseHandle(hProcess) End If End If End Sub ese es .. ojala laguien pueda
|
|
|
2
|
Programación / .NET (C#, VB.NET, ASP) / VirtualProtectEx & WriteProcessMemory VB 2008
|
en: 23 Enero 2009, 08:30 am
|
Hola.. si leiste este post es porque puede que me vallas a ayudar... Bueno la cosa es que si alguien me podria dar un ejemplo de como usar el WriteProcessMemory junto al VirtualProtectEx ?? necesito que los 2 editen la memoria de un proceso de la (Window List) lista por ventana (los procesos de la barra de tareas). alguien me puede dar unos ejemplos de como usarlos? los que he encontrado no me han servido Cabe decir que uso el Visual Basic 2008 Gracias por su tiempo y ayuda a quien leyo esto y me valla a colaborar ayudandome.
|
|
|
3
|
Programación / Programación Visual Basic / Re: Como Hacer Que Este Code Edite Array Of Bytes?
|
en: 20 Noviembre 2008, 07:17 am
|
Jejej Hola.. Pues Supieras que si es para un juego llamado rakion.. hmm encontre la manera para poder editar la memoria al abrirse su proteccion por eso no hay problema pero necesito es arreglar este code para poder escribir un array of bytes.. tu lo tienes? me podrias decir como hacerlo? esque tengo una duda que en el post ese que dices no me han respondido... Ajam supongamos que el code que tienes alli sirva.. pero igual no veo donde poner el numero de array of bytes osea todos de una ves y no byte por byte como lo esta haciendo alli ves? el tuyo lo hace con: ejemplo "&H84" y necesito es uno completo "28 79 3D 35 00 00 00 00 2C 79 3D 35 00 00 00 00 48 BB 3B 35 01 00 00 00 4C 79 3D 35 01 00 00 00 DC 75 2F 35 58 93 2D 35 A4 04 00 00 F8 BE 3B 35 70 A3 0F 35 C0 A0 0F 35 D0 A0 0F 35 E0 A0 0F 35 00 A1 0F 35 10 A1 0F 35 20 A1 0F 35 F0 A0 0F 35 01 00 00 00 FF FF FF FF 30 A6 0F 35 58 93 2D 35" ves? eso es lo que necesito ahora si me puedes ayudar uff te lo agraeceria uff es mas te daria creditos en el trainer jejeje.. ojala me puedas ayudar.. bai PD: Tu Tambien usaste el tuyo para eso? jjejeje
|
|
|
4
|
Programación / Programación Visual Basic / Como Hacer Que Este Code Edite Array Of Bytes?
|
en: 19 Noviembre 2008, 23:54 pm
|
Hola.. soy nuevo en el foro y tengo una duda muy grande.. que tengo desde hace un tiempo.. es lo siguiente
tengo un code en visual basic de un programa que ise para editar una direccion de memoria de un proceso con una direccion un value y el nombre de el proceso a editar..
tengo el code perfecto me funciona pero solo me edita hasta 4 bytes ... tambien tengo otro que edita la memoria del proceso con el numero de bytes que desee.. pero hay un problema que de value no se pueden poner numeros sino el significado de los mismos en la memoria aver si no me entienden les dejo esta imagen
como vieron ojala me haya dado a entender.. el code edita es la parte del lado derecho del dump no la parte de los valores .. aqui les dejo el code y una demostracion de ello...
esto va en un modulo de clase:
'bueno esto es para editar la memoria dandole el nombre de un proceso etc con su address y value.. Private Function WriteMemory(dwProcId As Long, dwAddress As Long, ByVal pValue As Long, ByVal dwLength As Long) As Boolean If dwAddress = 0 Then WriteMemory = False Exit Function End If Dim procHandle As Long procHandle = OpenProcess(PROCESS_ALL_ACCESS, False, dwProcId) If procHandle = 0 Then WriteMemory = False Exit Function End If Dim dwReturned As Long dwReturned = WriteProcessMemory(procHandle, ByVal dwAddress, ByVal pValue, dwLength, 0&) If dwReturned > 0 Then WriteMemory = True Else WriteMemory = False End If End Function 'y pues con esto solo edito un byte MENOS ME SIRVE LO CUAL NECESITO ES PARA EDITAR ALMENOS UNOS 100 BYTES EN UN SOLO VALUE Public Function WriteByte(dwProcId As Long, dwAddress As Long, ByVal dwValue As Byte) As Boolean If dwProcId = 0 Or dwAddress = 0 Then WriteByte = False Exit Function End If If WriteMemory(dwProcId, dwAddress, VarPtr(dwValue), LenB(dwValue)) = False Then WriteByte = False Exit Function End If WriteByte = True End Function 'pues como ven este edita solo 2 bytes si pongo un value mas grande sale error desbordamiento.. Public Function Write2Bytes(dwProcId As Long, dwAddress As Long, ByVal dwValue As Integer) As Boolean If dwProcId = 0 Or dwAddress = 0 Then Write2Bytes = False Exit Function End If If WriteMemory(dwProcId, dwAddress, VarPtr(dwValue), LenB(dwValue)) = False Then Write2Bytes = False Exit Function End If Write2Bytes = True End Function 'Ven Este es el que edita 4 bytes.. pero no edita mas de alli si lo hago me sale error de desbordamiento.. Public Function Write4Bytes(dwProcId As Long, dwAddress As Long, ByVal dwValue As Long) As Boolean If dwProcId = 0 Or dwAddress = 0 Then Write4Bytes = False Exit Function End If If WriteMemory(dwProcId, dwAddress, VarPtr(dwValue), LenB(dwValue)) = False Then Write4Bytes = False Exit Function End If Write4Bytes = True End Function 'Aver Este Es La Parte De La Cual Les menciono Arriba.... Si Pongo Este Code Me Edita El Otro Lado de la memoria ven :p como en la imagen de arriba.. 'Y no se como editarlo o arreglarlo para que edite pero con values.. si me pueden ayudar seria estupendo!! :D Public Function WriteArray(dwProcId As Long, dwAddress As Long, ByVal dwValue As String) As Boolean If dwProcId = 0 Or dwAddress = 0 Then WriteArray = False Exit Function End If Dim szByteArray() As Byte ReDim szByteArray(Len(dwValue)) Dim x As Long For x = 1 To UBound(szByteArray) szByteArray(x - 1) = CByte(Asc(Mid$(dwValue, x, 1))) Next x If WriteMemory(dwProcId, dwAddress, VarPtr(szByteArray(0)), Len(dwValue)) = False Then WriteArray = False Exit Function End If WriteArray = True End Function
ahora miren el code de el editor como es... Private Poke As New Edicion_Memoria 'esto es un modulo de clase Private Proc As New Procesos ' esto es un modulo de clase. esta perfecto es para cojer el pid correcto del proceso Private Sub Form_Activate() Dim Address1 As Long Address1 = &H400000 GetProcessID ("AlgunProceso.exe") dwProcId = ProgID if checkbox1.value = 1 then Poke.WriteArray dwProcId, Address1, "ËÌÈÉ×ÏÈÍÎÛØÚÙÊÜÝÞßàáãäå@Error‹ÀRuntime error at 00000000‹À0123456789ABCDEF" end if Unload Me End Sub
Ajam Asi Seria El Code Para Poder Editar Un Array Pero Resulta Que yo quiero es poner un value con numeros no eso.. porque si pongo los numeros en la memoria como señale arriba en el dump se mostraran numeros en ves de lo que se debe mostrar.. espero me hayan entendido y porsiacaso se enrredo quien sea que me pueda ayudar aqui esta como yo quiero que sea if checkbox1.value = 1 then Poke.WriteArray dwProcId, Address1, "11 CB CC C8 C9 D7 CF C8 CD CE DB D8 DA D9 CA DC DD DE DF E0 E1 E3 11 E4 E5 8D 40 11 45 72 72 6F 72 11 8B C0 52 75 6E 74 69 6D 65 20 65 72 72 6F 72 20 20 20 20 20 61 74 20 30 30 30 30 30 30 30 30 11 8B C0 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 11 11 11 11 11 11 11 11 11 11 11 11" end if
Bueno Eso Es Todo.. ya intente cambiando los valores y aun asi me da error de desbordamiento en 1, 2, 4, y no se como si me pueden ayudar seria Genial!! Gracias De Antemano Hasta Luego
|
|
|
5
|
Programación / Ingeniería Inversa / Duda sobre el post!!!
|
en: 19 Noviembre 2008, 11:37 am
|
Hola.. soy nuevo en el foro, acabo de ver este post y al parecer veo la solucion a mi problema jeje.. pero en el codigo hay un problema creo yo.. esque tambien soy novato
aver si no me enrredo mucho...
Todo el codigo va en el codigo del la aplicacion?
O algo de el codigo va en un modulo de clase o modulo normal?
Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, ByVal lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long Private Declare Function GetCurrentProcessId Lib "kernel32" () 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 Private Function WriteMemory(ByVal Offset As Long, ByVal ProcessID As Long, ByVal Value As Long, ByVal NumBytes As Long) As Boolean Const PROCESS_VM_OPERATION As Long = &H8 Const PROCESS_VM_WRITE As Long = &H20 Dim ProcessHandle As Long ProcessHandle = OpenProcess(PROCESS_VM_WRITE Or PROCESS_VM_OPERATION, False, ProcessID) If ProcessHandle = 0 Then MsgBox "No se encuentra el proceso", vbCritical, "Error de Lectura" Exit Function End If Dim exito As Boolean exito = WriteProcessMemory(ProcessHandle, Offset, Value, NumBytes, 0) CloseHandle (ProcessHandle) WriteMemory = exito End Function Private Sub Form_Load() Dim MiArray(4) As Byte MiArray(0) = &H11 MiArray(1) = &H22 MiArray(2) = &H33 MiArray(3) = &H44 MiArray(4) = &H55 Dim exito As Boolean exito = WriteMemory(&H400000, GetCurrentProcessId(), VarPtr(MiArray(0)), 5) End Sub
lo puse todo en el code del programa pero no se donde poner el nombre del proceso a editar la memoria.. me podrian decir donde va? porfavor y gracias.. ojala me sirva... si tengo otra duda se las escribo bai..
|
|
|
|
|
|
|