2017-09-27 8 views
1

Je débogue une application sans les sources, j'utilise IDA PRO + Windbg comme débogueur. Je trting pour attraper les appels à CloseHandle avec la valeur de poignée spécifique, par exemple poignée = 0x14Les points d'arrêt conditionnels Windbg ignorent la condition elle-même

Je mets un point d'arrêt conditionnel comme ceci:

bp kernel32!CloseHandle "j (poi(@esp+4)=0x00000014) ''; 'gc'"

Les points d'arrêt fixe normalement, mais il casse sur chaque appel à CloseHandle, contrairement à ce que je suis en train, pour briser que si le premier argument est égal à 0x14

+1

vous avez besoin d'un égal conditionnel == pas un seul = – blabb

Répondre

4

vous avez un manquant = l'égal opérateur conditionnel doit deux == pas un seul =

0:000> bp kernel32!CloseHandle ".if(poi(@esp+4)!=0xcc) {? dwo(@esp+4);gc}.else{? dwo(@esp+4);.echo our handle;gc}" 
0:000> g 

Evaluate expression: 60 = 0000003c 
Evaluate expression: 56 = 00000038 

Evaluate expression: 204 = 000000cc <------ 
our handle <------------- 

Evaluate expression: 200 = 000000c8  
Evaluate expression: 256 = 00000100 
Evaluate expression: 272 = 00000110  
Evaluate expression: 280 = 00000118  
Evaluate expression: 308 = 00000134 
Evaluate expression: 312 = 00000138 
Evaluate expression: 308 = 00000134 
Evaluate expression: 324 = 00000144 
Evaluate expression: 328 = 00000148 
Evaluate expression: 324 = 00000144