Pseudo emulateur d'exe

Soyez le premier à donner votre avis sur cette source.

Vue 6 469 fois - Téléchargée 495 fois

Description

Il y a quelques temps, j'ai voulu créer un émulateur d'exécutables, mais j'ai été vite dépassé par l'ampleur du sujet, et je n'est pas les connaissances requises (et puis le VB...). Peut-être quelques parties de ce projet pourront servir à d'autres. J'avais dans l'idée de l'utiliser pour comprendre le fonctionnement de l'initialisation d'un executable.

Conclusion :


Je précise que malheureusement, il n'est pas fonctionnel. Désolé pour l'absence de commentaires dans certains sources.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
4
Date d'inscription
dimanche 5 juillet 2009
Statut
Membre
Dernière intervention
5 juillet 2009

hola y gracias
Messages postés
8
Date d'inscription
mardi 18 février 2003
Statut
Membre
Dernière intervention
16 juin 2009

J'en prends note. Et en effet comme tu l'as suggéré, je voulais que mon projet s'oriente plutôt vers un debugger. Le genre de debugger ou les Hardware breakpoints (ex.) ne risquent pas de se faire détecter et encore moins effacer par un quelconque SEH. J'avais aussi prévu un ordonnancement de taches (threads, essentiels en appli windows). Mais bon, c'est vraiment beaucoup de boulot.
Pas de problème, je te tiendrai au courant, mais j'avoue que ce ne sera pas pour tout de suite (beaucoup de boulot)...
Messages postés
16
Date d'inscription
jeudi 4 novembre 2004
Statut
Membre
Dernière intervention
18 décembre 2009

Pour un message box, en décompilant du code VB (vbdecompiler), tu verras que l'affichage d'une message box se fait uniquement en chargeant la DLL et faisant un simple call à la fonction msgbox, avec l'adresse de la chaine en argument. tu as déjà presque fait le décompiler, peut-être peux-tu lister tous les appels (call) à des api (user32.dll, kernel32.dll, ...) dans l'assembleur d'un programme Windows et faire une petite interface VB qui charge le programme,le décompile, l'éxécute et appelle ces DLL, tu pourras ainsi simuler et contrôler le programme peut-être à la WinICE/SoftIce, c'est juste une première étape, ensuite faudra regrouper les autres bouts de code ASM en "fonctions" que tu appelera aussi comme pour les DLL. tu devrais avoir ainsi un système proche de ton but que tu pourras porter sur d'autres OS en portant les DLL windows, ou prendre celles de wine ou faire les tiennes pour changer le look, tu pourras aussi développer un soft comme citrix ou tse pour piloter ton appli à distance.
Ton programme devrait fonctionner avec les applis XP,vista et seven (32 bits bien sur). En tout cas, tiens moi informé lorsque tu as une version qui tourne.
Messages postés
8
Date d'inscription
mardi 18 février 2003
Statut
Membre
Dernière intervention
16 juin 2009

Oui, à la base c'est comme cela que je l'avais vu. Je voulais émuler les programmes windows seulement. J'avais pensé à faire une sorte d'hyperviseur et n'émuler que le user land. Pour la partie kernel land, je pensais récupérer tous les syscall et y mettre mon code. Mais ça fait un sacré boulot. Je n'ai pas abandonné, je regarde un peu de tout, les sources Wine, QEMU, JPC (Pc émulé en java - très intéressant), les source d'un windows-like libre dont je ne me souviens plus du nom. Évidemment, ce serait pour émuler de petits programmes, genre qui affiche une MessageBox,... Ce serait un début, et je serai assez content si j'arrivai jusque là.
Messages postés
16
Date d'inscription
jeudi 4 novembre 2004
Statut
Membre
Dernière intervention
18 décembre 2009

oui tu as raison, l'emulation d'une machine nécessite d'emuler aussi toutes les autres parties hardware, pas que le processeur. Maintenant tu peux te fixer uniquement un processeur pentium 4 32 bits avec un programme et de la RAM qui ne fait pas d'accès au hardware ou éventuellement à chaque "out" ou "intr", tu retoute vers des fonctions de ton programme (affichage, clavier,...) mais tout dépend de ce que tu voulais faire, si c'est exécuter des programmes DOS c + simple, si ce sont des programmes windows, il vaut mieux voir le code de Wine (linux) car toutes les bibliothèques (dll win32) sont déjà codées et compilées, il restera alors à comprendre les entêtes des EXE win32 (MS) et suivre les instructions du processeur qui font la plupart du temps que des appels aux bibliothèques. En effet c un défi auquel il faut compétence et résistance. bon courage.
Afficher les 11 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (cs_Frelon)