<!-- HTML generated using hilite.me -->
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | using System; using System.Diagnostics; using System.Runtime.InteropServices; public class DetectDebugger { [DllImport("kernel32.dll", SetLastError = true, ExactSpelling = true)] static extern bool CheckRemoteDebuggerPresent(IntPtr hProcess, ref bool isDebuggerPresent); public static void Main() { bool isDebuggerPresent = false; CheckRemoteDebuggerPresent(Process.GetCurrentProcess().Handle, ref isDebuggerPresent); Console.WriteLine("Debugger Attached: " + isDebuggerPresent); Console.ReadLine(); } } |
C# 디버거 감지 코드 ( 겉멋용 )
아마 1, 2번은 별 도움 안될듯 질문에 대한 답변이 아니라
1. 실행 코드 암호화 ( 난독화 )
2. 필요 이상으로 메모리에 중요한 정보를 보관하지마라
관련 레퍼런스 https://www.symantec.com/connect/articles/windows-anti-debug-reference
RtlZeroMemory 이용한 방법을 추천함 개인적으로는
Debugger.IsAttached는 사용하지 않는 것을 권장함
-- 도움 안될듯 한 내용 경계선 --
3. 안티 디버그 보호 기술 구현
http://www.codeproject.com/Articles/1090943/Anti-Debug-Protection-Techniques-Implementation-an
링크 내에 항목들 중에 이해 안가는거 있으면 1시 10분 전까지 댓글 달면 설명해드림
근데 워낙 설명이 잘 되어 있어서 상관 없을듯 ^^
시샵을 예로 들어 설명한거지? 시샵은 디컴파일이 가능한 언어니까..후자의 링크의 경우 다 팬텀 플러그인으로 바이패싱이 가능해 핵심 기법이라 할 수 있는 TLS나 PEB Flag 체크는 너무 구식 기술이라..
RtlZeroMemory 예제좀 부탁한다
ㄴ 망할 팬텀이면 답 없음 ㅅㄱ
RtlZeroMemory로는 원천 봉쇄는 불가능해도 메모리에 있는 데이터를 긁어가는 걸 방지할 수는 있음 주로 멀웨어들이 자주 탑재하고나옴
시간 없어서 그런데 저녁에 프갤 다시 방문해주셈 관련 글 써놓을게
ㅇㅋ 정말 고맙다