전체 글 33

pyside6에서 윈도우 핫키 컨트롤 사용하기(공용 컨트롤)

pyside6에서 기본으로 제공해주는 QKeySequenceEdit에서 제공하지 않는 기능을 사용하거나 이전에 사용했던 사용자 경험때문에 컨트롤이 필요해서 작성하게 됐음 대부분의 환경에서는 QKeySequenceEdit와 같은 qt가 제공해주는 기능들을 사용하도록 하자 다음은 핵심 기능들임 공용 컨트롤 사용을 위한 초기화 (InitCommonControlsEx) 핫키 컨트롤 생성 (CreateWindowExW) 핸들을 이용해서 qt 위젯과 연결 (createWindowContainer) 핫키 컨트롤과 통신 (SendMessage) HTML 삽입 미리보기할 수 없는 소스 핫키 컨트롤을 사용한 모습임 QKeySequenceEdit와 같이 키조합을 입력받을 수 있음 QKeySequenceEdit는 여러개의 키..

python SetWindowDisplayAffinity

https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setwindowdisplayaffinity SetWindowDisplayAffinity function (winuser.h) - Win32 apps Stores the display affinity setting in kernel mode on the hWnd associated with the window. docs.microsoft.com 창 표시 선호도를 설정하는 함수 스크린샷이나 영상캡쳐를 방지할 때 쓰일 수 있음 창 콘텐츠를 엄격하게 보호 한다는 보장이 없다는 점에 유의 HTML 삽입 미리보기할 수 없는 소스 함수를 호출하자마자 영상에서 까만화면으로 전환되는 모습 실제 ..

HamsterHide dll v0.1.0

SSDT 후킹을 지원하는 드라이버 프로그램 스텔스를 위한 dll임 dll 내부에 커널 드라이버와 일부 유틸이 포함되어 있음 dll을 사용해서 드라이버를 설치, 제거 할 수 있음 dll에서 내보낸 함수를 사용해서 원하는 프로세스를 숨길 수 있음 지원하는 기능은 프로세스 (NtQuerySystemInformation) 핸들 테이블에서 핸들 필터링 (NtQuerySystemInformation) 프로세스 오픈 방지 (NtOpenProcess) 다운로드는 여기서 데모 GUI 프로그램 : https://www.dropbox.com/s/utixqy05bh9il1o/HamsterHide.zip?dl=0 HamsterHide.zip Dropbox를 통해 공유함 www.dropbox.com 빌드된 DLL : https:..

디버그 필터

DbgPrint를 이용해 작성된 디버그 메시지나 의도적으로 필터 레벨을 설정해서 디버그 메시지를 안보이게 하는 경우가 있음 필터를 바꾸는 방법은 다음을 참고 https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/reading-and-filtering-debugging-messages Reading and Filtering Debugging Messages - Windows drivers Reading and Filtering Debugging Messages docs.microsoft.com windbg에서 DbgPrint함수의 출력을 보기 위해서 마스크를 변경해야한다면 다음과 같이 입력 ed nt!Kd_Default_Mask 8 또는 e..

PsSetCreateProcessNotifyRoutineEx 실패

PsSetCreateProcessNotifyRoutineEx를 사용해서 콜백을 설치하려고 했으나 실패함 에러코드 : 0xC0000022 (STATUS_ACCESS_DENIED) 원인 : msdn에는 다음과 같이 나와있음STATUS_SUCCESS지정된 루틴이 이제 운영 체제에 등록됩니다. 운영 체제는 새 프로세스가 생성될 때마다 이 루틴을 호출합니다.STATUS_INVALID_PARAMETER지정된 루틴이 이미 등록되었거나 운영 체제가 프로세스 생성 콜백 루틴 등록 제한에 도달했습니다.STATUS_ACCESS_DENIED콜백 루틴 포인터가 포함된 이미지의 이미지 헤더에 IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY가 설정되어 있지 않습니다.이미지 헤더에 IMAGE_DLLCHARA..

win32u.dll는 뭐임?

윈도우에서 OpenProcess와 같은 winapi를 호출한 뒤 계속해서 타고 들어가면 ntdll.dll 내부에 있는 Nt...로 시작하는 함수를 호출하게 됩니다 Nt함수 내부에선 syscall을 통해서 커널모드로 진입하게 됩니다 ntdll은 시스템 서비스 루틴에 대한 스텁으로 볼 수 있습니다 그 외 지원 함수들도 있지만 이 글에서 언급하진 않습니다 ntdll가 네이티브 시스템을 위한 dll이라면 서브시스템을 위한 스텁을 가진 dll도 존재합니다 DC와 윈도우와 관련된 작업을 하게되면 검증이나 변환 과정을 거친 뒤에 win32u.dll에 있는 NtUser...함수로 이동하게 되고 syscall을 통해서 커널모드로 진입하게 됩니다 다음은 인자를 받지않는 GetForegroundWindow함수의 내용입니다 ..

ssdt index 뷰어

QT 공부하면서 만들어봤습니다 다운로드 링크 : https://github.com/boa9448/qt_study/releases/tag/ssdt_index_view_v0.1.0-demo Release ssdt index view · boa9448/qt_study github.com view_ssdt_index.exe 실행하면 다음과 같은 창이 나타납니다 에디트 컨트롤에 문자열을 입력하면 검색된 결과를 보여줍니다 ssdt index를 구하는 방법은 다음 게시글을 참고합니다 https://boa9448.tistory.com/15 ntdll.dll에서 SSDT Index 가져오기 드라이버에서 SSDT를 후킹하기 전에 후킹하고자 하는 함수의 인덱스를 알아야합니다 windows api는 호출이되면 함수 내부에서 ..

ntdll.dll에서 SSDT Index 가져오기

드라이버에서 SSDT를 후킹하기 전에 후킹하고자 하는 함수의 인덱스를 알아야합니다 windows api는 호출이되면 함수 내부에서 일부 검증과 변환 같은 처리를 한 뒤에 ntdll에 있는 Nt로 시작하는 함수들을 호출합니다 Nt함수들은 다음 사진과 같이 SSDT 인덱스를 eax레지스터에 넣고 syscall을 호출합니다 syscall을 하기전에 mov eax, 00000055 와 같이 SSDT 인덱스를 넣는 모습을 볼 수 있습니다 이번 글에서는 Nt함수의 시작부분에서 가까운 위치의 mov명령어를 찾고 그 뒤에 있는 SSDT 인덱스를 가져오는 방법에 대해서 알아봅니다 실습은 exe프로그램에서 진행하고 추후에 드라이버로 이식합니다 64비트에서 실습을 진행합니다(제가 64비트 쓸거라서ㅋㅋㅋ) ntdll.dll은..

c++ qt에 material 테마 적용하기

이번 글에서는 다른 사람이 작성한 테마를 위젯 기반 프로젝트에 적용하는 방법을 알아봅니다 전체 순서는 다음과 같습니다 프로젝트 생성 테마 파일 준비 빌드 시스템에 추가 ui 작성 테마 적용 코드 작성 컴파일 후 실행 프로젝트 생성 QT Creator를 사용해서 프로젝트를 생성합니다 프로젝트는 위젯기반으로 생성합니다 빌드 시스템은 cmake로 설정한 뒤 넘어갑니다 성공적으로 생성한 뒤 잠시 기다리면 다음과 같은 모습을 볼 수 있습니다 ui를 미리 포함하지 않았다면 다소 다를 수 있습니다 테마파일 준비 준비한 테마를 프로젝트 폴더로 붙여넣기 합니다 (테마 파일은 첨부 파일을 참고합니다) 빌드시스템에 추가 빌드 시스템에 사용할 테마의 qrc파일을 등록합니다 앞에서 준비한 테마 폴더 내부에 resources.q..

HamsterHide 사용법 - 상세 설정

사용법 HamsterHide를 관리자 권한으로 실행합니다 파일 -> 상세모드를 클릭해서 상세모드 패널로 전환합니다 상세모드 패널을 볼 수 있습니다 상단의 드라이버 그룹에서 드라이버를 설치, 제거와 상태를 확인할 수 있습니다 HamsterHide는 드라이버를 이용해서 프로세스를 차단, 보호합니다 먼저 드라이버를 설치합니다 ▶ : 드라이버가 중지 상태라면 실행상태로 만들 수 있습니다 실행중이라면 정지시킬 수 있습니다 설치 : 드라이버를 설치할 수 있는 버튼입니다 프로세스를 차단, 보호하기 위해서는 설치해야합니다 제거 : 설치된 드라이버를 제거할 수 있습니다 성공적으로 설치되면 드라이버 그룹의 상태버튼이 ■로 변합니다 설치 버튼이 비활성화 됩니다 제거 버튼이 활성화 됩니다 안티 디버깅 기법을 무력화 시킬 프로..