Accueil > Forum > > > > execution de code dans DS
execution de code dans DS
mardi 23 août 2005 à 00:21:33 |
execution de code dans DS

Arnaud16022
|
hello ...
question importante - pour moi -
y a-t-il moyen d executer du code contenu dans le Data Segment ?
je veux dire....
je cree unn pointeur . celui ci pointera vers uune zone du data segment
( si il y a moyen l allouer de la mem dans CS suis preneur)
on alloue ded la memoire et on copie colle a partir du disque un code assemblé/linké .
en faisant dans le prog principal un call sur le pointeur, le code copié devrqit etre executé;
je ne parle ici pas des compilcatons / pbs de ce systeme, je veux juste savoir une chose:
est-ce possible ?
je ne pense pas, etant donne qu apres l'execution d une instruction, un registre est incrementé.... enfin j en sais rien
si non :
est-il possible d'allouer de la mem dans le Code Segment ? la encore, je doute ... enfin ... prions le Seigneur.
Audaces fortuna juvat , non ?
++
ad _______________________
Omnia vincit labor improbus
|
|
mardi 23 août 2005 à 09:16:34 |
Re : execution de code dans DS

Nasman
|
Je ne suis pas spécialiste de trucs aussi pointus mais peut-être que je pourrais faire avancer le schmillblick.
Le code que tu devrais insérer est-il de longueur fixe ? Dans ce cas on
peut imaginer modifier les infos du header du programme (de quel type
de fichier s'agit-il, 16 bits, 32 bits, PE ?) pour laisser de la place
au programme à insérer.
L' insertion devrait pouvoir s'effectuer dans la zone des données mais
l'exécution est plus problématique. Il faudrait définir la section des
données comme readable, writable (normal) mais aussi executable. Ceci
doit pouvoir être modifié avec un éditeur hexa en changeant les octets
régissant les droits d'accès aux sections.
Tu devrais choisir entre:
Insérer le code dans la section code : dans ce cas la section code doit être writable
Insérer le code dans la section data : dans ce cas la section data doit être exécutable
Pour voir mieux la faisabilité de la chose je pense que le format du fichier exécutable doit être pris en compte.
.com (1 seule section CS=DS) peut-être plus facile à gérer
.exe 16 bits (peut-être qu'un call far permet de "sauter" dans la
section data mais je ne sais pas si on peut la rendre exécutable)
.exe 32 bits (je pense que plus de possibilités sont offertes mais il faut savoir modifier les accès aux sections).
|
|
mardi 23 août 2005 à 09:16:48 |
Re : execution de code dans DS

BruNews
|
Réponse acceptée !
SOUS WINDOWS: Voir 3eme param de VirtualProtect (positionner le flag PAGE_EXECUTE). VirtualAlloc idem.
ciao... BruNews, MVP VC++
|
|
mardi 23 août 2005 à 13:37:34 |
Re : execution de code dans DS

Arnaud16022
|
heu ...alors:
"Le code que tu devrais insérer est-il de longueur fixe" oui , d une
certaine facon, mais cette taille n'est connue qu apres la compilation
du prog.
" Tu devrais choisir entre:
Insérer le code dans la section code : dans ce cas la section code doit être writable
Insérer le code dans la section data : dans ce cas la section data doit être exécutable"
bah oui et justement ma question c est : comment on fait ca ? en C++ je veux dire, ou si c est pas possible en asm
pour les far jumps j'y avais deja pense mais la ya des segfaults ( selon Funto)
pour VirtualProtect et VirtualAlloc je ne sais pas ce que c est.
petite precision: c'est pour Windows; le portage pour Nux est
prevu mais l'AT&T, c'est chiant. ca attendra que la version win
marche.
_______________________
Omnia vincit labor improbus
|
|
mardi 23 août 2005 à 15:01:10 |
Re : execution de code dans DS

BruNews
|
VirtualAlloc y en a plein mes sources, t'auras pas de malaise pour en trouver. Faut passer par cette fonction pour allouer de la mémoire correctement alignée. En plus de MSDN, faut lire Richter et tu sauras tout, pas compliqué du tout. VirtualProtect change les drapeaux de page mémoire, encore plus simple.
ciao... BruNews, MVP VC++
|
|
mardi 23 août 2005 à 15:29:19 |
Re : execution de code dans DS

Arnaud16022
|
hum suis allé voir sur MSDN pour VirtualAlloc, ya meme un exemple de
code pour ca, le seul pb c est qu'ils utilisent des termes d'anglais
que je ne connais pas lol
bon alors en gros, pur etre sur:
J'utilise VirtualAlloc un peu comme malloc, en utilisant le flag
PAGE_EXECUTE ( a propos, pk pas PAGE_EXECUTE_READWRITE ? il faut bien
que j'y ecrive dans cette mem.... )
ensuite j'y copie mon code, lequel commence, en asm, par un label et se finit par un ret
dans le prog je fais, en asm, un call sur le pointeur que m'a donné
VirtualAlloc, et qd le code est executé ca revient comme un grand au
prog principal, puisqu'il n'y a qu'a depiler l'adresse... non ? ya une
couille qqpart ou c'est cesé marcher ?
moi en tout cas j'essaye comme ca.
merci beaucoup
++
ad _______________________
Omnia vincit labor improbus
|
|
mardi 23 août 2005 à 15:43:54 |
Re : execution de code dans DS

BruNews
|
PAGE_EXECUTE_READWRITE devrait aller. J'utiliserais le JMP que je mettrais sur stack et le dépilerais pour retour depuis ce code mais tu peux tester ta version, les 2 peuvent s'admettre si elles sont correctement codées (l'asm que tu dois mettre a l'adresse allouée).
ciao... BruNews, MVP VC++
|
|
mercredi 24 août 2005 à 08:56:51 |
Re : execution de code dans DS
|
mercredi 24 août 2005 à 10:29:05 |
Re : execution de code dans DS

Arnaud16022
|
ah oui mais la ya comme qui dirait un gros pb:
c'est que ca dépasse de fort loin mes maigres connaissances en asm lol
admettons que je veuille mettre en memoire ce code:
segment .text
global _asm_main
_asm_main:
enter 0,0
pusha
mov eax,0
popa
leave
ret
on peut pas dire que ce soit méga sophistiqué comme code. bon jle
compile (nasm -f win32 test.asm), jle linke (ld test.obj -o test.exe
--entry _asm_main, ld est le linker de dev-c++), et je me retrouve avec
un exe de 3Ko...ce qui me semble deja enorme comparé au code.
maintenant si je le chager avec le desassembleur de VC6, impossible de
retrouver ce code dans tout ce fourbi ...par contre ya partout du code
bizarre et inconnu.
ceci dit, j'ai essayé ton prog sur mon test.exe (modifié avec une boucle infinie) ca marche bien ton truc ^^
++
ad
_______________________
Omnia vincit labor improbus
|
|
mercredi 24 août 2005 à 11:56:06 |
Re : execution de code dans DS
|
Cette discussion est classée dans : moyen, code, execution, ds, segment
Répondre à ce message
Sujets en rapport avec ce message
DLL et Code Segment [ par Taron31 ]
Bonjour, j'ai une question peut-être un peu étrange : en effet, je voudrais savoir si tout le code d'une DLL (par exemple NtDll.dll) est situé dans un
utilisation des variables [ par moffer ]
Bonjour à tous.J'ai besoin de recopier ma variable chaine au segment 0b800 pour l'afficher, sans utiliser les interruptions. (c'est pour ensuite la fa
Adresse mémoire d'une chaine [ par moffer ]
Bonjour,Je veux pointer sur le premier caractère de ma chaine. Lorsque je compile le code suivant :SEGMENT DATAchaine db 'Hello$'SEGMENT TEX
rs232 [ par TRAX44 ]
salut,tout premièrement je sais qu'il ya des exemples sur le site!mais mon problème est autre je tiens à comprendre pourquoi mon code ne fonctionne pa
SEGMENT SOUS NASM [ par Berty2000 ]
Salut.je debute l'assembleur.Dans un prog EXE,comment recuperer la valeur du segment data dans lequelse trouve mot.pour l'offset, il suffit de faire m
Test souris && pause clavier [tasm] [ par merzhin ]
Bonjour voila, jutilise 2 procédure :une pour faire un test soursi (ki me donne les coordonné de la position de la souris ainsi que l'etat des buttons
appeller du C en asm [ par S2R ]
Bonjour, je voudrait savoir comment utiliser un code écrit en C dans un code assembleur.
[NEWB] allocation de mémoire ? [ par Cow_B ]
Salut à tous !Je commence tout juste l'assembleur, je n'ai pas encore écrit dix ligne que je me retrouve coincé.... Je voudrais faire une réservation
bug masm? [ par vecchio56 ]
j'ai le code minimal suivant:.386.model flat, stdcall .data .code start: end startmais le pb c'est qu'au linkage il me met
segment partagé en masm32 [ par anthraxx ]
bonjour a tous,je connais l'assembleur mais je suis pas tres habitué a masm32, et je me demandais ce qu'il faut mettre pour qu'un segment donné de ma
Livres en rapport
|
Derniers Blogs
[FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : SYSTEM CENTER SERVICE MANAGER 2012 VUE D'ENSEMBLETECHDAYS PARIS 2012 : SYSTEM CENTER SERVICE MANAGER 2012 VUE D'ENSEMBLE par ROMELARD Fabrice
Speakers: Julien Marechal, Gautier Confiant, Sébastien MEYER La session débute par le positionnement de la solution System Center par rapport aux concepts d'organisation ITIL. Le portail du catalogue de se...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : PLEINIèRE SECOND JOURTECHDAYS PARIS 2012 : PLEINIèRE SECOND JOUR par ROMELARD Fabrice
Après une première journée dédiée aux développeurs, cette seconde journée est dédiée au monde des entreprises et de ses applications. Ainsi, cette pleinière est dédiée à faire un 360 de l'évolution des applications Business aux demandes ac...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|