들어가기 전에 미리 이야기하지만, 리눅스에 대해서는 이미 수많은 문서가 있으므로 이 시리즈에서는 윈도에 대해서만 다룬다. 유저 레벨 프로그래밍은 당연하게도 윈도에 대한 문서가 더 많다. 그러나 특이하게도 저수준 프로그래밍으로 들어가면 윈도 방면 문서는 거의 존재가 사라지는 수준이다. 리눅스 관련해서는 굳이 이미 있는 글들과 별 차이가 없을 글을 올릴 가치가 느껴지지 않기 때문에 생략한다. 프로그래밍을 하다 보면 […]
Author Archives: 이방인 ebangin127
나래온 NVMe 툴 소개
나래온 NVMe 툴은 윈도에서 NVMe 명령어 체계를 사용한 제품들의 SMART 정보를 읽어와서 확인할 수 있는 프로그램입니다. 다운로드: https://www.naraeon.net/latest-nvme-tools/ 기본 탭에서는 모델과 펌웨어 시리얼, 현재 속도 등 간단하게 확인할 때 필요한 것들만 모아두었습니다. 드라이버 탭에서는 드라이버가 정상적으로 설치되었는지 확인하기 위한 내용들이 준비되어 있습니다. 장치 관리자에서 복잡하게 들어가지 않고도 간단하게 날짜/버전/제공자 등 모든 내용을 확인할 수 있습니다. 치명적 […]
Intel 750 시리즈의 NVMe 명령어들
이번에는 Intel 750 시리즈의 NVM Express Admin Command 명령어들에 대해서 알아보자. Passthrough 지난번 글에서 한 달이 지난 2015년 12월에도 공식적으로 윈도에 구현된 NVMe Passthrough 커맨드는 없다. 따라서 Intel 750 시리즈의 경우는 Admin Command Passthrough를 nvmewin에서 지원하는 방식과 비슷한 방식으로 구현한다. nvmewin에서 사용하는 방식에 대해서는 이 문서를 참고하면 좋다. 위의 글에 따르면 \\.\scsi 주소가 필요하다. 그러므로 우리가 […]
PCI Express 배속 / 스펙 버전 확인하기
오늘도 많은 사람들이 프로그램을 통해 PCI Express 배속 / 스펙 버전을 확인하고자 인터넷을 헤맬 것이다. 글들을 보면 전혀 도움이 되지 않는 네트워크 어댑터 스펙 확인법을 올리는 사람도 있고(“-NetworkAdapter”를 적용하자 검색 결과가 10%로 줄었다) 드라이버가 필수라는 사람도 있으며, 그냥 리눅스로 확인(?)하라는 사람도 있다. 다음은 각 방법을 통한 해결책에 대해서 이야기하고자 한다. 아래 결과에 대해서는 각각 글을 […]
Samsung 950 Pro의 NVMe 명령어들
NVMe에 대해서는 그동안 이론적으로 설명된 수많은 글을 보았을 것이다. 여기서는 그런 글들을 동어반복할 생각은 없다. 다 제끼고 Samsung 950 Pro에 구현된 NVM Express Admin Command 몇 가지에 대해서 간단히 살펴보자. 0. 분석 방법 분석 방법은 Perisoft Bus Hound 공개 버전으로 어떤 명령어가 어느 계층에서 쓰이는지 감을 잡은 후, 인터넷에 있는 버스 필터 드라이버 예제 등을 […]
VirtualBox로 KmdfHelloWorld 진행하기
Kmdf를 오늘 처음 도전해보았다. KmdfHelloWorld 찍는데만 꼬박 하루가 걸렸다. 아래는 그 삽질기이다. WDK는 8.1을 추천한다. 8.1을 사용하면 비스타 ~ 8.1까지 지원하는 드라이버를 제작할 수 있다. VirtualBox는 호스트와 연결하려면 무조건 VirtualKD가 필요하다. 그러나 VirtualKD는 VirtualBox 4.1.24에서만 안정적으로 동작하니 위의 링크에서 4.1.24를 받는 것이 좋다. 5.x.x로는 15년 9월 시점에서 어떤 방법으로도 동작하지 않는다. 코어는 한 개만 잡아야 […]
델파이의 인터페이스, 알고 쓰자
최근 객체지향 프로그래밍 언어라면 누구나 갖고 있는 인터페이스, 델파이에도 있다. 하지만 다른 언어처럼 ‘이렇게 쓰면 되겠지!’ 하다간 문제가 생길 수도 있다. 잘 모르고 쓰면 위험하지만 잘 쓰면 많은 도움이 되는 델파이의 인터페이스. 이번 글에서 제대로 알아보자. 레퍼런스 카운트가 뭐길래 델파이의 인터페이스는 평범한 인터페이스가 아니라, 레퍼런스 카운트 인터페이스이다. 직접적으로 차이나는 부분은 레퍼런스 카운팅이 된다는 사실이다. 레퍼런스 […]
[델파이와 시큐어 코딩] 안전한 디렉토리 제거 방법
델파이와 시큐어 코딩에서 이어지는 글입니다. 지난번에 살펴본 소스에는 StrPCpy가 들어가서 문제가 있었다. 그렇다면 StrPCpy를 뺀 소스가 있을까? 당연하다. 사실 해당 부분은 없어도 되는 부분이다. 다음은 해당 소스이다. 함수를 쪼갠 이유는 수정시 편의를 위해서이니 만약 불편하다면 합쳐서 써도 상관없다. [snippet slug=delphi-directory-secure-removal lang=pascal]
델파이와 시큐어 코딩
C로는 시큐어 코딩 관련한 이야기들이 수도 없이 쌓여있지만, 델파이로는 많이 없다. 데브기어에 올라온 문의는 무시당한 것으로 보인다. 델파이는 과연 보안 관련한 문제가 없는가? 하면 그렇지 않다. 사실 당연한 게 자바 시큐어 코딩 가이드도 나오는 세상에, 네이티브 언어가 안전하리라고 생각하는 게 너무 순진한 생각 아닌가. 이 슬라이드를 보면 알겠지만 델파이는 명시적 외곽 체크도 없고(배열 등을 [0..X]로 […]
델파이에서 상속받은 형을 인자로 객체 생성할 땐 제너릭 대신 메타클래스로
만약에 어떤 형이 있고 상속받은 형이 있을 때, 상속받은 형을 인수로 넣어서 생성하려 한다면 처음 생각나는 건 제너릭일 것이다. 대략 식으로 선언을 하게 되면 T.Create를 부를 수가 있다. 그런데 여기에는 문제가 있는게, T.Create가 기본형이면 몰라도 T.Create에 어떤 인수가 들어가면 문제가 생긴다는 점이다. 그럴 때는 메타클래스를 쓰면 좋다. 메타클래스의 기본적인 사항에 대해서는 이 링크를 참고하자. 예를 […]