DÉTECTER SOFTICE

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 - 29 mars 2003 à 08:55
cs_ManChesTer Messages postés 374 Date d'inscription vendredi 20 octobre 2000 Statut Modérateur Dernière intervention 15 janvier 2021 - 27 juin 2004 à 01:35
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/12443-detecter-softice

cs_ManChesTer Messages postés 374 Date d'inscription vendredi 20 octobre 2000 Statut Modérateur Dernière intervention 15 janvier 2021
27 juin 2004 à 01:35
ReptileCrackeR, Désolé

J'ai un contract qui me l'interdit avec mon nouvel employeur (donc plu de nouvelles sources de Manchester....)

J'en publierai peut etre des anciennes quand je remetrai la main dessus, mais le reste ne m'apartiend plu...

Bon Coding....

ManChesTer.
ReptileCrackeR Messages postés 2 Date d'inscription mardi 24 octobre 2000 Statut Membre Dernière intervention 26 juin 2004
26 juin 2004 à 21:29
manchester tu pe faire une ptite source d'exemple ca minteresse la suis en train de bosser sur un ptit prog anti sice avec crc checksum, cryptage de certaines parties de l'executable et pas mal de ptits truc en plus :)
cs_ManChesTer Messages postés 374 Date d'inscription vendredi 20 octobre 2000 Statut Modérateur Dernière intervention 15 janvier 2021
26 juin 2004 à 19:44
Lol ReptileCrackeR,

D'ou l'utilitè de timers comme je l'ai ecrit plus haut...
d'autre part un peux de code automodifiè et/ou autogenerer et quelques bon checksum controls rendent tres vite ta methode d'inversion de saut (meme en mèmoire) totalement inefficace...

Bon Coding...

ManChesTer.
ReptileCrackeR Messages postés 2 Date d'inscription mardi 24 octobre 2000 Statut Membre Dernière intervention 26 juin 2004
26 juin 2004 à 16:26
disons que c une "protection" vraiment tres peu evoluer quon peut faire sauter un inversant un saut conditionnel ou avec un bpx createfilea sous sice (dans le cas ou on ne pourrais pas modifier l'exe par exemple packé) et inverser ce meme saut en mémoire. la fonction n'y voit que du feu ! je pense quon pourrais trouver une methode plus efficace, bien sur aucune ne sera efficace a 100% mais au moins elle le sera + ;)
cs_ManChesTer Messages postés 374 Date d'inscription vendredi 20 octobre 2000 Statut Modérateur Dernière intervention 15 janvier 2021
25 juil. 2003 à 22:39
oui cyberbobjr,

C'est une des soluces ou du moins une partie.....
Mais pour qu'un debuger debug il faut q'il mette le cpu en debugmode donc ....

D'autre part une analyse rapide du code se trouvant actif en ram permet aussi de detecter la pluspart des debugger's....

Puis certaines instructions mal placées et du code auto modifiè permet de faire planter ces derniers...

Bon Coding...

ManChesTer.
cs_iubito Messages postés 629 Date d'inscription mercredi 3 juillet 2002 Statut Membre Dernière intervention 9 octobre 2006
25 juil. 2003 à 10:53
je suis encore plus perdu là lol
cyberbobjr Messages postés 6 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 2 août 2004
25 juil. 2003 à 10:40
Je vais vous donner une piste :
Forcément un débugger bloque le temps d'utilisation d'un soft, il gèle de cette facon le temps machine...
Or, GetTickCount nous donne le nbre de tick depuis l'allumage de l'ordinateur.
cs_iubito Messages postés 629 Date d'inscription mercredi 3 juillet 2002 Statut Membre Dernière intervention 9 octobre 2006
25 juil. 2003 à 10:21
ouais je veux des détails manchester !!! si tu as un code ki fait ça :-p
DelphiCool Messages postés 455 Date d'inscription mardi 24 juillet 2001 Statut Membre Dernière intervention 10 mars 2009
3 avril 2003 à 20:33
Merci Manchester,

aurrais tu un peu plus de details ?
cs_ManChesTer Messages postés 374 Date d'inscription vendredi 20 octobre 2000 Statut Modérateur Dernière intervention 15 janvier 2021
3 avril 2003 à 19:41
Delphicool,

Une methode identique mais moins facile a dètectè consiste a chercher dans la liste des applications actives si un debugger est prèsent, dans ce cas on termine le programme (avec une novelle thread et un halt(0) par exemple ou quelques timers bien "hard")...

D'autre part comme les debugers utilisent tous le mode debug du cpu.....

Bon a savoir aussi : Tous les debugers ont une signature (un peux comme les viruses....)

Bon coding...

ManChesTer.
DelphiCool Messages postés 455 Date d'inscription mardi 24 juillet 2001 Statut Membre Dernière intervention 10 mars 2009
1 avril 2003 à 18:26
Je sais que c'est la méthodes la plus facile à denicher :-(

Pourrais tu nous en dire plus sur les autres méthodes, s'il te plais?
cyberbobjr Messages postés 6 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 2 août 2004
1 avril 2003 à 15:50
Cette technique antidebugging est bien connue, et facilement resiliable par les outils "disponibles" sur le marché.
Il y'a des méthodes moins conventionnelles et plus vicieuse pour ce genre de problème >:->
DelphiCool Messages postés 455 Date d'inscription mardi 24 juillet 2001 Statut Membre Dernière intervention 10 mars 2009
29 mars 2003 à 11:29
voilà
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
29 mars 2003 à 10:03
Ca aurait été sympa de préciser ce qu'est SoftIce, pour ceux qui ne connaissent pas (mais sans leur donner de mauvaises idées ;-)).

En tous cas, je te félicite de reconnaitre que tu n'as pas tout inventé.

Enfin, si tu peux, épargnes-nous des Goto qui font toujours penser à une pâle adaptation d'un code source rédigé en basic.
Bonne journée à toi, DelphiCool.
DelphiCool Messages postés 455 Date d'inscription mardi 24 juillet 2001 Statut Membre Dernière intervention 10 mars 2009
29 mars 2003 à 09:57
DelphiProg, je n'ai pas pris ce source sur delphipages.

Les fonctions pour detecter SoftIce, y'en as de partout, s'il y as des ressemblence c'est un peu normal, car j'ai trouvé la façon de détecter Ice sur le net, je ne l'ai pas inventé.
C'est la detection Meltice.


J'ai adapté ce source à mes besoins.

Exuse moi d'avoir omis de mettre "Une partie du source n'est pas de moi".

Pour le goto, bien j'ai hésité entre, mettre la deuxiemme partie entre un else begin end; ou un goto.

si ça te frustre je peux tres bien mettre la premiere solution.

Tu sais DelphiProg, ya pas 30 milles detection de SoftIce.
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
29 mars 2003 à 09:01
Il existe des centaines d'exemplaires de ce code sur le net et la ressemblance est vraiment frappante :
exemple sur http://www.delphipages.com/tips/copyview.cfm?ID=59
---
The Cracker can still defeat this protection
by using FrogIce, nothing can stop SoftIce hehe.
Anyway here is sum code you just instert into
your Applcation.

//SoftIce in W9x
Function IsSoftIce95Loaded: boolean;
Var hFile: Thandle;
Begin
result := false;
hFile := CreateFileA('.SICE', GENERIC_READ or GENERIC_WRITE,
FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, 0);
if( hFile <> INVALID_HANDLE_VALUE ) then begin
CloseHandle(hFile);
result := TRUE;
end;
End;
// SoftIce in NT OS
Function IsSoftIceNTLoaded: boolean;
Var hFile: Thandle;
Begin
result := false;
hFile := CreateFileA('.NTICE', GENERIC_READ or GENERIC_WRITE,
FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, 0);
if( hFile <> INVALID_HANDLE_VALUE ) then begin
CloseHandle(hFile);
result := TRUE;
end;
End;
//to detect it
if IsSoftIce95Loaded or IsSoftIceNTLoaded then
Application.Terminate
{if you insert a "Nag" (Message telling him he uses SoftIce) then a amateur cracker w'll find this protection in notime}
//bestway of using this thing is in "project Unit"
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
29 mars 2003 à 08:55
Rien que de voir des Goto dans un programme rédigé en Pascal, ça me fait hérisser le poil.
A l'origine, de qui est ce code source ?