뜻밖에도 새로운 배경화면을 찾아보게 됐는데, 역시 검은색 계열이 좋고, 부분적으로 색감을 넣으면 좋겠다. 바탕 화면에 아이콘을 배치해야 하니 다른 색상의 배경화면을 사용하면 아이콘이 잘 보이지 않을 것 같아.
위에 있는 어셈블리 코드 보고 생각 좀 해봤는데, 무슨 말인지 모르겠어. __INLINE_CODE_0__에게 맡겨서 명령어를 설명받았지만, 상황은 설명 안 해주네. 분명 특수한 상황에서만 쓰이는 명령어인 것 같아. 일반적인 코드는 이런식으로 생기지 않아.
지금은 검색 엔진이 더 나을 것 같아요, 어셈블리 지식이 부족하니까요
벽지
어셈블리 코드
PUSHFD
MOV DWORD PTR [ESP],0X100
POPFD
실제 사용 시나리오
bool IsDebugged()
{
__try
{
__asm
{
pushfd
mov dword ptr [esp], 0x100
popfd
nop
}
return true;
}
__except(GetExceptionCode() == EXCEPTION_SINGLE_STEP
? EXCEPTION_EXECUTE_HANDLER
: EXCEPTION_CONTINUE_EXECUTION)
{
return false;
}
}
설명
TrapFlag
강조_2SINGLE_STEP
,우리가 코드를 추적하면 이 플래그는 디버거에 의해 초기화되므로 예외를 볼 수 없습니다
실제 테스트 결과, 검사 디버깅 함수를 직접 건너뛰면 디버깅이 감지되지 않지만, 검사 함수 실행 시에만 감지되는 것으로 나타났다 (자료 조사 중이며 아직 실제 확인은 되지 않았다)
참고 자료
관련 자료는 웹사이트의 영문 원본을 번역한 것이며, 사이트에서는 다양한 디버깅 방지 기술에 대해 설명하고 있습니다