les 2 mon capitaineMytic a écrit :@Non ! Pourquoi ? Je ne vois pas l’utilité.
Une variable c’est aussi une mémoire, Donc pourquoi se compliquer la vie alors qu’on peut faire simple.
[Edit] Quand tu dis injection, tu parles de la compilation ou l’exécution ?

je pensais a un truc du genre
on cree un executable contenant juste l'interpreteur pret a marcher
puis avec l'editeur (bouton compilation) on injecte dans cette executable "vide" le code a interpreter....
lors du lancement de cette executable contenant maintenant le code injecté
il s'execute en interpretant le code injecté !!
un peu comme cette exemple
cette exemple utilise le Notepad , on lui injecte avant de le lancer un code
se trouvant dans la procedure "RemoteThread()"
ensuite on execute le notepad, cela lance notre code injecté !!

Code : Tout sélectionner
DisableDebugger ;DISABLES DEBUGGER! This is needed.
Procedure RemoteThread()
MessageRequester("Success", "Injection successed!"); <----- code injecté dans le notepad !!! :d
Beep_(100,200) ; <----- code injecté dans le notepad !!! :D
EndProcedure
Procedure InjectCode(Process.s, *lpCodeToInject)
CreateProcess_(0,Process.s,0,0,0,#CREATE_SUSPENDED,0,0,@sinfo.STARTUPINFO,@pinfo.PROCESS_INFORMATION)
dwPID = pinfo\dwProcessId
hProcess = pinfo\hProcess
dwWritten.l = #Null : pbModule.l = GetModuleHandle_(0) : dwSize.l = PeekL(pbModule+PeekW(pbModule+$3C)+$50)
VirtualFreeEx_(hProcess, pbModule, 0, #MEM_RELEASE)
lpBuffer.l = VirtualAllocEx_(hProcess, pbModule, dwSize, #MEM_COMMIT | #MEM_RESERVE, #PAGE_EXECUTE_READWRITE)
If lpBuffer = #Null : While ResumeThread_(pinfo\hThread)>1 : Wend : CloseHandle_(hProcess) : ProcedureReturn #False : EndIf
If WriteProcessMemory_(hProcess, lpBuffer, pbModule, dwSize, dwWritten) = 0
While ResumeThread_(pinfo\hThread)>1 : Wend : CloseHandle_(hProcess)
ProcedureReturn #False
EndIf
hThread.l = CreateRemoteThread_(hProcess, #Null, 0, *lpCodeToInject, pbModule, #Null, #Null)
If hThread=#Null : CloseHandle_(hProcess) : ProcedureReturn #False : EndIf
While ResumeThread_(pinfo\hThread)>1 : Wend
CloseHandle_(hThread)
ProcedureReturn #True
EndProcedure
If InjectCode("notepad.exe", @RemoteThread()) = #False
MessageRequester("Error!", "Injection failed!")
EndIf
End