home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 24
/
CD_ASCQ_24_0995.iso
/
dos
/
fr
/
hexutil
/
hexutil.doc
next >
Wrap
Text File
|
1995-07-10
|
23KB
|
447 lines
Si vous êtes un adepte de WINDOWS ne continuez pas.
---------------------------------------------------
Ce programme est né simplement parceque je trouvais PCTOOLS trop lourd
lorsqu'il s'agissait de faire rapidemment de la recherche d'octets ou
de chaine de caractères. Je disposais à l'époque de la version 4.21 !
Que dire alors des usines à gaz actuelles que sont les versions 9 et 10 !
Soit dit en passant Norton utilities ne s'en tire pas mieux.
HEXUTIL n'est pas très homogène, cela est du au fait que des modules
sont venus se grèffer dessus au fil du temps et des besoins. Sans compter
ma façon de programmer qui a évolué ( du moins je l'éspère ).
Le coeur du programme est la recherche d'octets par pattern et non pas
par leur valeur. C'est à dire en fonction d'un emplacement donné à
l'intérieur d'un fichier. Ce qui permet de trouver relativement souvent
des chaines codées.
Un éditeur de secteur ( dans le style de PCTOOLS - le vieux ) est
disponible pour chaque type de recherche: PATTERN, ASCII, HEXA avec joker.
Cet éditeur permet de XORer, NOTer, NEGer (!) le contenu d'un secteur.
De plus l'affichage du secteur est commutable entre l'HEXADECIMAL/ASCII
( par défaut ), le DECIMAL, le TEXTE et l'ASM.
Ceux qui ont travaillé sur le vieil ancètre qu'était l'APPLE II se
souviendront de "BAG of TRIX", "LOCKSMITH" etc qui permettaient de faire
des opérations similaires sur des fichiers ou des disquettes. Je n'ai
jamais rien vu de tel sur PC. Si cela existe qu'on m'en fasse part.
Un patcheur dynamique de mémoire fait parti du lot. Il fonctionne
parfaitement, bien que l'usage en ai réservé aux tritureurs de bit
et autres activités plus ou moins avouables.
Il est évident que je ne garanti pas que HEXUTIL est exempté de BUG.
( il faudrait être bien présomptueux ) mais au moins il a un comportement
relativement sain depuis que je le pousse dans ses limites. Je promets
de considérer tout problème qui pourrait survenir. Et de fournir à toute
personne la dernière version ainsi que des explications complémentaires
contre... une carte postale - cela va sans dire.
Je suis ouvert à toute amélioration, perfectionnement, modification et
adaptation ( qu'ai-je oublié ? ).
Ah, si. C'est du cardware. C.a.d que je ne veux pas d'argent.
Une carte postale du lieu où vous habitez me suffira amplement.
Utilisation: renomez-le h.exe et placez-le dans votre path, c'est bien
plus pratique et rapide.
=----DESCRIPTION SOMMAIRE DES DIFFERENTES FONCTIONS DE HEXUTIL----=
Fonction O:
Opérations spéciales sur un fichier.
Permet de XORer, NEGer, NOTer un secteur de 512 octets ainsi que de
l'afficher de quatre façons différentes: MIXTE ( hexa-ascii ), TEXTE,
DECIMAL et en ASM (mode réel 8088/8086 pour l'instant).
Fonction R:
RECHERCHE une chaine d'octets en affichant son déplacement par rapport à
l'origine du programme.
Donne également les références pour trouver la chaine avec les fonctions
F(I)ND et HE(X)EDIT de PCTOOLS. ( Secteur et offset )
Le secteur contenant la chaine peut-être édité. Toutes les opérations de
la fonction O sont possibles.
EXEMPLE:
Hexutil à été lancé comme suit: H R *.*
On demande une recherche hexadécimale avec JOKER dans tous les
fichiers du répertoire courant. Le but est de trouver ( dans le cas
présent ) une série de CALLF puis de desassembler le secteur.
Comme les segments CS des CALLF et autres JMPF sont recalculés lors
du chargement d'un fichier EXE il n'est pas possible de chercher
avec précision toutes les valeurs des octets. Il suffit dans la
pratique de taper 9A ( mnémonique d'un CALLF - en attendant une
recherche par mnémonique ) suivi de 4 JOKER ( en apuyant quatre fois
sur la barre d'espace pour accepter n'importe quelle valeur de
segment CS ):
-------------------------------------------------------------------------
192000 octets ont été lu du fichier INT.EXE
Chaîne recherchée : 9A ¿¿ ¿¿ ¿¿ ¿¿ 9A ¿¿ ¿¿ ¿¿ ¿¿ 9A ¿¿ ¿¿ ¿¿ ¿¿ 9A
Chaine trouvée : 9A 5F 07 FB 06 9A 41 0D 63 03 9A E3 0C 63 03 9A
Ü _ . √ Ü A . c Ü π c Ü
Fichier INT.EXE
Egalité trouvée à l'offset HEXA: 028434 DEC: 0164916
Référence PCTOOLS Secteur: 0322 Dép: 052
Fichier texte --> (T), Fichier binaire --> (B), Edition --> (E)
La chaine a été trouvé 1 fois dans INT.EXE
--------------------------------------------------------------------
Puis il ne suffit plus que de taper sur E ( pour Editer le secteur ).
On obtient l'écran d'édition commun aux commandes A, P, O et R:
Le curseur est positionné sur le 52ème octet dans le secteur 322 soit
sur le premier octet de la première des 5 instructions CALLF:
--------------------------------------------------------------------
INT.EXE Nb Secteur: 4177 Taille: 02138800
SECTEUR : 322 POSITION 052
DEC HEX
000 000 50 9A 46 07 B8 00 83 C4 04 23 C0 74 0E B8 53 00 PÜF╕ â─#└t╕S
016 010 50 9A 88 10 3E 05 83 C4 02 EB 19 C7 06 80 5C 00 PÜê>â─δ╟Ç\
032 020 00 83 3E 70 5C 00 74 08 0E E8 23 18 23 C0 75 04 â>p\ t.Φ##└u
048 030 2B C0 EB 32 9A 5F 07 FB 06 9A 41 0D 63 03 9A E3 +└δ2Ü_√ÜA.cÜπ
curseur clignotant-> ──
064 040 0C 63 03 9A 8B 0C 63 03 9A 9F 0C 63 03 9A 9E 07 cÜïc܃cÜ₧
080 050 FB 06 FF 36 5E 59 9A 7D 01 B8 00 83 C4 02 9A 5F √ 6^YÜ}╕ â─Ü_
096 060 0C 63 03 B8 01 00 5D CB 55 8B EC 83 EC 48 81 3E c╕ ]╦Uï∞â∞Hü>
112 070 6C 2D 80 00 74 0C B8 A8 8C 50 9A A2 10 3E 05 E9 l-Ç t╕¿îPÜó>Θ
128 080 3B 0A 83 3E 0C 58 02 7E 14 B8 0A 57 50 B8 3E 4E ;.â>X~╕.WP╕>N
144 090 50 B8 D6 8C 50 9A A2 10 3E 05 83 C4 06 B8 EC 5D P╕╓îPÜó>â─╕∞]
160 0A0 50 BA 64 59 52 B9 60 59 51 BE 72 59 56 BB 70 59 P║dYR╣`YQ╛rYV╗pY
176 0B0 53 BF 6C 59 57 B8 6A 59 50 B8 5E 59 50 B8 01 00 S┐lYW╕jYP╕^YP╕
192 0C0 50 B8 0A 57 50 9A 00 00 5D 04 89 46 FE 83 C4 14 P╕.WPÜ ]ëF■â─
208 0D0 23 C0 74 71 83 3E 50 6D 00 74 6A C7 06 50 6D 00 #└tqâ>Pm tj╟Pm
224 0E0 00 B8 2E 00 50 B8 0A 57 50 9A 02 00 18 08 89 46 ╕. P╕.WPÜ .ëF
240 0F0 FC 83 C4 04 23 C0 75 03 E9 7B 09 FF 46 FC BE DE ⁿâ─#└uΘ{ Fⁿ╛▐
Restore Help Edit Neg Xor NOt +/- SP Secteur Print ESC
--------------------------------------------------------------------
Dès lors on peut éditer les valeurs HEXA ou mieux sortir par ESCAPE de
la fonction d'édition pour se retrouver dans les fonctions spéciales de
XOR, NOT et de Negation de secteur pour examiner visuellement le
secteur ? ( si, si, on remarque parfois des choses interessantes ). On
peut également tant que l'on se trouve dans le menu d'édition, appuyer sur
la touche de fonction F3. Cette touche produit les affichages suivants
d'une façon cyclique:
Première frappe: Affichage du secteur en valeurs DECIMALES.
Deuxième frappe: Affichage du secteur en mode ASCII.
Troisième frappe: Affichage du secteur en ASM ( voir ci-dessous ).
Le desassemblage se fait toujours par rapport à la position du curseur
dans le menu EDIT. Il est limité au secteur courant ( pour l'instant )
Lorsque HEXUTIL décode une interruption il la commente. Pour essayer
en étant dans le menu ASM, il faut taper ESC pour se retrouver dans le
menu d'édition, puis taper à l'endroit où se trouve le curseur deux
octets comme suit: CD XX ( XX représente n'importe quelle interruption
de 00 à FF ). Il faut refaire passer le curseur sous l'octet CD ( puisque
le desassemblage ne fonctionne qu'à partir de la position courante du
curseur ), et de retaper F3 trois fois.
--------------------------------------------------------------------
SECTEUR : 322 POSITION: 052d
CS:0034 9A5F07FB06 CALL 06FB:075F
CS:0039 9A410D6303 CALL 0363:0D41
CS:003E 9AE30C6303 CALL 0363:0CE3
CS:0043 9A8B0C6303 CALL 0363:0C8B
CS:0048 9A9F0C6303 CALL 0363:0C9F
CS:004D 9A9E07FB06 CALL 06FB:079E
CS:0052 FF365E59 PUSH [595E]
CS:0056 9A7D01B800 CALL 00B8:017D
CS:005B 83C402 ADD SP,+02
CS:005E 9A5F0C6303 CALL 0363:0C5F
CS:0063 B80100 MOV AX,0001
CS:0066 5D POP BP
CS:0067 CB RETF
CS:0068 55 PUSH BP
CS:0069 8BEC MOV BP,SP
CS:006B 83EC48 SUB SP,+48
AFFICHAGE ASM
Home F2=hlp End Print ESC F3 flèches
------------------------------------------------------------------------
Fonction I:
Desassemble une interruption avec la commande "HEXUTIL I XX" où xx
représente une valeur en HEXADECIMALE de 00 à FF. Les touches Page down
et Page up permettent de passer à l'interruption suivante/précédente.
Fonction C:
Fait un checksum sur un ou plusieurs fichiers, ceci simplement pour détecter
une différence avec un autre fichier que l'on soupçonne éventuellement avoir
été modifié.
Fonction P:
RECHERCHE par PATTERN, ce qui signifie en clair que l'on peut trouver une
certaine configuration d'octets sans en connaitre la valeur mais seulement
la disposition dans une chaine donnée. Utile pour trouver des chaines de
texte codées.
Le secteur contenant la chaine peut-être édité. Toutes les opérations de
la fonction O sont possibles.
EXEMPLE:
Hexutil a été lancé comme suit: H P *.EXE
C'est à dire que l'on demande à faire une recherche par pattern
limitée aux seuls fichiers EXE.
On a entré la condition suivante: 1234512345 qui signifie que
l'on cherche un pattern où l'on trouve le même octet en position
1 et 6, 2 et 7, 3 et 8, 4 et 9 et enfin une égalité d'octet en
position 5 et 10. Le "hit" a été trouvé dans le fichier INT.EXE
dans le 933ème secteur avec un déplacement ( offset ) de 125.
Autrement dit à 477821 octets du début du fichier.
- L'octet 1 et 6 est bien égal à 0C.
- L'octet 2 et 7 est bien égal à D9.
- L'octet 3 et 8 est bien égal à C1.
- L'octet 4 et 9 est bien égal à D8.
- L'octet 5 et 10 est bien égal à 4D.
-------------------------------------------------------------------------
512000 octets ont été lu du fichier INT.EXE
Mettez '1' pour la première série, puis '2' pour la suivante etc...
EX: 3 - - - 1 - - - 2 - - - 2 - 1 - 1 - - 3 3 - - - - - - - - - - -
╔══════════════════════════════════════════════════════════════════════╗
║ ┘ ┴ ╪ M ┘ ┴ ╪ M ║█
║ 1 2 3 4 5 1 2 3 4 5 ║█
║ 0CD9C1D84D0CD9C1D84D- - - - - - - - - - - - - - - - - - - - - - - - ║█
╚══════════════════════════════════════════════════════════════════════╝█
████████████████████████████████████████████████████████████████████████
Fichier FINT.EXE
Egalité trouvée à l'offset HEXA: 074A7D DEC: 0477821
Référence PCTOOLS Secteur: 0933 Dép: 125
Ci-après un second exemple où l'on cherche des octets identiques en
- 1, 2, 3, 11 et 13ème position ( 80 )
- 4, 5 et 6ème position ( 00 )
- 7, 8 et 9ème position ( C0 )
╔══════════════════════════════════════════════════════════════════════╗
║ Ç Ç Ç