Accueil > Forum > > > > traduction c++ ---> asm
traduction c++ ---> asm
mercredi 6 septembre 2006 à 21:45:50 |
traduction c++ ---> asm

tezca_system
|
Bonjour,
j'adore l'asm, sa fluidité, son agilité a pacourir les registres, sa rudesse et sa capacité à obeir au doigt et a l'oeil. Je connais le c++, plus moins que plus. mais mieux que l'asm. Passons au chose passionante, par rapidité et souci de voir un résultat prompt et correct j'ai codé un bout de code en c++, le voici:
#include <windows.h>
int main(void) {
// On crée la structure startupinfo STARTUPINFO startupinfo; // On la rempli avec des 0 memset (&startupinfo, 0, sizeof (STARTUPINFO)) ; // on indique a la structure sa taille startupinfo.cb = sizeof(startupinfo); // On crée la structure process PROCESS_INFORMATION process; // On la rempli avec des 0 memset (&process, 0, sizeof (PROCESS_INFORMATION)) ;
// La ou on va placer la portion de memoire lu char memread[1]; // Si on passe des arguments char* cmdline; // on recupere les arguments cmdline = GetCommandLine(); // on crée le proces if (CreateProcess("LogTarget.exe", cmdline, NULL, NULL,FALSE, NORMAL_PRIORITY_CLASS,NULL, NULL, &startupinfo, &process)) { // On ecrit dans la memoide du grog WriteProcessMemory (process.hProcess, (LPVOID)0x401016, "\x90", 1, NULL); WriteProcessMemory (process.hProcess, (LPVOID)0x401017, "\x90", 1, NULL);
// On a plus besoin de rien faire on ferme l'handle // pas le prog juste l'handle CloseHandle (process.hProcess); CloseHandle (process.hThread);
} else { // on a pas pu l'ouvrir MessageBox(NULL, "Erreur Imposible d'ouvrir Crackme.exe", "Erreur", MB_OK|MB_ICONERROR); exit(-1); }
return 1;
}
Je me suis inspiré evidement pour ceux qui reconnaisse, donc ce que je souhait par dessus tout c'est reecrire ce code en assembleur Win32. Pourriez vous m'aider svp c'est important pour moi. Je pense qu'après cela je serais plus complet. Je commence evidement dès ce soir. Merci par avance
P.S: ce qui m'embete c'est pas trop les appels de fonction evidement et le passage en pile de leur argument, c'est entre autre quelques details, la traduction du de la fonction memset.
|
|
jeudi 7 septembre 2006 à 00:45:26 |
Re : traduction c++ ---> asm

BruNews
|
Réponse acceptée !
typedef struct _STARTUPINFO { DWORD cb; LPTSTR lpReserved; LPTSTR lpDesktop; LPTSTR lpTitle; DWORD dwX; DWORD dwY; DWORD dwXSize; DWORD dwYSize; DWORD dwXCountChars; DWORD dwYCountChars; DWORD dwFillAttribute; DWORD dwFlags; WORD wShowWindow; WORD cbReserved2; LPBYTE lpReserved2; HANDLE hStdInput; HANDLE hStdOutput; HANDLE hStdError; } STARTUPINFO, *LPSTARTUPINFO;
memset dit de mettre chaque octet à 0. MAIS serait idiot pour cb vu qu'on doit y mettre la size. 16 membres de 4 octets + 2 WORD donc sizeof = 68. On dira donc 16 DWORDs à remplir de 0 (pas membre cb qui est le 1er).
lea eax, [esp-4] ; adresse dernier membre future STARTUPINFO mov ecx, 16 ; on ne fera pas le membre cb sub esp, 68 ; a que voila une belle STARTUPINFO setZERO: ; bouclage du memset, 4 octets mis à zero par passe mov dword ptr[eax], 0 sub eax, 4 sub ecx, 1 ; meilleur que "dec ecx" pour l'alignement des instructions jnz short setZERO mov dword ptr[eax], 68 ; cb = sizeof(STARTUPINFO)
Inutile de faire de la philo sur l'ASM, trace plutot sur papier le schéma de la pile (ESP) et tout deviendra clair.
ciao... BruNews, MVP VC++
|
|
jeudi 7 septembre 2006 à 05:56:41 |
Re : traduction c++ ---> asm

ToutEnMasm
|
Salut, Pas besoin de redefinir les structures les plus courantes avec masm et de se livrer a de la programmation genre listing parfaitement illisible.Masm est un langage de haut niveau très proche du c dans son écriture. ToutEnMasm
;--------------------------------------------- include windows.inc
Main Proc
Local startupinfo:STARTUPINFOA invoke RtlZeroMemory,addr startupinfo,sizeof startupinfo .. .... et la suite ret
Main endp
|
|
jeudi 7 septembre 2006 à 09:21:24 |
Re : traduction c++ ---> asm

BruNews
|
ouhhh qu'il est médisant ToutEnAsm ce matin.... Je n'ai rien redéfini, la définition de la structure est en C, copier-coller de MSDN juste pour l'avoir devant les yeux que je l'ai mise ici.
Plus sérieux: MASM n'est qu'un assembleur. Il est livré avec un analyseur syntaxique à base de macros qui remplaceront les lignes avec "invoke, "addr" et autres bidules de ce genre mais ce n'est pas cela qui en fera un langage, il manque (comme en C) le compilo et surtout son optimiseur.
"...par rapidité et souci de voir un résultat prompt et correct..." Au vu du 1er paragraphe de ce post, on voit qu'on a affaire à un complet débutant. La demande est ASM et non pas du C en moins bon. Si c'est pour PUSHer 2 params et faire un call sur RtlZeroMemory, vaut mieux rester en C, le compilo aurait inséré direct de l'ASM en place du call.
ciao... BruNews, MVP VC++
|
|
jeudi 7 septembre 2006 à 11:19:07 |
Re : traduction c++ ---> asm

tezca_system
|
Bonjour,
En effet très clair en prennant le temps. Vraiment formidable. A terme ce bout de code devera etre integrer a un exe afin de lui permettre de se patcher lui meme...donc faire du bas niveau est vraiment nécessaire selon moi. Merci beaucoup
|
|
jeudi 7 septembre 2006 à 11:26:14 |
Re : traduction c++ ---> asm

tezca_system
|
lol ca sera peut etre l'objet d'un autre post...mais si vous avez des bonnes docs, des liens des methodes du code a propos de l'utilisation de fonction non importé dans un exe.........notamment WriteProcessMemory, (afin de patcher evidement) je suis tout ouie.
Car comment patcher un exe de lui meme, si la fonction qui sert a patcher n'est pas importée? Appremment faire le Mac Gyver avec l'IAT...
merci par avance
|
|
jeudi 7 septembre 2006 à 11:35:56 |
Re : traduction c++ ---> asm

BruNews
|
Réponse acceptée !
comment ça "non importé" ??? WriteProcessMemory tu l'obtiens par GetProcAddress si tu ne veux pas qu'il soit en clair dans les imports de l'exe.
ciao... BruNews, MVP VC++
|
|
jeudi 7 septembre 2006 à 12:37:58 |
Re : traduction c++ ---> asm

tezca_system
|
D'accord c'est que j'ai mal exprimé ma question... merci beaucoup. 
|
|
jeudi 7 septembre 2006 à 13:50:16 |
Re : traduction c++ ---> asm

ToutEnMasm
|
Précision utile, Aucune médisance de ma part,je ne fais que préciser qu'avec masm nombre de définitions sont déja dans windows.inc,c'est tout. Tant qu'au machin bidule du genre invoke et addr , on vient bien la un nostalgique de la programmation binaire (la c'est franchement de la médisance (rire))
ToutEnMasm
|
|
jeudi 7 septembre 2006 à 14:14:49 |
Re : traduction c++ ---> asm

ToutEnMasm
|
J'ai oublié de préciser qu'avec GetProcAddress il faut crypter le nom de la fonction qui doit se trouver obligatoirement en data sinon il vaut mieux utiliser la librairie c'est plus simple.Mais dans un cas comme dans l'autre un bon debugger n'a pas beaucoup de problèmes pour identifier les fonctions. On peut aussi faire appel a non import (c'est a dire aucune librairie) un exemple est sur mon site page librairie, ToutEnMasm
|
|
Cette discussion est classée dans : process, crée, asm, traduction, startupinfo
Répondre à ce message
Sujets en rapport avec ce message
Compileur ASM [ par fabiin ]
SalutQuel compileur ASM me conseillez-vous ???Merci @+Fabs
Besoin de conseils en livre sur l'asm! [ par BlackWizzard ]
je voudrais m'acheter un livre sur l'asm sans trop de blabla et pas trop cher...qqun a qqchose a me conseiller?
virgule flotante en asm [ par webfish ]
Bonjour, Je fais de l'assembleur depuis pas longtemps, et j'aimerais savoir comment on fait des calculs avec des nombres à virgule flotante...
asm [ par damien174 ]
bonjour je viens de commencer a faire de l ASM sur PC, car je connais tres bien sur 68HC11.Avez vous des cours et un logiciel pour assembler et compil
ASM pour 68hc11 [ par Sphaxs ]
SphaxsSalut tout le monde,J'ai fait une plaque de test pour utiliser un 68hc11 mais je n'arrive pas à le programmer (pb de logiciel???), si quelqu'un
passage de paramétres entre VCpp et ASM [ par orchis ]
bjr a tous,j'ai ecris un programme en VCpp dont un module est en assembleur, mais je ne sais faire passer des paramétres entre les deux !! pourriez vo
Routine asm dans gcc [ par Juke ]
quelqu'un connait t'il un txt en francais qui explik comment incorporer de l'asm dans du c++ avec gcc ou dev-c++ ?
Reboot de la machine en c/c++ ou asm [ par Juke ]
quelqu'un sait t'il comment rebooter ou éteindre l'ordinateur en c/c++ ou en asm ?merci de votre aide.juke
objets ASM [ par gblade ]
est ce que qqun saurait comment exporter des membres statics d'une classe ecrite en ASM ? je sais faire avec les membres virtuels mais pas les statics
Cherche développeurs asm pour OS [ par Shinji ]
Salut, je cherche des gens intéressés par le développement d'un système d'exploitation sur x86 en asm (pour commencer).J'essaie seul pour le moment et
Livres en rapport
|
Derniers Blogs
COMMENT MAPPER UNE VUE SQL SUR UNE COLLECTION DE COMPLEX TYPE?COMMENT MAPPER UNE VUE SQL SUR UNE COLLECTION DE COMPLEX TYPE? par Matthieu MEZIL
Avec EF, les vues doivent être mappées sur des entity types. Le problème c'est que les entity types doivent avoir une clé. Avec EF, nous avons les complex type qui n'ont pas de clé mais les vues ne peuvent pas être mappées dessus. Avec EF4, il est possibl...
Cliquez pour lire la suite de l'article par Matthieu MEZIL [WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL?[WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL? par JeremyJeanson
Certain d'entre vous on peut être vécu cette situation embarrassante après quelques temps passer avec WF4 : Au début avec mon " ActivityDesigner" , tout allait bien. Et puis un jour j'ai au des problèmes de " Binding" . Alors nous sommes allé sur le site ...
Cliquez pour lire la suite de l'article par JeremyJeanson MYTIC - SHAREPOINT 2010 : DéJà UN MYTHE MICROSOFT ?MYTIC - SHAREPOINT 2010 : DéJà UN MYTHE MICROSOFT ? par junarnoalg
La prochaine session de MyTIC aura lieu à Namur, le 23 mars prochain. Pendant presque une heure, nous parlerons de SharePoint 2010. Voici un aperçu du programme.
Accueil : 17h30 Début de la session : 18h00 - Les nouvelles int...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
RE : ASSEMBLEURRE : ASSEMBLEUR par solleil
Cliquez pour lire la suite par solleil RE : ASSEMBLEURRE : ASSEMBLEUR par ghuysmans99
Cliquez pour lire la suite par ghuysmans99
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|