VirtualBox
원본 수정
src/VBox/VMM/VMMAll/IOMAllMMIONew.cpp 주석은 다음과 같은 코드를 삭제합니다
#ifdef VBOX_STRICT
if (pRange->fFlags & IOMMMIO_FLAGS_DBGSTOP_ON_COMPLICATED_WRITE)
{
# ifdef IN_RING3
LogRel(("IOM: Complicated write %#x byte at %RGp to %s, initiating debugger intervention
", cbValue, GCPhys,
R3STRING(pRange->pszDesc)));
rc = DBGFR3EventSrc(pVM, DBGFEVENT_DEV_STOP, RT_SRC_POS,
"Complicated write %#x byte at %RGp to %s
", cbValue, GCPhys, R3STRING(pRange->pszDesc));
if (rc == VERR_DBGF_NOT_ATTACHED)
rc = VINF_SUCCESS;
# else
return VINF_IOM_R3_MMIO_WRITE;
# endif
}
#endif
include/iprt/assert.h 주석 RTBREAKPOINT에서 assert를 삭제하면 알 수 없는 다운이 발생할 수 있으므로 원본 파일의 assert 호출을 직접 삭제하는 것이 좋습니다
#define RTAssertDebugBreak() do { RT_BREAKPOINT(); } while (0)
Config.kmk gcov 오픈, afl 말뚝 오픈
VBOX_GCC_SANITIZER_FLAGS:= \
-fprofile-arcs -ftest-coverage
src/VBox/Devices/Makefile.kmk, device 부분에만 말뚝 꽂기
VBoxDD_CFLAGS.debug+=-use-afl
VBoxDD_CXXFLAGS.debug+=-use-afl
VBoxDD_LDFLAGS.debug+=-use-afl
include/iprt/mangling.h 다음 코드 삭제
:bad
s/^\(.*\)$/error: Missing # define \1 /
:bad-pad
/^.\{0,70\}$/ { s/$/ /; bbad-pad; }
s/define \([^ ]*\) \([ ]*\)$/define \1 \2RT_MANGLER(\1)/
p
q 1
편역하다
./configure --disable-hardening --disable-docs source ./env.sh kmk BUILD_TYPE=debug VBOX_WITH_GCC_SANITIZER=1
설치하다.
cd out/linux.x86/release/bin/src make sudo make install cd .. sudo depmod sudo modprobe -r vboxdrv sudo modprobe vboxdrv
실행
sudo ASAN_OPTIONS='detect_leaks=0' ./VirtualBox
추출 덮어쓰기
IDA loadfile
sudo/home/hades/tools/DynamoRIO-Linux-8.0.0-1/bin64/drrun -t drcov -- ../VirtualBox
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.