[R] Exécuter des fonctions à partir d'une chaine.

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Exécuter des fonctions a partir d'une chaine.

#21

Message par orax »

Avec XXXX[supprimé] ça n'a rien de sorcier.
Modifié en dernier par jguinch le jeu. 06 nov. 2014 22:49, modifié 1 fois.
Raison : Suppression du lien
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Exécuter des fonctions a partir d'une chaine.

#22

Message par jchd »

ses personnes qui décompilerais mon .exe n'auront quand même pas les 100% du programme
Bien sûr que si.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Exécuter des fonctions a partir d'une chaine.

#23

Message par jguinch »

@orax : This software is in direct violation of the AutoIt license agreement. Donc pas de lien vers ce truc :roll:
http://www.autoitscript.fr/wiki/FAQ_Decompilation
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Exécuter des fonctions a partir d'une chaine.

#24

Message par orax »

@jguinch Ah autant pour moi ! :oops: J'avais cru qu'il s'agissait du même décompilateur qu'il y avait avant dans le dossier "Extras". Image
mica2727 a écrit :Si je compile mon script, et que les données sont compilé dedans, oui il peut toujours le décompilé, et donc retrouver le mot de passe et l'accès vers ma BDD MSSQL :s
Et en plus si le script doit se connecter sur un serveur distant, il ne faudra pas que le mot de passe soit véhiculé en "clair" (sans chiffrement) sur le réseau. Sinon quoi, il sera facile de le récupérer.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
mica2727
Niveau 4
Niveau 4
Messages : 82
Enregistré le : jeu. 03 oct. 2013 17:32
Status : Hors ligne

Re: [..] Exécuter des fonctions a partir d'une chaine.

#25

Message par mica2727 »

Et vous avez déjà essayé de unpacked un .exe AutoIt packed avec MEW ?

C'est quand même un gros problème qu'il n'existe pas un programme sécurisé. Enfin je suis aussi d'accord que si un programme ne peut pas être lue il ne sert à rien, c'est pour ça que peut importe la complexité il sera toujours décompilable, mais bon.

Et vous savez comment décompiler un .exe compiler avec VC6 ? (je sais, c'est du hors sujet), avec PE Explorer, il récupère les données à l'intérieur, je vois les fonctions en claire, mais j'arrive pas à créer des .c et .h d'après ses données :(
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Exécuter des fonctions a partir d'une chaine.

#26

Message par orax »

PE Explorer c'est plutôt un désassembleur à première vue. Il pourra générer de l'assembleur mais pas des fichiers .c.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Sea
Niveau 6
Niveau 6
Messages : 219
Enregistré le : ven. 22 juin 2012 18:51
Localisation : France
Status : Hors ligne

Re: [..] Exécuter des fonctions a partir d'une chaine.

#27

Message par Sea »

mica2727 a écrit :Et vous avez déjà essayé de unpacked un .exe AutoIt packed avec MEW ?

C'est quand même un gros problème qu'il n'existe pas un programme sécurisé. Enfin je suis aussi d'accord que si un programme ne peut pas être lue il ne sert à rien, c'est pour ça que peut importe la complexité il sera toujours décompilable, mais bon.

Et vous savez comment décompiler un .exe compiler avec VC6 ? (je sais, c'est du hors sujet), avec PE Explorer, il récupère les données à l'intérieur, je vois les fonctions en claire, mais j'arrive pas à créer des .c et .h d'après ses données :(
Que du méli-mélo je te conseil de lire l'initiation au C de openclassroom(tu comprendras enfin comment un programme fonctionne et enfin pourquoi tout ce que tu mets sur l'ordinateur de ton client crypté en AES 1024+ RSA +LaCryptoDeLaMortKiTue sers à rien face a quelqu'un qui s'y connais...).Et tu comprendras la différence entre un langage scripté et un langage compilé... Cest vrai que tout les jeux développer par des entreprises qui possèdes des millions de dollars sont vraiment des noobs a ne pas arriver a proteger leur jeux... (ceci est un troll)

Bref vu que ton packer Mew, te rend (d'apres toi) ton truc illésible, je vais t'expliquer comment un packer fonctionne.
Il va crypter ton executable le foutre dans ces ressources, ensuite lorsque tu doubles click sur ton exe précédemment packé, celui-ci va lancer des fonctions de check sur l'environnement et lancer une fonction de decryptage qui va charger sois ton programme en mémoire sois créer un processus de programme (decrypter OFC). Donc la il te suffit de dump ce que ta en mémoire reconstruire l'IAT(Import Adress Table) et hop tu as ton .exe autoit unpacked. Tu as plus qu'a lire ton EOP et hop tu as ton script. Bref une autre idée de génie? :)

De plus on ne peux pas decompiler du C++ car c'est un langage compilé(c'est a dire traduit en code assembleur, que ton processeur va comprendre...) l'autoit, comme le java,le delphi, .net sont des langages qui ne sont pas compilé mais qui sont placé dans une portion de code, puis le reste du programme va traduire cette portion de code autoit,.net,java en assembleur qui lui va être compréhensible par le processeur.
Si tu veux debug télécharge Ollydbg, apprend l'assembleur et voila ;)


Et pour finir je le redis le problème c'est de donner la réponse d'une énigme, a la personne a qui tu poses l'énigme.
Tu veux un truc sécure ne lui donne pas la réponse et arrange toi pour qu'il puisse en savoir le moins possible.
Donc si tu veux que tes fonction SQL sois safe, ne les executes pas par ton client directement ou alors rajotue un système de protection sur ton serveur pour checker toutes les requetes...
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Exécuter des fonctions a partir d'une chaine.

#28

Message par jguinch »

@mica2727 : donc tu l'auras compris, il n'y a aucun moyen de protéger ton code contre les voleurs.
Il y a des tonnes de posts concernant cette problématique sur les différents forums, mais personne n'a de solution (forcément !)

Perso, pour planquer un mot de passe, j'ai déjà travaillé sur le scénario suivant (qui n'est pas plus sécurisé qu'un autre scénario) :
- le programme compilé va chercher le mot de passe dans une DLL externe en appelant une fonction, appelons-la _GetPassw()
- la DLL contient le mot de passe, sous forme de chaîne (encodée) découpée dans une variable de type Array (les Array sont à priori plus compliqués à bidouiller)
- la DLL contient le checksum MD5 du programme compilé, également sous forme de chaîne (encodée) découpée dans une variable de type Array.
- la fonction _GetPassw() va d'abord calculer et encoder le checksum MD5 l'exécutable (celui qui fait appel à la DLL), puis va vérifier s'il correspond à celui qui est renseigné dans la DLL. Si ce n'est pas le cas, la fonction renvoi une chaîne vide. Si le checksum MD5 est bon, le programme renvoi le mot de passe.

Mon idée est la suivante :
Si quelqu'un décompile le programme AutoIt et le recompile (en modifiant ou pas le code), le checksum MD5 aura changé, donc il ne pourra pas récupérer le mot de passe. Il faudra qu'il s'attaque à la DLL, ce qui risque d'être plus compliqué (je pense)

@Sea : que pense-tu de ce scénario ? Pense-tu qu'il est plus facile/difficile de s'attaquer à une DLL qu'à un script compilé ? Quel sera le moyen de récupérer le mot de passe ? Un dump de la mémoire le permettra t-il ? Un désasambleur ?
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
mica2727
Niveau 4
Niveau 4
Messages : 82
Enregistré le : jeu. 03 oct. 2013 17:32
Status : Hors ligne

Re: [..] Exécuter des fonctions a partir d'une chaine.

#29

Message par mica2727 »

En faite pour faire simple, vous me dites soit je protège mes données donc aucun mot de passe ni autre chose sensible dans autoit.

Sois je passe a un langage compilé (qui est pas décompilable, d'après ce que j'ai compris), comme le C++.
J'ai fais un peu de cours sur le C++ malgré ce que certain pense, mais ça reste du très compliqué face à AutoIt.

Je vais devoir me posé les bonnes questions alors.
Et personne pour récupérer les fonctions dans C++ V6 ?

Je l'ai vois déjà en claire avec PE Explorer, donc il y a moyen de les récupérés mais je ne trouve pas le logiciel adéquate.
mica2727
Niveau 4
Niveau 4
Messages : 82
Enregistré le : jeu. 03 oct. 2013 17:32
Status : Hors ligne

Re: [..] Exécuter des fonctions a partir d'une chaine.

#30

Message par mica2727 »

J'avais une autre question,
Est-ce que le Qt me permettrait de faire un jeu?
ça a l'air plus simple que C/C++ non?

Le Qt se rapproche un peu d'AutoIt, alors que le C/C++ c'est de la programmation, j'ai déjà essayé 4 fois à l'apprendre mais sans succès.
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2128
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [..] Exécuter des fonctions a partir d'une chaine.

#31

Message par TommyDDR »

Qt est un framework d'interface graphique pour C++, si vous l'utilisez, vous devrez coder en C++.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
mica2727
Niveau 4
Niveau 4
Messages : 82
Enregistré le : jeu. 03 oct. 2013 17:32
Status : Hors ligne

Re: [..] Exécuter des fonctions a partir d'une chaine.

#32

Message par mica2727 »

Oui, mais je vais devoir m'y remettre pour une 5ème fois.

Parce que AutoIt est très bien pour des logiciels "privée" mais pour un logiciel à distribuer, ce n'est pas le mieux sécurisé pour ça, et d'ailleurs si j'ai bien compris AutoIt est quand même développeur dans une optique < Open Source > alors que C/C++ et Qt est fait pour une programmation un peu plus privatisé (selon moi).

Je pense pas me tromper de loin, pour mes logiciels avec la BDD qui reste sur mon pc il y a pas de soucis, mais quand ça touche à des choses plus privée je pense donc me tourner vers C++ une nouvelle fois.

Merci quand même de votre aide l'équipe AutoIt FR :)
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Exécuter des fonctions a partir d'une chaine.

#33

Message par orax »

Mais même avec 'un langage comme le C++, il ne faut pas mettre des données sensibles dans un programme.
TommyDDR a écrit :Vous ne pourrez pas protéger votre script à 100% et ce dans tous les langages. Pour garder votre mot de passe au chaud, je confirme qu'une solution serait de ne pas le donner au client et de passer par un serveur qui fera les requêtes pour le client.
Sea a écrit :Donc si tu veux que tes fonction SQL sois safe, ne les executes pas par ton client directement
Avec Qt il y aussi des "bindings" dans d'autres langages mais je suppose que le C++ est le plus approprié.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
mica2727
Niveau 4
Niveau 4
Messages : 82
Enregistré le : jeu. 03 oct. 2013 17:32
Status : Hors ligne

Re: [..] Exécuter des fonctions a partir d'une chaine.

#34

Message par mica2727 »

Merci de votre aide, je pense que je vais faire ça.
Mais vu que c'est un jeu 3D c'est mieux C++ et Qt ou que C++ ? Qt c'est fait pour les interfaces non? alors que C++ c'est plutôt du langage pure, mais pour les interfaces c'est assez compliqué.

De plus il existe Qt Creator pour créer des interfaces à coder après avec C++ je crois.
Et oui Qt il lit le lua, j'ai vu sur ton lien orax.

Mais pour ce qui est du DDS ? et des fichiers INF, je ne sais pas.
Directx aussi d'ailleurs c'est plutôt du C++ ça.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Exécuter des fonctions a partir d'une chaine.

#35

Message par jguinch »

Tu as regardé du côté des autres langages ? PureBasic, FreeBasic...
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
mica2727
Niveau 4
Niveau 4
Messages : 82
Enregistré le : jeu. 03 oct. 2013 17:32
Status : Hors ligne

Re: [..] Exécuter des fonctions a partir d'une chaine.

#36

Message par mica2727 »

Merci, oui c'est vrai que les deux permettent de faire des jeux.

Mais ça va être plus compliquer d'ajouter des .INF, .DDS et .TGA, et sur leur liens, a moins que j'ai mal cherché, mais je pense pas qu'il puisse faire ce genre d'extension.

Alors que le C ou C++ lui malgré la difficulté élever d'apprentissage, il doit pouvoir le faire.
Mais si tu as d'autre idée de langage de programmation orienté jeu, ça me dérange pas.

FreeBasic : Vu les jeux je pense pas qu'il soit utile.
En revanche le premier il y a quand même pas mal de jeu, et en plus sans DLL supplémentaire, ça peut être bien d'un sens. Mais je ne pense pas qui prends le Lua en charge...

Et je ne sais pas vraiment ou chercher d'autre langage non plus.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Exécuter des fonctions a partir d'une chaine.

#37

Message par jguinch »

Sinon, Unity.
Mais là on commence à s'éloigner d'AutoIt... :|
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
mica2727
Niveau 4
Niveau 4
Messages : 82
Enregistré le : jeu. 03 oct. 2013 17:32
Status : Hors ligne

Re: [..] Exécuter des fonctions a partir d'une chaine.

#38

Message par mica2727 »

Je l'avais déjà vu Unity, mais je crois que c'est juste pour une plate forme web, ou aussi plate forme logiciel ?
Oui je sais qu'on s'égard d'AutoIt, mais vous êtes bon en conseil :p

C'est pas pour ça que j'utiliserais plus AutoIt, il est bien trop puissant pour l'abandonner comme ça.
Mais pour des jeux AutoIt n'est pas fait pour ça.
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Exécuter des fonctions a partir d'une chaine.

#39

Message par orax »

mica2727 a écrit :Et je ne sais pas vraiment ou chercher d'autre langage non plus.
Sur un site/forum spécialisé ? http://jeux.developpez.com/ par exemple.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
TT22
Membre émérite
Membre émérite
Messages : 1566
Enregistré le : lun. 18 avr. 2011 15:21
Localisation : La Quatrième Dimension
Status : Hors ligne

Re: [..] Exécuter des fonctions a partir d'une chaine.

#40

Message par TT22 »

jguinch a écrit :Pense-tu qu'il est plus facile/difficile de s'attaquer à une DLL qu'à un script compilé ? Quel sera le moyen de récupérer le mot de passe ? Un dump de la mémoire le permettra t-il ? Un désasambleur ?
Le moyen suivant devrait être assez simple sans même se préoccuper de la DLL :
orax a écrit :si le script doit se connecter sur un serveur distant, il ne faudra pas que le mot de passe soit véhiculé en "clair" (sans chiffrement) sur le réseau. Sinon quoi, il sera facile de le récupérer
@mica2727 Pourquoi tu ne fais pas tout simplement un code côté serveur qui va lui-même gérer les requêtes SQL ?
Cordialement,
TT22
Verrouillé