전체 글
Device driver does not install on any devices, use primitive driver if this is intended
깃허브등에서 드라이버를 빌드해야하는 프로젝트를 가져와 빌드할때 가끔 이런 문제가 발생하는데 해당 드라이버 파일의 .inf 파일을 열고 [Manufacturer] 섹션에 있는 데이터들을 날려주면 깔끔하게 빌드가 된다. https://stackoverflow.com/questions/64197518/device-driver-does-not-install-on-any-devices-use-primitive-driver-if-this-is-i
[스크랩] C, C++에서 함수 인자로 동적할당 할 포인터 변수 활용
https://igotit.tistory.com/entry/C-함수-인자로-포인터-전달하고-함수내에서-동적-메모리-할당-받기-2가지-방식 C++. 함수 인자로 포인터 전달하고 함수내에서 동적 메모리 할당 받기 2가지 방식. ** *& 문제 정의. 통상적인 동적 메모리 할당은 아래와 같다. CMyClass * p_myclass = new CMyClass(); 그런데, 위와 달리 포인터변수 선언만 하고, 동적할당은 별도의 함수에서 하고 싶다고 하자. 즉, 아래 코드 igotit.tistory.com cpp 개발중에, 동적할당시에 크기를 정하여 선언 후 사용하는 변수가 있는데 함수화 과정중에 해당 변수를 함수 바깥에서도 사용해야 할 경우가 생겼다. 기존에 함수내에서 변수 선언과 동적할당을 동시에 했다면 바꾼 ..
[Windows kernel] Service hiding - InLoadOrderLinks
커널 드라이버 숨기기 서명이 되어있지 않은 or 만료된 드라이버의 경우 대부분의 보안 도구에서 차단함. 취약 드라이버의 경우는 서명이 만료됨 임의로 제작한 드라이버의 경우는 서명이 되어있지 않음. 따라서, 임의로 제작하였거나 취약한 드라이버를 보안도구에서 차단하여 공격을 방어하는것이 목적임. 이러한 보호기법을 우회하기 위해 생성한 서비스와 로드한 드라이버를 숨기는 행위가 필요함. 드라이버와 관련된 정보를 담고있는 객체들을 각각 조작하는 DKOM 을 진행하는 방식으로 커널에 로드된 모듈을 숨긴다. 모듈에 대한 정보는 유저와 커널 모두에서 각각 조회가 가능하므로, 둘 모두에서 알 수 없게 해야한다. 로드된 드라이버가 자기 자신의 정보를 숨기는 식으로 동작하고 , 유저모드에서는 단순히 드라이버를 로드하는 기능..
[Hooking] 8. D3D Hooking : dx9, dx11 후킹 실습
DirectX 후킹 방식과 과정에 대해 다시 정리해보면, EndScene 함수 후킹 한번의 랜더링이 끝날 때 마다 EndScene 함수가 호출됨 해당 함수를 후킹하면 매 렌더 프레임마다 원하는 동작 수행 가능 주로 이를 통해 화면 위에 그림을 그릴 수 있음. 따라서 EndScene 함수의 주소가 필요함. VTable 시작주소 탐색 EndScene 함수는 D3d9.dll의 VTable 공간에 담겨있음. CreateDevice 함수 어셈블리 코드 패턴 탐색을 진행하여 VTable 시작주소를 얻어올 수 있음. VTable 찾아 인덱스 번호 참조하여 EndScene 함수 시작주소 가져올 수 있음. Detour 후킹 원본함수의 실행코드 시작부분을 패치하여 코드 흐름을 바꾸는 Inline 후킹의 한 종류 원본함수의..
[python] 특정 디렉토리 내의 파일 수정시각과 현재시각 비교하기
일단 파일의 수정시간은 os.path.getmtime() 으로 받아올 수 있는데, 이 결과값은 time 객체로 반환된다. 일반적으로 시간 비교에는 datetime 을 사용하므로, time 객체를 변환해줘야 함. path_dir = os.getcwd()+path print(datetime.datetime.now()) for s in os.listdir(path_dir) : print(datetime.datetime.fromtimestamp(os.path.getmtime(path_dir+s))) os.listdir() 함수로 특정 경로 내의 모든 파일목록을 받아옴 각 파일에 대해 os.path.getmtime() 함수를 실행하여 수정시각을 받아옴 그 다음, datetime.fromtimestamp() 를 사..
[Jquery] Barchart 가로-세로 변환
var myBarChart3 = new Chart(ctx3, { **type**: 'bar', // type : 'horizontalBar', data: { labels: StasticsJSON.CustomQueryStat.TypeName.slice(0,5), datasets: [{ label: "Count", backgroundColor: "#4e73df", hoverBackgroundColor: "#2e59d9", borderColor: "#4e73df", data: StasticsJSON.CustomQueryStat.TypeCount.slice(0,5), }], }, options: { maintainAspectRatio: false, layout: { padding: { left: 10, righ..
[Jquery] 특정 클래스 요소 전부 가져와서 .each 문에서 데이터 뽑아내기
function MakeSelectItemList(){ var ret = [] $('.StatItemSelect').each(function(index,item){ ret.push($(this).find('.card-body').text()) }); return ret; }; html 내에서 ".StatItemSelect" 클래스를 가진 모든 요소를 가져오게되면 제이쿼리 객체 자료형을 가지기 때문에 forEach 등을 사용할 수 없다. . .each 함수를 이용하면 배열에서 각 항목을 가져오는 것 처럼 반복문 내에서 항목들을 분리할 수 있는데, 이때 item 변수를 사용하면 html 태그가 나오기 때문에 제이쿼리 객체로 사용이 불가능하다. $(this) 키워드를 사용하면 제이쿼리 객체로 가져오기 때문에 ..
[python] 문자열로 된 숫자 리스트 합계 내기
리스트에 문자열 형식의 숫자가 불가피하게 들어갈 때가 있다. 이 불가피한 경우에 또 불가피하게 그 문자들을 숫자로 바꿔서 합계를 내야 될 매우매우 불가피한 상황이 있을 수 있다. a = ['1','2','3'] print(sum(map(int, a))) # 6
[flask] Jquery 이용한 Post 전송시 return 으로 페이지 받기 (render_template,redirect 등)
가끔 jquery를 이용해 post 데이터를 전달 할 때 , flask 서버에서 페이지를 반환해줘야 하는 경우가 있다. $.ajax나 $.post등을 이용하는 경우에 페이지가 자동으로 전환되지 않음 따라서 success 조건에서 별도로 페이지를 새로고침 하거나 다른곳으로 연결해줘야함 이 경우 flask의 반환값이 필요한 경우에는 해당 반환을 무시하는 경우가 왕왕 생긴다. ex : flash 메시지 반환이 필요한 경우 flask에서 반환해준 flash 메시지는 세션에 저장되어 사용됨. 클라이언트 사이드의 자바스크립트는 세션에 접근할 수 없기 때문에 해당 값을 알 수 없음 따라서 페이지 자체를 새로 랜더하면서 세션에 접근하여 flash 메시지를 받아와야함. 그래서 보통 이런경우는 반환 메시지를 따로 보내고,..
[python] Class가 담긴 list 를 Class 안의 특정 멤버변수 기준으로 정렬하기
class CustomQueryStatClass: def __init__(self,QueryName,QueryCount): self.QueryName = QueryName self.QueryCount = QueryCount def __lt__(self,other): return self.QueryCount < other.QueryCount ~~~~ CustomQueryStatList = sorted(CustomQueryStatList) def __lt__(self,other) lt 함수가 선언되어있으면 sorted() 와 같이 값을 비교하는 함수를 실행할때 선언되어있는 내용대로 비교를 진행한다. 참고문서 https://wangin9.tistory.com/entry/python-list-of-class-s..