logo Homepage
+  NewbieContest
|-+  Divers» Cracking» Analyse de binaire codé en Visual C++ 6
Username:
Password:
Pages: [1]
  Imprimer  
Auteur Fil de discussion: Analyse de binaire codé en Visual C++ 6  (Lu 9094 fois)
Pech
Profil challenge

Classement : 34/54254

Membre Junior
**
Hors ligne Hors ligne
Messages: 83


Voir le profil
« le: 23 Novembre 2016 à 16:09:46 »

Salut,

Dans IDA, en appliquant uniquement les signatures présentes par défaut ("vc32rtf") beaucoup de fonctions ne sont pas identifiées.
Elles sont par défaut nommées "unknown_libname_<un_nombre>", ce qui n'est pas très pratique pour y comprendre quelque chose

J'ai trouvé des signatures pour Visual C++ 7 (ici : https://tuts4you.com/download.php?view.2413) qui en identifient quelques autres.
Malheureusement, dans le cas présent, plus de 250 sont toujours inconnues

Est-ce que l'un de vous aurait des signatures plus complètes ou pourrait me conseiller un logiciel dont je n'ai pas entendu parler ?
A défaut, quelqu'un pourrait-il m'expliquer comment je peux m'en sortir ?

Merci d'avance à mon bienfaiteur ^^
« Dernière édition: 24 Novembre 2016 à 18:42:43 par Pech » Journalisée
the lsd
Administrateur

Profil challenge

Classement : 189/54254

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 3096

poulping for fun & profit


Voir le profil WWW
« #1 le: 24 Novembre 2016 à 18:14:01 »

Bon, les ninja d'IDA là, vous répondez un peu ? :p

Enjoy

The lsd
Journalisée

Newbie Contest Staff :
The lsd - Th3_l5D (IRC)
Statut :
Administrateur
Citation :
Cartésien désabusé : je pense, donc je suis, mais je m'en fous !
pixis
Administrateur

Profil challenge

Classement : 16/54254

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 664


Voir le profil WWW
« #2 le: 25 Novembre 2016 à 00:13:18 »

Moi j'suis pas un ninja d'IDA et j'ai pas de ref pour les signatures, donc mon message est inutile.
Journalisée

Newbie Contest Staff :
Pixis
Statut :
Administrateur
Blog :
hackndo
dionosis

Profil challenge

Classement : 29/54254

Membre Junior
**
Hors ligne Hors ligne
Messages: 94


Voir le profil
« #3 le: 25 Novembre 2016 à 01:06:04 »

Salut,

Les unknown sont propres à la runtime justement parce qu'Ida détecte qu'elles ne sont employées que par des fonctions reconnues de la runtime, ou bien parce qu'elles ont été marquées comme appartenant à la runtime sans pour autant n’avoir été nommées (et non pas forcément identifiées).
Elles sont donc à distinguer des sub_qqchose (je ne dis pas ça pour toi mais éventuellement pour d'autres lecteurs moins familiarisés avec l’outil).

Pour vulgariser, sauf runtime full custom (que tu peux voir dans les démos ou dans de nombreux keygens), il y a toujours une partie de la runtime qui est embarquée, et ce même lorsque tu linkes en dynamique.
C'est la runtime C qui te permet par exemple d'utiliser les args de ton main directement lorsque tu linkes en sous-système console.
C’est aussi ce qui fait qu’un simple hello word pèse plusieurs kilos.
Celles-là ne portent pas de nom tout simplement parce qu'elles ne sont pas publiques et évoluent régulièrement au fil des mises à jour.
Tu n'as presque jamais à t’en soucier puisque ce qui t'intéresse se trouve presque toujours en aval.
Plusieurs d’entre elles sont d’ailleurs présentes sans pour autant n’être employées.

Ensuite lorsque tu linkes en statiques il y a toutes les fonctions non exportées utilisées par justement les fonctions exportées de la runtime (et embarquées dans ce cas de figure).
Celles là il faut tout simplement t’intéresser aux fonctions exportées qui les emploient plutôt qu'au détail.
La plupart du temps qui se soucie de savoir ce que fait un malloc de la runtime en interne ?

Enfin il y a les sous fonctions non nommées utilisées par le compilateur pour traduire certaines parties de ton code de façon invisible (la multiplication sur les long long dans un binaire 32 bits par exemple).
Celles là il faut les voir comme des petits snippets, elles sont souvent très simples à comprendre.

Ca c'est pour visual ou même le -C- de façon plus générale.
En delphi (par exemple) tu rencontreras parfois des unknown qui correspondent à des méthodes de classes.
Dans ce cas il te faudra soit les identifier manuellement, soit utiliser un tool spécifique si vraiment tu n'y arrives pas (idr par exemple dans le cas du delphi).

Ce qu'il faut retenir c'est que si ces fonctions ne sont pas identifiées par l'éditeur ou la communauté, c'est tout simplement parce que très très souvent on s'en fout.
En reverse l'important c'est de savoir aller à l'essentiel afin de s'économiser, sinon c’est l’épuisement qui t’attend.
Si tu en es à te demander ce que font plusieurs unknown, c'est bien souvent que tu ne regardes pas d'assez loin.

J'imagine que ta question concerne les crackme vc6 que tu n'as pas encore réussi et qui comporte justement un peu plus de 250 unknowns...
Eh bien mon conseil précédent s'y applique pleinement (deux fois plutôt qu’une même …).

Bon courage.

++
« Dernière édition: 25 Novembre 2016 à 01:09:55 par dionosis » Journalisée
Pech
Profil challenge

Classement : 34/54254

Membre Junior
**
Hors ligne Hors ligne
Messages: 83


Voir le profil
« #4 le: 25 Novembre 2016 à 13:13:47 »

Salut,

En reverse l'important c'est de savoir aller à l'essentiel afin de s'économiser, sinon c’est l’épuisement qui t’attend.
Si tu en es à te demander ce que font plusieurs unknown, c'est bien souvent que tu ne regardes pas d'assez loin.

C'est bien cela mon problème principal (de manière générale) : réussir à séparer ce qui est essentiel de ce qui n'a aucun intérêt.
Et, effectivement, ça se conclut trop souvent par un mal de tête et/ou un ras le bol.

J'ai pu constater qu'autant il y a beaucoup de tutos pour les débutants, autant dès qu'on monte un peu en niveau il n'y a plus grand chose (pour ne pas dire rien).
Il y a ensuite des articles mais un cas récurrent c'est le "on constate <truc1> donc <truc2>" où je reste comme un *** à me demander pourquoi ce "donc" est une évidence pour l'auteur !

J'imagine que ta question concerne les crackme vc6 que tu n'as pas encore réussi et qui comporte justement un peu plus de 250 unknowns...
Eh bien mon conseil précédent s'y applique pleinement (deux fois plutôt qu’une même …).

Reste donc à trouver jusqu'où il faut que je recule pour être assez loin

En tout cas, merci !
Journalisée
S0410N3
Administrateur

Profil challenge

Classement : 10/54254

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1260


Voir le profil WWW
« #5 le: 26 Novembre 2016 à 00:31:43 »

A mon avis il y a 2 manières d'aborder les choses.

Soit on est pressé et on lit des tutos en cherchant à comprendre, bien sûr, mais effectivement ça ne doit pas toujours être très clair.
Soit on se sort les doigts et on pratique, mais là il faut repartir de la base.

Je suis de la deuxième catégorie et je suis vraiment nul en crackme/reversing (comparé à un mec comme dionosis, et de très très très loin...) et je ne lis jamais de tuto. Par contre je crois que mon background pratique me permet souvent de m'en sortir.

Après je pense aussi que c'est un tout.
Arrive un moment où tu n'as plus besoin de "voir" les choses, elles deviennent juste évidentes tellement tu les as côtoyées, en cracking ou dans d'autres domaines d'ailleurs.
On trouve de cette façon comment contourner beaucoup de problèmes.
Ca s'applique d'ailleurs aussi dans la vie de tous les jours ce que je dis.

Le post de dionosis est une pépite pour qui sait lire et comprendre ce qu'il dit.

Tout ce que je peux te conseiller c'est de persévérer.
Dans tous les cas tu ne peux qu'en tirer quelque chose de constructif.

Have fun
Journalisée

Enjoy (copyleft de quelqu'un qui a trop parlé)

S0410N3

-------------------------------------------------------------------------------------
La folie est le prix à payer pour le temps passé à être trop lucide.
-------------------------------------------------------------------------------------
http://forum.hardware.fr/hfr/Discussions/Societe/francais-repere-repaire-sujet_19265_1.htm
Pech
Profil challenge

Classement : 34/54254

Membre Junior
**
Hors ligne Hors ligne
Messages: 83


Voir le profil
« #6 le: 26 Novembre 2016 à 15:08:46 »

Salut,

Soit on est pressé et on lit des tutos en cherchant à comprendre, bien sûr, mais effectivement ça ne doit pas toujours être très clair.
Soit on se sort les doigts et on pratique, mais là il faut repartir de la base.

Concernant les tutos ma remarque n'était qu'une constatation générique.
Si certains allaient "plus loin" cela pourrait être intéressant mais on peut faire sans, sauf éventuellement au tout début où ils permettent d'apprendre à utiliser les différents outils (IDA, OllyDbg, etc).

Arrive un moment où tu n'as plus besoin de "voir" les choses, elles deviennent juste évidentes tellement tu les as côtoyées, en cracking ou dans d'autres domaines d'ailleurs.
[...]
Tout ce que je peux te conseiller c'est de persévérer.
Dans tous les cas tu ne peux qu'en tirer quelque chose de constructif.

Je n'en doute pas mais pour l'instant je suis dans le noir (mais pas aveugle, en tout cas pas encore) ^^
J'hésite à mettre de côté (momentanément !) ce crackme, "me faire la main" ailleurs et y revenir ensuite.
Il est évident que la solution devrait être alors plus simple à trouver.
A voir... (oui, ces jours-ci je parle avec moi-même )

Le post de dionosis est une pépite pour qui sait lire et comprendre ce qu'il dit.

Je le confirme et je suis désolé de m'être contenté d'un simple "Merci" !

Tout ceci étant dit, je verrai à partir de demain : aujourd'hui c'est rugby
Journalisée
dionosis

Profil challenge

Classement : 29/54254

Membre Junior
**
Hors ligne Hors ligne
Messages: 94


Voir le profil
« #7 le: 05 Décembre 2016 à 00:29:04 »

Salut,

Citation de: Pech
Je le confirme et je suis désolé de m'être contenté d'un simple "Merci" !
Ouh bah non t'inquiète pas, c'est très largement suffisant.
Je suis déjà bien content si ça peut servir à quelqu'un.

Et gg au passage, je vois que tu en es venu à bout entre temps.

++

Journalisée
Pages: [1]
  Imprimer  
 
Aller à: