기금넷 공식사이트 - 주식 지식 - 도움말 Safengine Shielden 2.3.3.0을 디버그 가능하게 만드는 방법
도움말 Safengine Shielden 2.3.3.0을 디버그 가능하게 만드는 방법
(1)
메모리에서 CreateThread의 그림자를 찾으십시오.
나는 그를 실패시켰습니다. 첫 번째 명령을 ret 18로 변경하십시오:
shadow_CreateThread
00D1FB55 8BFF mov edi, edi ;ret 18로 변경
00D1FB57 55 push ebp
00D1FB58 8BEC mov ebp, esp
00D1FB5A FF75 1C 푸시 dword ptr [ebp+1C]
00D1FB5D FF75 18 푸시 dword ptr [ebp+18]
00D1FB60 FF75 14 푸시 dword ptr [ebp +14]
00D1FB63 FF75 10 푸시 dword ptr [ebp+10]
00D1FB66 FF75 0C 푸시 dword ptr [ebp+C]
00D1FB69 FF75 08 푸시 dword ptr [ebp+8]
00D1FB6C 6A FF 푸시 -1
00D1FB6E E8 D9FDFFFF 호출 00D1F94C
00D1FB73 5D 팝 ebp
00D1FB74 C2 1800 ret 18
코드 복사
이러한 디버깅 옵션을 확인할 때마다 스레드를 차지하므로 이유를 설명할 필요가 없습니다.
저는 nevsayno의 사진을 본 후 다음과 같은 옵션이 생각났습니다. 그의 사진을 빌려서 붙여넣었습니다.)
(2)
기억 속에 (위와 함께) 같은 문단임) GetThreadContext의 그림자 찾기:
Shadow_GetThreadContext
00D488DD 8BFF mov edi, edi
00D488DF 55 push ebp
00D488E0 8BEC mov ebp, esp
00D488E2 FF75 0C 푸시 dword ptr [ebp+C]
00D488E5 FF75 08 푸시 dword ptr [ebp+8]
00D488E8 FF15 EA0ED100 호출 [D10EEA]
00D488EE 85C0 테스트 eax, eax
00D488F0 0F8C 57B60000 jl 00D53F4D
00D488F6 33C0 xor eax, eax
00D488F8 40
inc eax
00D488F9 5D pop ebp
00D488FA C2 0800 ret 8 ;jmp 00E41F90
00D488FD 90 nop
00D488FE 90 nop
p> p>00D488FF 90 nop
00D48900 90 nop
00D48901 90 nop
코드 복사
위의 ret 8 변경 쓸모없는 부분으로 점프하고 다음 코드를 추가하세요:
00E41F90 50 push eax
00E41F91 8B4424 0C mov eax, [esp+C]
00E41F95 8038 10 cmp 바이트 ptr [eax], 10
00E41F98 75 16 jnz short 00E41FB0
00E41F9A 33D2 xor edx, edx
00E41F9C 8950 04 mov [eax+ 4] , edx ;clr Dr0~3
00E41F9F 8950 08 mov [eax+8], edx
00E41FA2 8950 0C mov [eax+C], edx
00E41FA5 8950 10 mov [eax+10], edx
00E41FA8 52 푸시 edx
00E41FA9 6A 04 푸시 4
00E41FAB E8 457C9C7B kernel32.TlsSetValue 호출
p>00E41FB0 58 pop eax
00E41FB1 C2 0800 ret 8
코드 복사
이유:
Mr. TlsValue가 DrDr1+Dr2+Dr3의 총 값과 같은지 판단합니다
Drx의 값을 얻으려면 이를 0으로 지우고 TlsValue를 0으로 설정합니다.
참고: Shadow_GetThreadContext는 Anti Debugger에서만 호출되기 때문입니다.
따라서 새 코드에서 연결을 사용하지 않으려면 직접 덮어쓰면 됩니다.
(3)
메모리에서 SetThreadContext의 그림자를 찾아보세요:
그리고 시작 부분을 다음으로 변경하세요:
mov al, 1
ret 8
코드 복사
이유:
이 기능을 사용하지 않으면 자체 디버깅을 위한 하드 브레이크가 사라질 수 있습니다.
p>
(4)
이전에 42F765 값을 기록해 두었습니다. 실제로 이는 VM의 ds:[imm] 명령입니다.<
/p>
vm.ds:[imm]
0042F763 8B01 mov eax, [ecx] ;jmp 00534FC5
0042F765 8D1C33 lea ebx, [ebx+esi] p>
0042F768 ^ 7E B9 jle short 0042F723
0042F76A ^ 7F CB jg short 0042F737
코드 복사
훅을 걸어야 합니다. 쓸모없는 부분으로 건너뛰고 다음 코드를 작성하세요:
여기서 4 cmp는 처음에 녹음한 Dr0~3입니다.
00534FC5 81F9 C4754000 cmp ecx, 004075C4
00534FCB 74 18 짧은 00534FE5
00534FCD 81F9 49754000 cmp ecx, 00407549
00534FD3 74 10 짧은 00534FE5
00534FD5 81F9 B4744 000cmp ecx, 004074B4
00534FDB 74 08 je short 00534FE5
00534FDD 81F9 AF744000 cmp ecx, 004074AF
00534FE3 75 09 jnz short 00534FEE
00534FE5 9 C pushfd
00534FE6 66:810C24 0001 또는 단어 ptr [esp], 100
00534FEC 9D popfd
00534FED 90 nop
00534FEE 8B01 mov eax, [ecx] ;원래 명령어 추가
00534FF0 8D1C33 lea ebx, [ebx+esi] ;원래 명령어 추가
00534FF3 ^ E9 70A7EFFF jmp 0042F768 ;Jump back< /p >
코드 복사
이유:
셸은 항상 해당 4개의 값을 Dr0~3으로 설정하고 Dr7을 33335555h로 설정합니다.
의미 저 4자리를 읽으면 80000004라는 예외가 발생하게 됩니다.
쉘이 구체적으로 읽을 때 80000004가 발생하지 않으면 동작하지 않습니다.
OD에서 중단점을 설정하면 연결이 끊어진 후 Target으로 제어권을 넘기기 전에
OD는 연결이 끊어진 한 그 값을 변경합니다. , 무슨 일이 있어도 할 수 없는 일이다
정상 실행이 실패한 이유.
처음에 삭제한 7개의 스레드에도 Drx의 이러한 직업이 가득합니다.
(5)
VM의 rdtsc 명령 변경
원래 vm.rdtsc는 다음과 같습니다.
rdtsc
> sub ebp, 8
mov [ebp+0], edx
mov [ebp+4], eax
코드 복사
물론 중간에 많은 쓰레기가 삽입됩니다. 우리는 주로 eax = 0을 만들고자 합니다. 이 샘플은 다음과 같습니다:
00437C98 8D2424 lea esp, [esp] ; / nop
00437C9B 895500 mov [ebp], edx
코드를 복사하세요
정크 명령어 lea esp,[esp]를 xor eax,eax로 변경하세요. / nop
이유:
쉘은 항상 rdtsc.eax를 사용하여 메모리 확인을 위해 난수를 수행합니다.
ds:[imm]을 변경했으며 향후에 큰 변화를 가져올 수 있습니다. 힙 소프트웨어 브레이크포인트(CC)
변경 후에는 0번째 작은 블록만 확인하게 됩니다.
위 5가지 항목을 완료하고 나면 마치 디버깅용 메모장처럼 쉘과 소프트웨어를 볼 수 있을 것입니다.
이 쉘을 완벽하게 분석할 수 있습니다.
마지막으로 다니엘의 쉘링 스크립트를 기대해보자.
참고: "중단점을 설정할 수 없습니다"라는 단어와 관련하여:
일반 셸로 디버깅하는 경우 디버깅 프로세스 중에 두 가지 현상이 나타납니다.
1. 중단점을 설정하고 중단하더라도 F9를 눌러 성공적으로 실행할 수 있습니다.
기뻐하지 마세요. 이는 쉘이 Anti를 시작하지 않았기 때문입니다.
2. 쉘이 Anti를 시작하면 브레이크포인트가 깨졌으나 더 이상 정상적으로 실행할 수 없는 경우
"내부 오류"와 같은 메시지가 나타날 수 있습니다.
3 . 메모리 검사가 감지되면 바로 충돌이 발생할 수 있습니다.
- 관련 기사
- PLU's ALONG이 스스로를 China Top ZERG라고 부르는 이유는 무엇인가요?
- 장신위는 결혼 후 잘생긴 남자와 달달한 키스신을 촬영했는데, 남편 허지에가 질투한 게 아니었나요?
- 항일영웅을 어떻게 평가할 것인가? 볼만한 가치가 있나요?
- Chuck and the Birds의 Say Yes 가사를 발음과 함께 찾아보세요
- 한지아의 주요 경험
- 화상회의 시스템의 기능은 무엇인가요?
- 수창은 성형수술 의혹을 받고 있다. 수년간 인기를 얻지 못한 이유는 나쁜 얼굴 때문일까.
- 사랑하는 여러분, 슈퍼스타의 재탄생과 비슷한 연예계 여주인공에 대한 고전소설을 찾고 있습니다.
- 베이징에서 새 자동차 보험료는 얼마인가요?
- 내가 그토록 사랑하는 여자가 더 이상 처녀가 아니라면 어떻게 해야 하나요?