Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Autres questions


Index du Forum » Autres questions » Reverse-Engineering CASIO via IDA pro
Lailouezzz Hors ligne Membre Points: 91 Défis: 0 Message

Reverse-Engineering CASIO via IDA pro

Posté le 26/11/2019 19:28

Bonjour,


J'ai un problème avec IDA pro c'est à dire que j'aimerais avoir le résultat de :

Sur ce screenshot on voit que IDA pro a détécté automatiquement les subroutines ("; sub_8002E430")
Donc forcement c'est simple de voir toutes les subroutines à partir du casiowin entry

SAUF que moi quand je paramètre IDA pro et que je lance la découverte de code à 0x80010008 voilà ce que IDA m'affiche :

On voit que la subroutine 0x80010080 n'est pas reconnu (unk_80010080) donc je suis obligé de jump à 0x80010080 et de taper P ce qui me donne :

Je dois faire ça pour TOUTES les subroutines mais quand il y en a plus de 10000 bon voilà quoi

Quelqu'un aurait une solution ?

EDIT : je vous joint le firmware que j'essaye de déassembler : https://anonfiles.com/DaF8TaBen8/OS_205_SH4_E_bin
C'est le firmware Graph 75+e que j'ai déjà flashé sur ma Graph 35+e


1, 2, 3 Suivante
Yatis En ligne Membre Points: 581 Défis: 0 Message

Citer : Posté le 26/11/2019 19:50 | #


Perso j'utilise objdump pour avoir quelque chose de lisible pour un être humain. Ensuite avec l'aide des syscall j'arrive à savoir où commencer et ou m'orienter dans le binaire. À partir de là, je désassemble tout a la main et je remonte les sub-routine au fur et à mesure car pour certaines parties il faut être très minutieux (Casio passe son temps à utiliser des structures de données stockée dans la RAM).

Juste par curiosité, tu cherches quelle info en désassemblant l'OS ?
Lephenixnoir Hors ligne Administrateur Points: 24572 Défis: 170 Message

Citer : Posté le 26/11/2019 20:10 | #


Hmm, bonne question... mais je crains qu'il n'y ait pas d'utilisateur d'IDA Pro ici pour répondre. x_x

J'ai personnellement codé mon propre désassembleur pour produire des listings moins verbeux et identifier automatiquement les syscalls et registres périphériques. Ce que je perds en interactivité, je le gagne un peu en efforts de désassemblage.

Désolé de ne pas pouvoir aider sur ce coup là. Ça fait quand même plaisir de voir des gens qui s'intéressent au bas niveau. Bienvenue
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Yatis En ligne Membre Points: 581 Défis: 0 Message

Citer : Posté le 26/11/2019 20:28 | #


J'ai personnellement codé mon propre désassembleur pour produire des listings moins verbeux et identifier automatiquement les syscalls et registres périphériques. Ce que je perds en interactivité, je le gagne un peu en efforts de désassemblage.

J'ai fait à peu près la même chose de mon côté. Sur mon laptop, c'est un outil qui me permet d'avoir des infos sur les appelles systèmes et sur ma calculatrice c'est un désassembleur "live" : Vhex.
Maintenant que tu en parles, je me demande pourquoi je n'ai pas fait mon propre désassembleur sur mon laptop x)
Captainluigi Hors ligne Membre Points: 816 Défis: 1 Message

Citer : Posté le 26/11/2019 20:29 | #


Lephenixnoir a écrit :
Hmm, bonne question... mais je crains qu'il n'y ait pas d'utilisateur d'IDA Pro ici pour répondre. x_x

J'ai personnellement codé mon propre désassembleur pour produire des listings moins verbeux et identifier automatiquement les syscalls et registres périphériques. Ce que je perds en interactivité, je le gagne un peu en efforts de désassemblage.

Désolé de ne pas pouvoir aider sur ce coup là. Ça fait quand même plaisir de voir des gens qui s'intéressent au bas niveau. Bienvenue


J'ai juste tenté IDA Freeware ( sans comprendre trop le fonctionnement d'IDA ) , et pour convertir en code , il faut appuyer c
Les bons artistes copient, les grands artistes volent. Picasso

Passé ici il y a peu. ಥ‿ಥ

Chaîne youtube
Cliquez pour recouvrir

Vieux projets et jeux sur Casio
Cliquez pour recouvrir
Lailouezzz Hors ligne Membre Points: 91 Défis: 0 Message

Citer : Posté le 26/11/2019 20:29 | #


Merce pour vos réponses

Yatis a écrit :
Perso j'utilise objdump pour avoir quelque chose de lisible pour un être humain. Ensuite avec l'aide des syscall j'arrive à savoir où commencer et ou m'orienter dans le binaire. À partir de là, je désassemble tout a la main et je remonte les sub-routine au fur et à mesure car pour certaines parties il faut être très minutieux (Casio passe son temps à utiliser des structures de données stockée dans la RAM).

Juste par curiosité, tu cherches quelle info en désassemblant l'OS ?

J'ai pas spécialement bien compris ton mode opératoire, et désassembler à la main xD wait comment ?
Je cherche des infos sur le mode examen, et bidouiller/comprendre le système (j'adore bidouiller en bas niveau)

Lephenixnoir a écrit :
Hmm, bonne question... mais je crains qu'il n'y ait pas d'utilisateur d'IDA Pro ici pour répondre. x_x

J'ai personnellement codé mon propre désassembleur pour produire des listings moins verbeux et identifier automatiquement les syscalls et registres périphériques. Ce que je perds en interactivité, je le gagne un peu en efforts de désassemblage.

Désolé de ne pas pouvoir aider sur ce coup là. Ça fait quand même plaisir de voir des gens qui s'intéressent au bas niveau. Bienvenue

Oui c'est vrai que j'ai pas vue beaucoup de screenshot de SH4 déassemblé via IDA Pro.

Ton désassembleur est open source ?

Registres périphériques ? Je suppose que il y a de la doc dans la bible casio ?

Pas de soucis, je me débrouille souvent seul mais là j'avoue que j'ai un peu de mal, ça fait 3 jours que je me renseigne sur ce sujet.
Oui j'adooooore le bas niveau et quoi de mieux qu'un système pas trop complexe pour débuter (je suis en terminal au passage)

Ajouté le 26/11/2019 à 20:31 :
Captainluigi a écrit :
J'ai juste tenté IDA Freeware ( sans comprendre trop le fonctionnement d'IDA ) , et pour convertir en code , il faut appuyer c

Oui, et pour déclarer une subroutine on appuie sur P

Ajouté le 26/11/2019 à 20:32 :
Yatis a écrit :
J'ai fait à peu près la même chose de mon côté. Sur mon laptop, c'est un outil qui me permet d'avoir des infos sur les appelles systèmes et sur ma calculatrice c'est un désassembleur "live" : Vhex.

Merci beaucoup pour ce lien je vais lire ça quand j'aurais du temps libre
Lephenixnoir Hors ligne Administrateur Points: 24572 Défis: 170 Message

Citer : Posté le 26/11/2019 21:01 | #


Je cherche des infos sur le mode examen, et bidouiller/comprendre le système (j'adore bidouiller en bas niveau)

Sympa ! La convention quand on touche au mode examen veut qu'on soit responsables avec les résultats. Généralement les découvertes et outils ne quittent pas le cercle restreint des gens qui font le RE, et pour de bonnes raisons - compromettre sa sécurité ne ferait que le faire renforcer.

(C'était le petit warning dark, maintenant on s'amuse. o/)

Ton désassembleur est open source ?

En l'occurrence oui ! Tu peux compiler mon fxSDK en n'activant que fxos (le reste sert à écrire des add-ins). Note que toutes les fonctions d'analyse ne sont pas implémentées, c'est parce que je le fais au besoin... x)

Registres périphériques ? Je suppose que il y a de la doc dans la bible casio ?

Bonne intution ! Pour SH4, c'est par ici : https://bible.planet-casio.com/common/hardware/mpu/sh7724.pdf

Attention le MPU est en fait customisé, il y a des différences régulièrement (eg. tous les modules multimédia n'existent pas par exemple). Mais la base est commune.

Pas de soucis, je me débrouille souvent seul mais là j'avoue que j'ai un peu de mal, ça fait 3 jours que je me renseigne sur ce sujet.
Oui j'adooooore le bas niveau et quoi de mieux qu'un système pas trop complexe pour débuter (je suis en terminal au passage)

Eh ben tu t'en sors bien pour être honnête ! Ça me rappelle que j'ai aussi commencé en terminale...
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Lailouezzz Hors ligne Membre Points: 91 Défis: 0 Message

Citer : Posté le 26/11/2019 21:11 | #


Lephenixnoir a écrit :
Sympa ! La convention quand on touche au mode examen veut qu'on soit responsables avec les résultats. Généralement les découvertes et outils ne quittent pas le cercle restreint des gens qui font le RE, et pour de bonnes raisons - compromettre sa sécurité ne ferait que le faire renforcer.

(C'était le petit warning dark, maintenant on s'amuse. o/)

Noté

Lephenixnoir a écrit :
En l'occurrence oui ! Tu peux compiler mon fxSDK en n'activant que fxos (le reste sert à écrire des add-ins). Note que toutes les fonctions d'analyse ne sont pas implémentées, c'est parce que je le fais au besoin... x)

Nice, j'irais voir ça merci

Lephenixnoir a écrit :
Bonne intution ! Pour SH4, c'est par ici : https://bible.planet-casio.com/common/hardware/mpu/sh7724.pdf

Attention le MPU est en fait customisé, il y a des différences régulièrement (eg. tous les modules multimédia n'existent pas par exemple). Mais la base est commune.

Merci, ça me fera de la lecture
Je m'aide aussi de la doc officiel Renesas du SH4A

Lephenixnoir a écrit :

Eh ben tu t'en sors bien pour être honnête ! Ça me rappelle que j'ai aussi commencé en terminale...

Le reverse de la calculette j'ai commencé en terminal après en terme de programmation ça doit bien faire 4/5 ans que je touche au C++/C.
Mais le bas niveau c'est réellement en seconde que j'ai commencer à accrocher.


Et du coup pour modifier l'OS ton fxSDK pourra m'aider à compiler aussi ?
Je vais repasser sous debian, j'étais un peu dépendant de windows pour IDA Pro, ça ne me fera pas de mal de retourner dans un environnement linux pour toucher au bas niveau
Lephenixnoir Hors ligne Administrateur Points: 24572 Défis: 170 Message

Citer : Posté le 26/11/2019 21:26 | #


Et du coup pour modifier l'OS ton fxSDK pourra m'aider à compiler aussi ?

Si tu veux modifier l'OS tu devrais certainement le faire en assembleur, auquel cas tu n'as pas besoin de compilateur, juste d'un assembleur.

Puisque tu parles de Debian, le canonique est le as de binutils. Généralement on se le compile à la main. Chacun a potentiellement sa propre façon de faire, mais on a un tutoriel général qui peut dépanner (et qui compile aussi GCC, ce dont tu n'as peut-être pas besoin, à toi de voir).

Puisqu'on en parle, modifier l'OS n'est pas tout, il faut encore l'envoyer dans la calto... à tes risques et périls, souvent. x_x"
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Lailouezzz Hors ligne Membre Points: 91 Défis: 0 Message

Citer : Posté le 26/11/2019 21:36 | #


Lephenixnoir a écrit :
Si tu veux modifier l'OS tu devrais certainement le faire en assembleur, auquel cas tu n'as pas besoin de compilateur, juste d'un assembleur.

Oush désolé je parle comme je pense le vocabulaire (l'expression en général) et moi ça fait 2. (je parlais bien d'assembleur)

Lephenixnoir a écrit :
Puisque tu parles de Debian, le canonique est le as de binutils. Généralement on se le compile à la main. Chacun a potentiellement sa propre façon de faire, mais on a un tutoriel général qui peut dépanner (et qui compile aussi GCC, ce dont tu n'as peut-être pas besoin, à toi de voir).

Merci j'irais voir ça

Lephenixnoir a écrit :
Puisqu'on en parle, modifier l'OS n'est pas tout, il faut encore l'envoyer dans la calto... à tes risques et périls, souvent. x_x"

L'envoyer dans la calto et pouvoir le deboguer x)
Il y a pas moyen d'émuler ? (Je suppose que non)
Flasher la calto c'est pas très compliqué non ? Suffit de mettre à jour le checksum ?
Lephenixnoir Hors ligne Administrateur Points: 24572 Défis: 170 Message

Citer : Posté le 26/11/2019 21:40 | #


Hmm, y'a des émulateurs officiels, mais les modifier serait encore une tâche bien compliquée à elle seule. Il y a un seul émulateur communautaire de Prizm fondé sur QEMU, mais je n'ai jamais vu personne s'en servir et le dépoussiérer serait aussi un projet à part entière.

Flasher la calto c'est pas très compliqué non ? Suffit de mettre à jour le checksum ?

Pour les vieux modèles oui, puis tu balances dans fxRemote. Les détails sont bien cachés par ceux qui les ont découverts.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dark storm En ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 26/11/2019 21:48 | #


Petite intervention non technique :

Sous Gnunux, tu peux retrouver Ghidra. C'est un décompilateur créé originellement par la NSA, qui a été rendu open-source l'an dernier de mémoire. Je ne sais plus si l'archi SH4 est supportée, mais si c'est pas trop compliqué y'a sûrement moyen de l'ajouter. Dans tous les cas, c'est un sérieux concurrent à IDA !

Quelques indices me disent que tu risque d'être tenté de tricher au Bac (terminale, modification de l'OS, mode examen…). ⇒ La triche en examen d'État est passable de lourdes sanctions. Et ce n'est pas parce qu'une led clignote que les surveillants ne pourront pas suspecter de la fraude et entamer une procédure. Le travail que tu effectue est très intéressant, mais j'insiste sur ce qu'a dit Lephe, soit responsable avec tes résultats. Whitehat/blackhat, la différence se joue à peu (et je sais de quoi je parle).
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lailouezzz Hors ligne Membre Points: 91 Défis: 0 Message

Citer : Posté le 26/11/2019 21:56 | #


Lephenixnoir a écrit :
Hmm, y'a des émulateurs officiels, mais les modifier serait encore une tâche bien compliquée à elle seule. Il y a un seul émulateur communautaire de Prizm fondé sur QEMU, mais je n'ai jamais vu personne s'en servir et le dépoussiérer serait aussi un projet à part entière.

C'est vrai que un émulateur sous QEMU pour deboguer l'OS ça serait vraiment top

Dark storm a écrit :
Petite intervention non technique :

Sous Gnunux, tu peux retrouver Ghidra. C'est un décompilateur créé originellement par la NSA, qui a été rendu open-source l'an dernier de mémoire. Je ne sais plus si l'archi SH4 est supportée, mais si c'est pas trop compliqué y'a sûrement moyen de l'ajouter. Dans tous les cas, c'est un sérieux concurrent à IDA !

C'est sympa de proposer mais je me suis déjà renseigné sur ghidra (que j'ai déjà utilisé à sa sortie en open source), SH4 est dispo dessus il me semble
Je vais tenter sur linux

Dark storm a écrit :
Quelques indices me disent que tu risque d'être tenté de tricher au Bac (terminale, modification de l'OS, mode examen…). ⇒ La triche en examen d'État est passable de lourdes sanctions. Et ce n'est pas parce qu'une led clignote que les surveillants ne pourront pas suspecter de la fraude et entamer une procédure. Le travail que tu effectue est très intéressant, mais j'insiste sur ce qu'a dit Lephe, soit responsable avec tes résultats. Whitehat/blackhat, la différence se joue à peu (et je sais de quoi je parle).

Honnêtement c'est juste pour me tester en terme de capacité, je n'ai pas besoin de tricher au bac jai un assez bon niveau en math/physique

Ajouté le 26/11/2019 à 21:58 :
Lephenixnoir a écrit :
Pour les vieux modèles oui, puis tu balances dans fxRemote. Les détails sont bien cachés par ceux qui les ont découverts.

J'ai lus quelque part (sur planet casio) que on en savait un peu plus sur les méthodes utilisé par fxRemote
Lephenixnoir Hors ligne Administrateur Points: 24572 Défis: 170 Message

Citer : Posté le 26/11/2019 21:59 | #


J'ai lus quelque part (sur planet casio) que on en savait un peu plus sur les méthodes utilisé par fxRemote

Typiquement un secret bien gardé...
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Lailouezzz Hors ligne Membre Points: 91 Défis: 0 Message

Citer : Posté le 26/11/2019 22:00 | #


Lephenixnoir a écrit :
J'ai lus quelque part (sur planet casio) que on en savait un peu plus sur les méthodes utilisé par fxRemote

Typiquement un secret bien gardé...

En tout cas vraiment la bible casio de reverse engineering c'est vraiment un domaine qui me passionne en ce moment
Dark storm En ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 26/11/2019 22:03 | #


Lailouezzz a écrit :
En tout cas vraiment la bible casio de reverse engineering c'est vraiment un domaine qui me passionne en ce moment

Si tu souhaite écrire une partie, on peut te construire un accès et ajouter un dossier à ton nom
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir Hors ligne Administrateur Points: 24572 Défis: 170 Message

Citer : Posté le 26/11/2019 22:03 | #


Content que ça t'intéresse ! Les contributions (pas trop sensibles) sont bienvenues. o/
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Lailouezzz Hors ligne Membre Points: 91 Défis: 0 Message

Citer : Posté le 26/11/2019 22:07 | #


Dark storm a écrit :
Lailouezzz a écrit :
En tout cas vraiment la bible casio de reverse engineering c'est vraiment un domaine qui me passionne en ce moment

Si tu souhaite écrire une partie, on peut te construire un accès et ajouter un dossier à ton nom

Ça serait franchement un honneur
Mais d'abord il me faut approfondir ça fait que 3 jours que je bosse sur ça, je n'ai pas découvert grand chose.
J'apprends pour l'instant
Mais la proposition me touche

Ajouté le 26/11/2019 à 22:08 :
Lephenixnoir a écrit :
Content que ça t'intéresse ! Les contributions (pas trop sensibles) sont bienvenues. o/

Je ferais de mon mieux

Ajouté le 27/11/2019 à 16:54 :
Lephenixnoir a écrit :
Note que toutes les fonctions d'analyse ne sont pas implémentées, c'est parce que je le fais au besoin... x)

Je viens de tomber sur un todo x), je voulais disasm un add-in à 0x200 mais l'option -b est TODO
Lephenixnoir Hors ligne Administrateur Points: 24572 Défis: 170 Message

Citer : Posté le 27/11/2019 17:04 | #


Si tu me laisses un peu de temps (genre jusqu'à demain) je peux l'implémenter, c'est pas dur ça.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Lailouezzz Hors ligne Membre Points: 91 Défis: 0 Message

Citer : Posté le 27/11/2019 17:08 | #


Lephenixnoir a écrit :
Si tu me laisses un peu de temps (genre jusqu'à demain) je peux l'implémenter, c'est pas dur ça.

Je peux attendre ne t'en fais pas ^^,
Justement je me suis inscrit sur le git de casio pour pouvoir l'implémenter x)

Ajouté le 27/11/2019 à 17:21 :
J'ai fork fxSDK car j'avais un bug avec la nouvelle méthode pour compiler le cross compilateur
Lephenixnoir Hors ligne Administrateur Points: 24572 Défis: 170 Message

Citer : Posté le 27/11/2019 17:28 | #


Oublie pas de spécfier --toolchain selon tes besoins.

Edit : Pour fxos tu n'as pas besoin du cross-compilateur, du reste.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
1, 2, 3 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 251 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd