Désassembleur

Sujets variés concernant le développement en PureBasic
Lukky
Messages : 340
Inscription : dim. 25/janv./2004 12:22
Localisation : Morbihan

Message par Lukky »

KarlKox, je vais te dire, dans l'absolu bien sur, tout est possible, mais quand le niveau de difficulté est elevé à ce point et non maintenable dans le temps, je le classe dans l'impossible, même si c'est une façon de parler.

Je vais même te dire, le gars capable de faire ce truc et qui se mange quasiement tout à revoir à chaque release de pure et bein je le classe directement dans la case crétin, car vu la somme de boulot incroyable qu'il faudra déployer et le pauvre interet de la chose je vois pas comment appeler ce genre de gars.

Mais tu peux toujours essayer.

JL
Quand on me gonfle trop j'éclate, sinon ça va !
Fred
Site Admin
Messages : 2808
Inscription : mer. 21/janv./2004 11:03

Message par Fred »

Pour clarifier:

- oui, c'est possible de décompiler (en assembleur) un programme PureBasic.

- oui, c'est possible de detecter tel ou tel appel de function purebasic (a l'aide de signatures pour chaque function du purebasic, pour chaque version (car le code d'une function évolue d'une version a l'autre))

- C'est aussi possible de detecter les boucles, les tableaux, les procedures et les listes chainées, car chaque partie est 'générée' ce qui veut dire que ca répond à un ou plusieurs modèles 'facilement' reconnaissable.

La ou ca devient interessant, c'est au niveau des noms de variables, de procedure, de tableau etc.. et de reconstruire les expressions arithmetiques. Pour les noms de variables, tableau etc.. c'est simple, c'est pas possible, y'a rien dans l'executable qui peut nous mettre sur la piste. Et pour les expressions arithmetique, c'est pas impossible mais quand meme bien balèze.

Donc oui ca doit etre possible de reverser un programme ASM codé en purebasic (si c'est codé dans un autre language, laissez complètement tomber) mais le résultat sera tres tres dur a exploiter. A noter qu'il faut avoir un sacré niveau pour se lancer dans cette aventure.
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

je crois pas me tromper en disant que c'est encore plus dur que de réaliser un émulateur - ce qui est dèjà considéré comme parmis les plus belles prouesses.
Image
Fred
Site Admin
Messages : 2808
Inscription : mer. 21/janv./2004 11:03

Message par Fred »

Oula, je ne m'avancerais pas sur ce point la, etant donné que pour moi, un emulateur c'est le top du top car il faut:

- Apprendre un language ASM tordu (souvent le cas pour les consoles etc..)
- Une fois qu'on le maitrise sur le bout des doigts, on recrée 'virtuellement' un processeur, avec les registres, les interuptions etc.. Rien que ca.
- Dans le cas d'une console, va falloir émuler les 'customs chips' (processeurs graphiques, sonores etc..) qui souvent sont tres peu documentés.

Bref c'est la mission, c'est pas pour rien qu'il a fallu attendre si longtemps pour avoir un emulateur amiga correct, et qu'il n'y a pas d'emulateur mac PPC pour l'instant (!).
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

evidemment si tu cites l'exemple de l'amiga... rien de moins simple :-)

n'empeche, c marrant que t'en parle. j'ai un pote il a trouvé Amiga500 dans une décharge la semaine dernière. il a pensé à moi, coool. je l'ai rallumé : instant hypra magique je te dis pas :) ca se jete pas une becane pareille ! et ce meme si winuae est finalement plus confortable
Image
Fred
Site Admin
Messages : 2808
Inscription : mer. 21/janv./2004 11:03

Message par Fred »

Clair, c'est magique :). Mon A1230/50 doit trainer qqpart dans mon grenier, dommage que j'ai pas plus de place dans l'appart...
KarLKoX
Messages : 1191
Inscription : jeu. 26/févr./2004 15:36
Localisation : France
Contact :

Message par KarLKoX »

Lukky a écrit :KarlKox, je vais te dire, dans l'absolu bien sur, tout est possible, mais quand le niveau de difficulté est elevé à ce point et non maintenable dans le temps, je le classe dans l'impossible, même si c'est une façon de parler.

Je vais même te dire, le gars capable de faire ce truc et qui se mange quasiement tout à revoir à chaque release de pure et bein je le classe directement dans la case crétin, car vu la somme de boulot incroyable qu'il faudra déployer et le pauvre interet de la chose je vois pas comment appeler ce genre de gars.

Mais tu peux toujours essayer.

JL
Je ne sais pas si tu m'as bien lu mais j'ai dit la même chose que toi : c'est impossible de retrouver la sémantique purebasic depuis un binaire.

En parlant d'émulation, ca fait un petit moment que je me tate à en faire un (en pb évidemment), je sais que j'ai pas le niveau mais bon, ca m'a toujours interessé ce genre de projet :)
"Qui baise trop bouffe un poil." P. Desproges
Avatar de l’utilisateur
ZapMan
Messages : 460
Inscription : ven. 13/févr./2004 23:14
Localisation : France
Contact :

Message par ZapMan »

Lukky a écrit :KarlKox, je vais te dire, dans l'absolu bien sur, tout est possible, mais quand le niveau de difficulté est elevé à ce point et non maintenable dans le temps, je le classe dans l'impossible, même si c'est une façon de parler.

Je vais même te dire, le gars capable de faire ce truc et qui se mange quasiement tout à revoir à chaque release de pure et bein je le classe directement dans la case crétin, car vu la somme de boulot incroyable qu'il faudra déployer et le pauvre interet de la chose je vois pas comment appeler ce genre de gars.
JL
Je répète que je l'ai fait pour Microsoft Basic version Mac (édition 1988)qui n'était PAS un language interprété mais bien un language compilé. Comme la souligné Fred, le résultat n'est évidemment pas la copie conforme du programme d'origine. Moins clair, et plus difficile à exploiter, il lui manque entre autre les commentaires !
- Mon décompilateur parvenait à regénérer un code basic à peu près correcte quand le programme d'origine était en Basic (grace aux "signatures" qu'il reconnaissait)
- Le résultat était encore beaucoup moins clair quand le code d'origine n'était pas du Basic, mais il en sortait bien quelquechose. Et là, l'intérêt est énorme !!!! En clair, l'idée était de prendre N'IMPORTE QUEL PROGRAMME disponible sur le marché et d'en pondre un équivalent en Basic. Délicat au niveau de la légalité, mais fichtrement intéressant. Car, pour peu que l'utilisateur refonde un peu son interface, et une fois le programme recompilé avec Basic, le code assembleur est si différent de l'original que les protections légales ne sont plus applicables. Cela signifie que l'on pourrait par exemple vendre une "copie" de Word, fabriquée par ce moyen, en toute légalité.
- On peut imaginer un décompilateur spécialisé dans la récupération des programmes compilés avec Microsoft Visual Studio (C, C++, etc..) et qui cracherait un programme en PureBasic.

Ok, tout ça est un ENORME boulot (mais moins que d'écrire un émulateur) mais c'est possible !! Le gars qui fait ça aura les moyens de faire la nique à Bill Gates et de gagner des centaines de milliards, alors pas d'accord avec Lukky au sujet du "pauvre intérêt de la chose".

Le principe de base :
- on écrit une série de petits programmes simples dans le langage d'origine
- on les compile
- on analyse le résultat et on écrit peu à peu le décompilateur de sorte à retrouver un code en Basic qui soit acceptable
- on recommence avec des programmes d'origine de plus en plus complexes.

Compte tenu de l'intérêt financier et/ou philosophique de la chose (par rapport au monopole Microsoft), je suis convaincu que quelqu'un sera un jour assez gonflé pour tenter l'aventure (et je peux lui donner un coup de main).

PS : une anecdote intéressante qui présente un certain rapport avec cette histoire : en 1990 (à peu prés) il y une petite équipe de gars absolument géniaux qui ont réussi à écrire un système d'exploitation compatible avec Windows (j'ai oublié son nom, mais ça a fait du bruit à l'époque). Tu chargeais ça sur ta machine à la place de Windows et tu faisais tourner toutes les applis conçues pour Windows. Comme le truc marchait assez bien et que Microsoft n'a pas trouvé de moyens légaux pour contrer cette équipe, la solution a été radicale : Microsoft a racheté la société en question (une petite fortune) et a rangé leur joli projet dans une poubelle. Les gars n'ont jamais eu la satisfaction de pousser leur projet jusqu'au bout, mais ils ont ramassé un sacré pactole au passage. En clair, si tu veux devenir riche, il n'est pas nécessaire de faire quelquechose qui puisse VRAIMENT mettre le monopole de Microsoft en danger : il suffit de faire quelquechose qui POURRAIT mettre le monopole de Microsoft en danger... et de négocier.
Tout obstacle est un point d'appui potentiel.

Bibliothèques PureBasic et autres codes à télécharger :https://www.editions-humanis.com/downlo ... ads_FR.htm
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

Ben dis donc qui l'eut cru !
Tu vas faire des émules là avec toutes ses révélations :)

Et pour les plus honnêtes d'entre vous il est encore
plus intéressant de créer son propre langage...
Image
KarLKoX
Messages : 1191
Inscription : jeu. 26/févr./2004 15:36
Localisation : France
Contact :

Message par KarLKoX »

Ce serait pas Caldera l'histoire de l'anécdote ? Parce que j'ai le souvenir que Caldera à fait tourner les applis windows avec leur dos (Dr Dos) : ils ont faké win.com et ont démontré que windows (95 je crois) n'étais qu'une gui au DOS, ca s'apparante un peu :)
Sinon, pour le décompilateur dont tu parles, j'ai mal lu : tu parlais du Microsoft Basic et non du Microsoft Visual Basic d'où mon étonnement (je crois qu'il n'existe meme pas pour mac :) )
"Qui baise trop bouffe un poil." P. Desproges
Avatar de l’utilisateur
ZapMan
Messages : 460
Inscription : ven. 13/févr./2004 23:14
Localisation : France
Contact :

Message par ZapMan »

Effectivement, Microsoft a abandonné son "Microsoft Basic" (qui tournait sur Mac et sur PC) lorsqu'ils ont sorti "Visual Basic" (qui ne tournait que sur PC). Microsoft Basic était un bon produit qui ressemblait pas mal à PureBasic (avec beaucoup de bugs en plus, Microsoft oblige !)

Le produit dont je parlais plus haut ne s'appellait pas Caldera, mais mince, flute, le nom de me revient pas.

Et pour répondre à Flype
Et pour les plus honnêtes d'entre vous il est encore
plus intéressant de créer son propre langage...
J'ai dit que l'aspect légal de l'idée était "délicat", mais au sens strict, le plan que je propose n'a rien d'illégal. Il exploite une faille, c'est tout. Et quel intérêt y aurait-il à créer un language, maintenant que PureBasic existe ??? Réussir à faire mieux que PureBasic pour le vendre moins cher ? ALors là, je reprends l'expression de Lukky : c'est IMPOSSIBLE !
Tout obstacle est un point d'appui potentiel.

Bibliothèques PureBasic et autres codes à télécharger :https://www.editions-humanis.com/downlo ... ads_FR.htm
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Juste pour mettre mon grain de sel dans une conversation qui ne me concerne pas vraiment, (vu mon niveau en informatique, :lol:), mais Caldera - DrDos existe toujours!
Il est employé, entre autre par, par des sociétés comme PowerQuest pour faire tourner DriveImage ou PartitionMagic sous Dos avec XP, ou encore par des boites comme Maxtor ou WesternDigital pour faire tourner leur formateur bas niveau.

Voilà! Vous pouvez reprendre votre conversation :lol:

Chris :)
KarLKoX
Messages : 1191
Inscription : jeu. 26/févr./2004 15:36
Localisation : France
Contact :

Message par KarLKoX »

Chris a écrit :Juste pour mettre mon grain de sel dans une conversation qui ne me concerne pas vraiment, (vu mon niveau en informatique, :lol:), mais Caldera - DrDos existe toujours!

Chris :)
J'ai jamais dit le contraire, la version 8.0 est sortie il y a pas longtemps :)
"Qui baise trop bouffe un poil." P. Desproges
LavaLava
Messages : 173
Inscription : dim. 28/mars/2004 17:42
Localisation : Provence

Message par LavaLava »

J'ai mis quelques temps à re-poster car je voulais faire confirmer mes dires par un ancien colléque de boulot.
En en fait, il m'a confirmé ce que je me souvenais, cest à dire :
En 1991/2 un ingé de ma société a du faire un Décompilateur pour récupérer un prog victime d'un 'sabotage'. L'interet n'était pas de retrouver le prog (qu'il aurait pu reécrire facilement) mais de pouvoir réutiliser des quantité données généré par ce prog ...

Ceci étant dit, ma curiosité est rassasié, et je n'ai personellement pas d'intérêt pour ce genre de prog.
Lukky
Messages : 340
Inscription : dim. 25/janv./2004 12:22
Localisation : Morbihan

Message par Lukky »

Pour finir étant donné que je n'ai aucune espèce d'intéret moi non plus pour ce sujet, c'est juste pour causer.

Je confirme que rien n'est impossible, mais je pense qu'un soft qui demande une somme de travail monstrueuse pour un intéret minime somme toute n'est pas digne d'intéret.

De plus, j'admet que c'est déjà plus humain sur un vieux basic à l'époque ou 4 instructions suffisaient pour faire le café mais aujourd'hui avec les api les billiard de fonctions des langages (regarde pure, 2 billiards !) c'est du suicide.

En plus juridiquement je me demande si c'est légal car on est dans le reverse engineering et ça ça le fait pas.


JL
Quand on me gonfle trop j'éclate, sinon ça va !
Répondre