Bonjour,
Je suis en train de programmer un injecteur de DLL pour, vous vous en douter, créer un MITM.
J'ai cependant un problème.
Je me suis servi de l'injecteur qu'un membre à posté sur ce site en l'adaptant au VB.Net et en essayant de faire une injection à partir d'une DLL resources mais cela ne marche pas comme je le voudrais.
Voici le code :
Private Function bInject(pToBeInjected As UInteger) As Boolean
Dim hndProc As IntPtr = OpenProcess((&H2 Or &H8 Or &H10 Or &H20 Or &H400), 1, pToBeInjected)
If hndProc = INTPTR_ZERO Then
Return False
End If
Dim lpLLAddress As IntPtr = GetProcAddress(GetModuleHandle("kernel32.dll"), "LoadLibraryA")
If lpLLAddress = INTPTR_ZERO Then
Return False
End If
Dim lpAddress As IntPtr = VirtualAllocEx(hndProc, CType(Nothing, IntPtr), CType(My.Resources.No_Ankama.Length, IntPtr), (&H1000 Or &H2000), &H40)
If lpAddress = INTPTR_ZERO Then
Return False
End If
Dim bytes As Byte() = My.Resources.No_Ankama
If WriteProcessMemory(hndProc, lpAddress, bytes, CUInt(bytes.Length), 0) = 0 Then
Return False
End If
If CreateRemoteThread(hndProc, CType(Nothing, IntPtr), INTPTR_ZERO, lpLLAddress, lpAddress, 0, CType(Nothing, IntPtr)) = INTPTR_ZERO Then
Return False
End If
CloseHandle(hndProc)
Return True
End Function
End Class
J'ai fait une comparaison de variables entre l'injecteur du membre du site qui marche et mon adaptation et les variables sont les mêmes sauf hndProc, ce qui est normal, lpAddress que j'ai essayé de modifié par la valeur de l'autre programme mais ça ne marche pas plus.
Je pense que cela vient de "CType(My.Resources.No_Ankama.Length, IntPtr)" mais je ne savais pas trop par quoi le remplacer et j'ai beau chercher dans la documentation je ne comprend pas trop son utilité.
Les fonctions s’exécutent bien et il y a pas de "Return False" mais le jeu n'est pas patché.
Si des âmes charitables pouvait me guider
Merci d'avance
Totolef