Quelques questions/réponses, mais la liste n'est pas exhaustive !
FAQ Softice
-Quelles sont les différences entre OllyDbg et Softice ?
OllyDbg est un debugger applicatif (Ring3), il n'interfère donc pas avec le système et se voit doté de pouvoir limités.
Softice est une IceBox qui fonctionne au niveau du coeur du système (le Kernel) et est capable de geler ce dernier (d'où le nom de IceBox). Softice à tous les pouvoirs sur le système car il fonctionne au privilège ayant le plus de capacité (le Ring 0), mais en contre partie c'est un debugger très intrusif et qui peut donc faire crasher le système dans certains cas.
-Dois-je obligatoirement utiliser Softice ?
A priori non, si vous ne débugger pas de code en ring0 ou si vous n'avez pas besion d'un debugging "low level" (bas niveau) OllyDbg fera très bien l'affaire et est beaucoup plus stable que Softice.
-Quelle version pour Windows XP / 2k3 ?
Softice n'existe plus seul, il fait maintenant parti du pack Driver Studio. La dernière version de driver studio (D.S) est actuellement la version 3.2 et est d'après Compuware la seule réellement capable de supporter XP SP2 (support 64 bits restreint mais possible). D.S ne supporte Win 9x qu'au niveau de compatibilité de D.S 2.7 ! Vous ne bénificierez pas des nouveautés de D.S 3.2 sur un système win 9.x.
-Quelle version pour les autres windows ?
Vous pouvez installer une ancienne version de Softice sur windows 2000 (Softice NT 4.05) ou la version 2.7 de D.S, ceci étant valable aussi pour les Windows 9x. Comme dit précédemment, D.S 3.2 ne fonctionne (et n'istalle) qu'au niveau de D.S 2.7 sur les win 9x.
- Est-ce que Softice fonctionne sur windows XP SP2 / 2K3 ?
Oui, mais il faut changer le fichier OSINFO.DAT qui contient de nouvelles informations pour XP SP2. Ce fichier est téléchargeable sur le site de Compuware (seulement pour D.S 3.1 / 3.2):
fxp://ftp.compuware.com/pub/driverstudi ... OSINFO.DAT
remplacer le fichier situé dans windows\system32\drivers et rebootez.
pour les autres D.S rendez-vous ici :
hxxp://frontline.compuware.com/nashua/kb/doc/1846.asp
-Installation de Softice
Si vous installez Softice seul (par ex. la version NT 4.05), vous n'avez en principe rien besoin de faire en plus. Installez le et c'est tout...
Pour D.S vous aurez le choix d'installer les composants Host et/ou Target. Si vous ne faites pas de remote debugging (debugging distant, c-a-d entre différents PC) vous pouvez n'installer que les composants Host, dans ce cas vous débuggerez sur votre PC et seulement celui-ci.
Si vous choississez de faire du Remote debugging, installez les composant Host sur la machine hôte (celle qui débug) et les composants Target sur la machine que vous souhaitez debugger (en n'installant que les composants Target vous ne pourrez pas débugger directement sur la macine cible [target], dans ce cas installez les deux composants). Pour plus de précision sur le remote debugging, voir question plus bas.
-Erreur Code 31
Vous ne pouvez pas démarrez Softice et obtenez ce message d'erreur (possiblement en anglais) :
Erreur Code 31
Un péripherique attaché au systéme ne fonctionne pas correctement
Si vous disposez d'un processeur 64 bits, c'est un problème de PAE (Physical Address Extension)
Ouvrez votre fichier boot.ini à la racine de C:\
il devrait ressembler à qque chose comme ca :
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professionnel" /noexecute=optin /fastdetect /noguiboot
Vous devrez ajouter l'option /NOPAE :
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professionnel" /noexecute=optin /fastdetect /noguiboot /NOPAE
Sauvez le boot.ini, rebootez.
-Comment breaker sur un programme ?
1) Chargez un programme avec le symbol Loader de softice. Celuic-i vous indique une erreur, indiquez lui que vous souhaitez quand même continuer
2) Modifiez votre programme pour mettre un opcode CC (int 3) dans votre programme. Demarrez softice et tapez: BPINT 3. Softice va désormais faire un handling sur toutes les INT3. démarrez alors votre programme, Softice devrait arriver !
3) Utilisez la fonction "Break & Enter" du programme LordPE, en utilisant aussi la commande BPINT 3. (chez certains cette manière est celle qui fonctionne le mieux et est la moins contraignante).
-Softice ne break pas sur les apis !
1) assurer vous que votre winice.dat contient les fichiers exportant les apis sur lesquels vous souhaitez poser un BP.
2) Assurez vous d'être dans le context de l'application que vous débugger. Si vous la charger avec le module loader vous êtes dans le context approprié, sinon faites la commande ADDR sous cette forme (3 choix possibles):
ADDR pid (process ID)
ADDR nom du module
ADDR KPEB (addresse linéaire d'un PEB Kernel)
3) [D.S 3.0 / 3.1] Ces versions de Softice travaillent dans ce que l'on appelle un context sensitif de breakpoints. Ainsi les breakpoints ne fonctionne que pour un espace mémoire spécifique (et non en globalité). Pour revenir à l'ancien système, donnez cette commande à softice:
set BreakInSharedMods on
"Operating behavior of breakpoints in shared ring 3 modules. In versions of SoftICE prior to 3.0, breakpoints set in shared ring3 modules would hit according to the description as defined in the Using SoftICE book, Chapter 7, "Understanding Breakpoint Contexts." In 3.0, we changed this so that breakpoints would only hit within the context in which the breakpoints were set. For Version 3.1, we have now added a SoftICE environment variable to toggle the behavior of shared ring3 breakpoints. By default, breakpoints only trigger in the context in which they were set. To change to the pre-3.0 behavior, from the SoftICE command line, issue the command set BreakInSharedMods on. Note that all breakpoints will have to be cleared with a bc * and then reset after changing this value. For shared ring 3 module breakpoints, it is possible for your application (or another application that is sharing the module) to end up crashing. This is due to copies of the physical pages that the code pages reside on being present and SoftICE not tracking these copies. Any such ring 3's left around in memory will cause crashes. There is currently no easy workaround. One possible solution would be to issue the set i3here on command to allow for user mode int3's to trigger SoftICE, and then modify the byte in memory, replacing it with the original code byte."
Attention ! Notez que D.S 3.2 est revenu à un mode de BP global (merci !). Il n'est donc plus nécessaire de choisir le processus.
-Je n'arrive pas à breaker sur GetDlgITemText (par ex.)
Beaucoup d'API existe en deux versions et sont suffixées par une lettre indiquant dans quel système de caractère elle sont utilisées :
A pour ASCII
W pour Unicode [Wide chars]
ainsi vous devriez utiliser soit GetDlgItemTextA ou GetDlgItemTextW pour pouvoir breaker.
-Comment faire un break sur une API en Visual Basic ?
Vérifiez votre Winice.dat pour voir s'il importe bien les dll VB (cf. winice.dat ci dessous). Ensuite vous devez préfixer l'api VB avec le nom de la dll, et n'oubliez surtout pas qu'il y a deux underscores ('__') avant le nom de l'api. Voici la syntaxe exacte :
bpx msvbvm60!__vbastrcmp
-hmemcpy ne fonctionne pas !
La fonction hmemcpy n'existe plus sur les environnements NT. Elle n'est donc disponible que sur les windows 9x.
-Je cherche un Winice.dat
à installer dans Windows\System32\Drivers
(Winice.dat courtesy of Kaine)
PENTIUM=ON
NMI=ON
ECHOKEYS=OFF
NOLEDS=OFF
NOPAGE=OFF
SIWVIDRANGE=ON
THREADP=ON
LOWERCASE=OFF
PHYSMB=384
SYM=512
HST=256
MACROS=32
DRAWSIZE=2048
INIT="lines 60;ww;wl;wr;wd 24;wc 24;code on;x;"
F1="h;"
F2="^wr;"
F3="^src;"
F4="^rs;"
F5="^x;"
F6="^ec;"
F7="^here;"
F8="^t;"
F9="^bpx;"
F10="^p;"
F11="^G @SS:ESP;"
F12="^p ret;"
SF3="^format;"
AF1="^wr;"
AF2="^wd;"
AF3="^wc;"
AF4="^s 0 l ffffffff 56,57,8b,7c,24,10,8b,74,24,0c,8b,4c,24,14,33,c0,f3,66,a7;"
AF5="CLS;"
AF11="^dd dataaddr->0;"
AF12="^dd dataaddr->4;"
CF1="altscr off; lines 60; wc 32; wd 8;"
CF2="^wr;^wd;^wc;"
; WINICE.DAT
; (SystemRoot\System32\Drivers\WINICE.DAT)
; for use with SoftICE for Windows NT (versions 3.0 and greater)
;
; ***** Examples of export symbols that can be included *****
; Change the path to the appropriate drive and directory
EXP=\SystemRoot\System32\hal.dll
EXP=\SystemRoot\System32\ntoskrnl.exe
EXP=\SystemRoot\System32\ntdll.dll
EXP=\SystemRoot\System32\kernel32.dll
EXP=\SystemRoot\System32\user32.dll
EXP=\SystemRoot\System32\csrsrv.dll
EXP=\SystemRoot\System32\basesrv.dll
EXP=\SystemRoot\System32\winsrv.dll
EXP=\SystemRoot\System32\Msvbvm50.dll
EXP=\SystemRoot\System32\Msvbvm60.dll
EXP=\SystemRoot\System32\gdi32.dll
EXP=\SystemRoot\System32\comdlg32.dll
EXP=\SystemRoot\System32\shell32.dll
EXP=\SystemRoot\System32\advapi32.dll
EXP=\SystemRoot\System32\comctl32.dll
EXP=\SystemRoot\System32\crtdll.dll
EXP=\SystemRoot\System32\version.dll
EXP=\SystemRoot\System32\mpr.dll
EXP=\SystemRoot\System32\olesvr32.ll
EXP=\SystemRoot\System32\olesvr.dll
EXP=\SystemRoot\System32\kuser.dll
-Où puis je trouver toutes les commandes de Softice ?
Il existe un ficher d'aide nommé "SoftIce command reference's" (compuware/driver studio/books) en PDF.
-Comment passer mon clavier en FR (AZERTY) ?
1) Recherchez un utilitaire nommé Keymap.exe (normalement dans Program Files\Compuware\DriverStudio\SoftICE\Tools).
2) Copiez ce programme dans c:\windows\system32\drivers\
3) Démarrez un Shell en tapant : Windows+R => cmd
4) faites un "dir" vers le chemin c:\windows\system32\drivers\
5-a) pour windows NT tapez : keymap.exe ntice.sys
5-b) pour windows 9x tapez: keymap.exe winice.exe
6) rebootez
pour revenir au clavier par défaut (U.S)
recommencez les étapes ci-dessus, sauf :
5-a) pour Windows NT tapez: keymap.exe ntice.sys /USA
5-b) pour Windows 9x tapez: keymap.exe winice.exe /USA
-Softice semble être reconnu par des anti-debugs, comment éviter cela ?
La meilleur chose est d'installer IceExt (actuellement en v0.67). Disponible à cette adresse :
hxxp://stenri.pisem.net/
IceExt v0.66 - Support D.S 3.2 -Implemented as internal NTIce commands:
memory dumping, SoftICE screen dumping, tetris game,
kernel-mode MP3 player, online help. SoftICE anti-detection
technology: anti-MeltICE, MeltSiwVid, MeltSiwSym,
INT3 BackDoor, INT3 BoundChecker interface, INT1 single
step & EIP+2 detection, anti INT41 (experimental),
NtSystemInformation with SystemModulesInformation NTICE.SYS
check e.t.c. Command parser accepts expressions wherever
possible. Sources are included (use custom setup).
-Mon horloge windows est bloquée, est-ce normal ?
Softice gèle l'horloge de windows (en réalité c'est tout windows qui est gelé), petit à petit votre horloge va dériver, ou carrément être hors phase. Vous devrez la remettre à l'heure manuellement ou avec un outils de synchronisation [Windows XP a un outil de synchro intégré].
-Le remote debugging c'est quoi ? [+VMWARE]
Le remote debugging vous permet de débugger sur une machine distante. Vous pouvez soit le faire par réseaux ou par cable null-modem (un cable en série). Ceci nécessite de relier deux PC entre eux.
VMWARE est une machine virtuelle (VM pour Virtual Machine) permettant d'avoir un second O.S tournant dans une machine virtuelle. Ceci fait vous pouvez en ce cas faire du remote debugging sur un seul P.C. Notez que VMWARE 4.5.x est compatible D.S 3.1. Grâce à cela vous pouvez ne débugger que sur une seule machine. Voici un tut pour établir une connexion entre Softice et la machine virtuelle.
http://neitsabes.online.fr/RE/HIRE/Sice_VMWARE.html
-Sous VMWARE, CTRL+D fait ramer le processeur et la fenêtre de softice n'apparait pas !
Avez vous installé les VMWARE tools ? Dans la négative, faites le ! (et rebootez la VM)
- Ensuite si ca ne fonctionne toujours pas :
Dans le répertoire où est située votre VM, ouvrez le fichier *.vmx avec un éditeur de texte.
Ajoutez ces lignes à la fin :
- Code: Tout sélectionner
vmmouse.present = FALSE
svga.maxFullscreenRefreshTick = 5
sauvegardez, rebootez la VM, CTRL+D devrait faire apparaitre la fenêtre de Softice à présent.
-Existe t'il des tutoriaux sur l'utilisation de Softice en Francais ?
Le guide de Falcon16, surement le meilleur quand à l'utilisation de Softice (certaines parties sont un peu vieilles mais celle sur les touches et raccourcis et toujours d'actualité) :
http://membres.lycos.fr/falcon16/cours/softice.zip
Le millenium cracking tut d'Acid Burn (plutôt des exemples d'utilisation sur des programmes)
http://66.98.132.48/fravia/millenium.html
-En Anglais ?
Surement le plus connu : Mammon_'s Tales to his Grandson, Mankind comes into the Ice Age.
http://newdata.box.sk/neworder/cracking/ice.html
- Quel est la réponse à la vie, l'univers et le reste ?
42
Neitsa