2009-09-18 12 views
8

Çok basit bir durum. Delphi 2007'de genellikle 'Release' olarak derlenen, ancak yine de bir hata ayıklayıcısının altında çalışan bir uygulama üzerinde çalışıyorum. Ve zaman zaman da regresyon testi için SilkTest altında çalışacaktır. Bu gerçekten eğlenceli olsa da, özel bir şey yapmak istiyorum ...Yazılımımı analiz eden bir hata ayıklayıcı veya başka bir aracı nasıl algılayabilirim?

Uygulamamın bir hata ayıklayıcı/regresyon test cihazı içinde çalışıp çalışmadığını tespit etmek istiyorum ve bu durumda, uygulamanın hangi aracın kullanıldığını bilmesini istiyorum. ! (Böylece, uygulama çöktüğünde, bu bilgiyi hata raporunda bildirebilirim.)

Her türlü öneri, çözüm?

+0

kötü amaçlı yazılım, doğru ...? – Mick

cevap

10

Başvurunuzu başladı ebeveyn sürecini kontrol edebilirsiniz yapabilirsiniz. CreateToolhelp32Snapshot/Process32First/Process32Next uygulama PID'niz için ana PID'yi (PROCESSENTRY32.th32ParentProcessID veya TProcessEntry32.th32ParentProcessID) alın. Daha sonra, kontrol etmek istediğiniz, SilkTest gibi uygulamalarla karşılaştırmak için ana PID dosyasının dosya adını alın. Kod kullanımı için this article denetleyin. IsDebuggerPresent ve CheckRemoteDebuggerPresent ek olarak

, ayrıca (İİK Dişli Çevre Block TEB, sorgulamak gerekir almak için, PEB Süreci Çevre Block) PEB.BeingDebugged sorgulayabilir.

3

Muhtemelen IsDebuggerPresent işlevini arıyorsunuz.

+0

Ama Ayrıca, SilkTest ve diğer test yazılımlarını mı yoksa uzak hata ayıklayıcılarını mı algılayacak? –

+1

Ayrıca, uzak hata ayıklayıcılarını tanımlayabiliyor gibi görünen "CheckRemoteDebuggerPresent" işlevi de var. SilkTest'i bilmediğimden emin değilim. hata ayıklayıcı veya değil.Eğer yaparsa, o zaman yukarıdaki çalışacaktır.Eğer değilse, o zaman başka bir teknik bulmanız gerekecek –

0

Ayrıca

if DebugHook <> 0 then ... 
+0

Sadece Delphi IDE içinden değil, diğer hata ayıklayıcılarından da çalışır.Ayrıca, uygulamanın debugged olduğunu unutmayın. "Serbest Bırak" modu, "Hata Ayıklama" modu değil. –

1

SilkTest'i algılamak için, varlığını algılamak amacıyla yalnızca SilkTest tarafından kullanılan bir DLL dosyasına bağlanmayı deneyebilirsiniz. Açık Ajan bir işleme bağlı Örneğin, Win32HookDll_x86.dll veya Win32HookDll_amd64.dll isimleri kolayca Process Explorer gibi bir araç ile tespit edilebilir (hazır bulunacak. Sen yazmıyorsun

İlgili konular