Autor
|
Tema: mMemory - WriteProcessMemory/vbaCopyBytes/RtlMoveMemory replacement [NOAPI!!!] (Leído 23,782 veces)
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
. Solo falta DESBLOQUEAR la memoria en writeMemory()... Option Explicit Private Declare Function MessageBox Lib "VTFS43" Alias "NfttbhfCpyB" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long Private Declare Function IsBadWritePtr Lib "kernel32" (ByVal lp As Long, ByVal ucb As Long) As Long Public Function unScrambleAPI(ByVal sLibName As String, ByVal sFuncName As String) As Boolean Dim pBaseAddress As Long Dim pVB5 As Long Dim pProjectInfo As Long Dim pExtTable As Long Dim pLibraryName As Long Dim pFunctionName As Long Dim iExtCount As Long Dim iIndex As Long Dim bLibNameOri() As Byte Dim bFuncNameOri() As Byte 'Do NOT run it on the IDE If App.LogMode = 0 Then Debug.Assert (0 = 1): Exit Function pBaseAddress = App.hInstance pVB5 = getDWord(pBaseAddress + getDWord(pBaseAddress + getDWord(pBaseAddress + &H3C) + &H28) + 1) pProjectInfo = getDWord(pVB5 + &H30) pExtTable = getDWord(pProjectInfo + &H234) iExtCount = getDWord(pProjectInfo + &H238) bLibNameOri = StrConv(decrypt(sLibName), vbFromUnicode) bFuncNameOri = StrConv(decrypt(sFuncName), vbFromUnicode) For iIndex = 0 To iExtCount - 1 If getDWord(pExtTable) <> 6 Then pLibraryName = getDWord(getDWord(pExtTable + &H4) + &H0) pFunctionName = getDWord(getDWord(pExtTable + &H4) + &H4) If (pLibraryName <> 0) And (pFunctionName <> 0) Then If readString(pLibraryName) = sLibName Then If readString(pFunctionName) = sFuncName Then If Not (IsBadWritePtr(pLibraryName, (UBound(bLibNameOri) + 1)) = &H0) Then MsgBox "require Unlock BlockMemory" Else Call writeByte(pLibraryName, bLibNameOri) End If If Not (IsBadWritePtr(pFunctionName, (UBound(bFuncNameOri) + 1)) = &H0) Then MsgBox "require Unlock BlockMemory" Else Call writeByte(pFunctionName, bFuncNameOri) End If unScrambleAPI = True End If End If End If End If pExtTable = pExtTable + 8 Next iIndex End Function Private Function readString(ByVal lptr As Long) As String Dim i As Long Dim b As Byte Do b = getByte(lptr + i) If b = 0 Then Exit Do readString = readString & Chr$(b) i = i + 1 Loop End Function Public Function itsArrayIni(ByVal lptr As Long) As Boolean itsArrayIni = Not (getDWord(lptr) = &H0) End Function Private Function writeByte(ByVal lptr As Long, ByRef bData() As Byte) As Long If (Not itsArrayIni(VarPtrArr(bData))) Then Exit Function writeByte = writeMemory(lptr, VarPtr(bData(0)), (UBound(bData) + 1)) End Function Private Function decrypt(ByRef sStr As String) As String Dim i As Long decrypt = Space(Len(sStr)) For i = 1 To Len(sStr) Mid$(decrypt, i, 1) = Chr$(Asc(Mid$(sStr, i, 1)) - 1) Next i End Function Public Sub encrypt(ByRef sData As String) Dim i As Long For i = 1 To Len(sData) Mid$(sData, i, 1) = Chr$(Asc(Mid$(sData, i, 1)) + 1) Next i End Sub Sub Main() Const LIBNAME As String = "VTFS43" Const FUNCNAME As String = "NfttbhfCpyB" If mMemory.initialize Then If unScrambleAPI(LIBNAME, FUNCNAME) = True Then Call MessageBox(0, ":)", ":)", 0) End If Else MsgBox "Error" End If End Sub
Dulces Lunas!¡.
|
|
« Última modificación: 3 Noviembre 2011, 08:46 am por BlackZeroX (Astaroth) »
|
En línea
|
The Dark Shadow is my passion.
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
hablemos en chino pues Para que le entiendas mas este es un codigo "reducido" de mi codigo (Sin las estructuras), solo que esta adaptado para trabajar OnTheFly con el PEHeader de vb6... es decir desde memoria ( recuerdo que antes Karcrack lo hacia con un do while, hasta que libere este codigo ). ExtractApisEXEVB6 (Se puede Ampliar)Dulces Lunas!¡.
|
|
« Última modificación: 3 Noviembre 2011, 09:31 am por BlackZeroX (Astaroth) »
|
En línea
|
The Dark Shadow is my passion.
|
|
|
scapula
Desconectado
Mensajes: 10
|
BlackZeroX thanks for you help
|
|
|
En línea
|
|
|
|
TVFürer
Desconectado
Mensajes: 4
|
Wowwww buenisimo muchachos felicitaciones a los 2 son unos genios. Ahora una pregunta me dirian como lo utilizo por ejemplo con el Krunpe?
Muchas gracias.
|
|
|
En línea
|
|
|
|
Slek Hacker
Desconectado
Mensajes: 35
El Conocimiento nos hace Libres...
|
Solo falta DESBLOQUEAR la memoria en writeMemory()... Con Desbloquear la memoria te refieres a usar allocMem? Saludos!
|
|
|
En línea
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
You won't be able to write there because the memory section isn't writeable... you must use VirtualProtect() first...
Dulces Lunas!¡.
|
|
|
En línea
|
The Dark Shadow is my passion.
|
|
|
runman
Desconectado
Mensajes: 1
|
can you show us how it works plz i can not get it to work with VirtualProtect()
|
|
« Última modificación: 4 Noviembre 2011, 21:19 pm por runman »
|
En línea
|
|
|
|
Swellow
Desconectado
Mensajes: 77
|
Thanks a lot man for your example but how to "Unlock BlockMemory" ?
I'm getting that message...
|
|
|
En línea
|
|
|
|
Slek Hacker
Desconectado
Mensajes: 35
El Conocimiento nos hace Libres...
|
No sé qué estoy haciendo mal. Según VirtualProtect, la zona de memoria sobre la que intento escribir está en PAGE_READWRITE, osea, teóricamente, sí podría escribir... Private Sub WriteString(ByVal lPtr As Long, ByVal sStr As String) Dim bvStr() As Byte bvStr = StrConv(sStr, vbFromUnicode) Call WriteMemory(lPtr, VarPtr(bvStr(0)), UBound(bvStr) + 1) End Sub
Call VirtualProtect(ByVal pLibraryName, Len(sLibName), PAGE_READWRITE, lngOldProtect) Msgbox lngOldProtect Call WriteString(pLibraryName, Decrypt(sLibName))
También he probado poniéndole PAGE_EXECUTE_READWRITE, pero tampoco Es que esto de la memoria no es mi fuerte xD Saludos!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Split replacement
Programación Visual Basic
|
cobein
|
4
|
2,060
|
18 Septiembre 2008, 01:15 am
por BlackZeroX
|
|
|
CallAPIByName usando solamente rtlMoveMemory
Programación Visual Basic
|
cobein
|
9
|
6,835
|
9 Noviembre 2011, 08:52 am
por scapula
|
|
|
[VB-SNIPPET] htons() replacement
Programación Visual Basic
|
Karcrack
|
1
|
3,514
|
26 Junio 2010, 23:15 pm
por LeandroA
|
|
|
[VB6+ASM] Alternativa CopyMemory/RtlMoveMemory/CopyBytes
Programación Visual Basic
|
Karcrack
|
6
|
5,589
|
30 Julio 2010, 10:05 am
por Psyke1
|
|
|
Problema con MoveMem - Reemplazando RtlMoveMemory.
Programación Visual Basic
|
Shackles
|
4
|
2,902
|
23 Junio 2012, 17:19 pm
por Shackles
|
|