개발하면서 디버깅 바로 하려 하다보니 hexdump를 자주 쓰게 되는 것 같다.. 직접 다 만든 것은 아니고, stack overflow에 paddy라는 분이 구현해 두었던 걸 함수 형태로 쓰기 쉽게 바꿔둔게 끝이다. 코드 (원본 : https://stackoverflow.com/questions/16804251/how-would-i-create-a-hex-dump-utility-in-c)123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657#include #include #include voidhexdump( __in BYTE * p, __in DWORD len){ DW..
GetLastErrorhttp://egloos.zum.com/sakula99/v/2969627 HRESULThttps://msdn.microsoft.com/en-us/library/cc231198.aspx LDAPhttps://msdn.microsoft.com/en-us/library/gg465310.aspx LSTATUShttps://msdn.microsoft.com/en-us/library/cc231199.aspx NTSTATUShttps://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/using-ntstatus-valueshttps://msdn.microsoft.com/en-us/library/cc231200.aspx
작년에 프로젝트를 하다가 Google의 ProtoBuf라는 것이 있다는 것을 알게 되었는데 이 때는 그냥 넘어가버렸다. 근데 최근 리버싱을 할 때 마다 보이는 것 같아서 이 참에 정리해보게 되었다. ProtoBuf 란? 전송하기 위한 저장하려고 하는 데이터 구조를 유연하고 효율적으로 작성하고 파싱할 수 있도록 지원하는 자동화된 솔루션이다. Json이나 XML을 생각하면 이해가 쉬워지는데, 이것들과는 조금 다르다. ProtoBuf는 데이터 구조를 .proto라는 파일로 작성하면, 이를 컴파일해서 C++/C#/Python 등의 언어 코드 형태로 변환이 가능하고, 변환된 언어 형태로 모듈까지 지원해서 데이터 구조를 전송하고 받아 읽을 수 있게 Serialize / Deserialize도 해준다. C언어로 예를..
보호되어 있는 글입니다.
개요 SQLite는 바이트코드를 사용해서 동작하는데, 이 바이트코드를 공부하는건 일반적인 프로그램 개발에 전혀 필요하지 않다. 단순히 SQLite가 어떻게 내부에서 쿼리를 처리하는지 궁금할 수 있기에 이를 공부하고자 한다. SQLite에서도 이런걸 예상하였는지 SQLite 바이트코드 엔진이 어떻게 동작하는지를 문서로 작성하였고, 이를 참고하였다. 맨 마지막 참고에 링크를 남겨두었다. 우선 SQLite의 바이트코드 엔진 구조는 다른 바이트코드 엔진을 사용하는 언어와 별로 다를게 없다. 아래의 사진이 SQLite의 전체 구조를 나타낸 그림이다. 바이트코드로 변환하는 코어 부분이 다른 바이트코드 언어와 동일하게 인터페이스로부터 받아 이를 토큰화 및 파싱을 통해 바이트코드로 생성한 다음, 해당 바이트 코드를 실..
sqlcipher github : https://github.com/sqlcipher/sqlcipher- Windows에서 말로는 빌드하기 어렵다는데, 빌드 자료를 재정리해준 사람이 많아서 별로 어렵진 않다.- 기존 sqlite3는 헤더에서 sqlite3_key를 명시만 하고, 상업 관련때문에 구현은 안 되어 있음. 따라서 sqlite를 암호화하려면 이런게 필요 사전 설치Visual Studio 2015 or 2017vcpkg (openssl build 같은 방법으로 라이브러리를 얻을 수 있으면 필요 없음) 빌드 방법(설명은 32bit binary build, 64bit는 일부 과정을 수정해서 사용)git clone https://github.com/sqlcipher/sqlcipher로 받아옴vcpkg ..
보호되어 있는 글입니다.
Installstrawberry perl 설치cmd 창에서 cpan install Win32::Registry를 입력해서 모듈 설치net-snmp install 파일로 net-snmp 설치 (default install path : C:\usr) config환경변수 등록 : 환경 변수 PATH에 C:\usr\bin 추가, 만약 별로 install path를 설정했다면 해당 경로의 bin 폴더snmpd.conf 생성installed path의 etc\snmp\snmpd.conf 파일을 생성해주어야 함ex) C:\usr\etc\snmp\snmpd.conf다음과 같은 내용이 들어가면 된다. 123456createUser [user name] MD5 [auth passphrase] DES [privcy pass..
보호되어 있는 글입니다.
환경 : Ubuntu 18.04 server 64bit 선행 설치bazel : https://docs.bazel.build/versions/master/install-ubuntu.html, JDK 8을 설치한 후에 APT repository로 설치 빌드1234$ git clone https://github.com/google/gitiles$ cd gitiles$ bazel build //:gitiles$ bazel test //...cs 사용 방법 gitiles가 설치된 디렉토리의 tools/run_dev.sh만 실행하면 된다. 실행되었을 때의 경로는 현재 디렉토리를 기준으로 하며, git을 사용할 때 마다 생기는 .git 디렉토리가 반드시 있어야 한다.gitiles로 작업할 디렉토리로 이동.git이 포..