전체 글 (4) 썸네일형 리스트형 VxLang 개발 기록 - 외전(1) 생각난 김에 기록.. 이 내용은 아마 VxLang 개발 기록(2) 전후의 내용이다. https://jiniya.net/ng/2018/11/take-responsibility/ [소고] 책임진다는 말...오래전 일이다. 먹고 살기 힘들어 인건비 따먹기 SI 사업을 하던 때였다. 당연한 얘기지만 SI 사업에는 적은 리소스를 투입하고 최고의 효과를 얻어야 하던 시절이기도 했다. 그래야 시간이 생기jiniya.net이 이야기의 시작은 위 링크의 글일 것이다. 난 이전 프로젝트에 투입되기 직전 여러 회사로부터 오퍼를 받은 상태였다. 연봉도 30프로 이상 차이나는. 이때 이직을 선택하지 않은 이유는 두 가지였다.1. 당시 CTD님과의 약속2. 내가 담당하던 솔루션.난 이 회사 입사 과정이 조금 기괴했다. 면접에서 .. VxLang 개발 기록(3) 새로운 기능이 생각났다. 기존 난독화와 가상화를 섞는 방법이다. 일단...엄밀히 말하면 이 것은 개인 프로젝트로, 비공개 상태였으며 프로젝트가 터지기 전부터 개발한 내용이다.내가 개인적으로 PoC 하던 패커는 크게 2가지 방법이었다. 하나는 DLL 모듈을 EXE와 통합하는 방법이며, 다른 하나는 이전과 동일하지만 쉘 코드에서 모든 코어 기능을 수행하는 방법이다.일단 DLL을 병합하는 패커는 개발이 정말 편했다. 그냥 DLL을 작성하면, 패커 코어에서 이를 분해하여 EXE 위에 DLL을 덮는 방법이었다. 시스템 적인 문제(TLS/Exception/Etc.)가 한 번에 해결된 것이다. 다만 조금 문제가 있었다. 나는 개발하는 중간중간 특정 리버싱 사이트들에 간단한 게임(Crack-me)을 vxlang/vxi.. VxLang 개발 기록(2) 글을 쓰고 정리한다는 게 쉽지 않다. 기억을 되살려서 좀 재미나게 써보려 하는데..내가 설계하고 개발하기 시작 한 패커는 그 당시 알려진 방식과 다르게 유지/보수가 편하도록 개발하였다. 쉘-코드 개발에서 어려운 점은 외부 코드 또는 데이터를 참조하지 않는 퓨어한 코드 덩어리여야 한다는 점이다. 당시 내가 리서치 한 방법은 어셈블리 언어를 통해 직접 바이트 코드를 추출하거나, IL을 통해 퓨어한 코드 덩어리가 추출되는 등의 방식이었다. 어떤 제품은 모듈 하나를 통으로 결합하는 방식도 사용되었다.위와 같은 방식들은 나름 대중(?)적인 방법이지만 모두 유지/보수 문제 생겼다. 내가 저 방법을 사용했더라면, 제대로 된 리버서가 아닌 이상 일반 개발자들은 코드조차 보지 못하였을 것이다. 결국 내가 선택한 방법은 .. 이전 1 2 다음