C언어 Inline Assembler 가지고 놀기 포스팅 썸네일 이미지

etc/Tips

C언어 Inline Assembler 가지고 놀기

나는 특별한 technique를 공부하는게 아닌 이상 그냥 큰 흐름만 이해하고 가는 편이다 그런데 역공학 수업을 들으면서 정말 한줄한줄 레지스터의 변화를 좀 파악해야 할 필요가 있어 Inline Assembler에 대한 내용을 정리한다. // gcc -masm=intel test.c -o test #include int main(){ __asm ( "mov eax, 0x12345678;" "mov ebx, 0x34000000;" ); return 0; } inline assembly를 쓰는 정말정말정말 간단한 코드다. 구글링을 하면 다 __asm {} 의 식으로 쓰던데, 컴파일러를 gcc로 해서 그런가 제대로 안된다. +) 더 찾아보니깐 Visual Studio 컴파일러만 알아보는듯. 암튼 위와 같은 형..

2023.04.19 게시됨

Ghidra-analyzeHeadless 사용하기 포스팅 썸네일 이미지

etc/Tips

Ghidra-analyzeHeadless 사용하기

0. 개요 GHIDRA는 미국 NSA(National Security Agency)에서 배포하는 리버싱 툴입니다. 무료 리버싱 툴 중에서는 IDA와 견줄 정도로 성능이 좋고 다양한 기능을 제공합니다. 오늘은 Ghidra 설치 및 CLI로 Ghidra를 사용하는 방법에 대해서 정리하도록 하겠습니다. 1. 설치 방법 Ghidra는 java 기반의 툴이라 java 설치가 필요합니다. 본 포스팅은 Ubuntu 20.04 환경에서 설치를 진행합니다. sudo apt-get install openjdk-11-jdk java --version을 했을 때 버전이 확인된다면 정상적으로 설치된 것입니다. 다음으로는 배포된 Ghidra를 설치하면 됩니다. 아래 사이트 기준 최신 릴리즈를 다운받으면 됩니다. 배포: https..

2022.06.29 게시됨

컴퓨터로 논문 읽을 때 팁 (다크모드 전환) 포스팅 썸네일 이미지

etc/Tips

컴퓨터로 논문 읽을 때 팁 (다크모드 전환)

별건 아닌데 최근에 충격적인걸 찾아서 공유합니다. 보통 논문을 읽으면 다음과 같이 pdf의 형태로 글을 읽게 됩니다. 일단 단점은 column 2개로 보는거라 보는데도 사실 불편함이 있고, 특히 밤에 읽고 있는 경우 다크모드가 적용이 안되기 때문에 불편함을 자주 느꼈습니다. 근데 최근에 엄청난 사이트를 찾아서.. 대신 모든 사이트가 아니라, arxiv.org에 등록되어있는 논문이어야 합니다. 사용 방법은 간단합니다. 예를들어 https://arxiv.org/pdf/2103.14217.pdf 라면 https://ar5iv.org/pdf/2103.14217.pdf로 바꾸는 식으로 사용하면 됩니다. 그러면 알아서 다크모드 + column 1개로 바꾸어서 보여줍니다. 단점이 있다면 arxiv.org에 등록되어있..

2022.04.15 게시됨

Python 다운받기 포스팅 썸네일 이미지

etc/Tips

Python 다운받기

Python 다운로드 받기 Python 다운로드 받는 방법입니다. Python은 Visual Studio Code같은 소스코드 편집기를 사용하더라도 필수적으로 다운로드 받아야합니다. 보시져 우선 python.org에 접속합시다 접속한 뒤, 상단 메뉴 부분의 Downloads를 클릭합니다. Downloads창을 클릭하면 자동으로 윈도우 기준 가장 최근 버전을 띄워줍니다. 그러면 그 버튼 그냥 눌러서 다운로드 받으시면 됩니다. 현재 글이 쓰여지는 기준 (2020-12-31)으로 가장 최신 버전인 3.9.1 버전으로 다운받고 있지만, 추후 업데이트 된 뒤로 다른 버전을 다운로드 받는다고 하더라도 동일하게 다운로드 받으면 설치 exe파일이 다운로드 되는데, 바로 실행시키면 다음과 같은 창이 뜰겁니다 맨 처음 실..

2020.12.31 게시됨

IDA 처음 쓰는 사람들에게 포스팅 썸네일 이미지

etc/Tips

IDA 처음 쓰는 사람들에게

IDA 처음 쓰는 사람들에게 IDA..... 천만원짜리 엄청난 프로그램이지만 제대로 사용법을 몰라서 힘들어하는 사람들이 많은 것 같습니다. 간단한 사용법을 알아보도록 합시다. 일단 IDA는 디스어셈블러의 일종으로, 디스어셈블러는 바이너리 파일을 역으로 어셈블리어로 재구성해주는 툴입니다. 이런 디스어셈블러의 종류는 많지만, 그 중 아이다가 거의 독보적으로 성능이 좋아서 다들 IDA를 많이 씁니다. 뭐 디스어셈블러는 많은데 왜 굳이 IDA를 쓰냐? IDA를 쓰는 이유는 다음과 같습니다. 1. 거의 모든 CPU 지원 2. FLIRT(Fast Library Identification and Recognition Technology)라는 기계어의 코드로부터 컴파일러 특유의 Library함수를 산출해낼 수 있는 기..

2020.08.31 게시됨

etc/Tips

Pwntools 처음 쓰는 사람들에게

후배들 주려고 작성한 문서인데 다른분들에게도 될 수 있다면 좋겠습니당 +) 2022.07.05 내용 수정 / 업데이트 하였습니다. (pause관련 추가 필요) 혹시나 잘못된 내용이 있다면 댓글 부탁드리겠습니다. Introduction to pwntools 작성자. dubini0 이 문서는 pwntools 공식문서를 참고하였습니다: https://docs.pwntools.com/en/stable/index.html pwntools란 pwntools를 처음 써본다면 여태껏 한줄 페이로드로 pwnable문제를 풀거나 소켓프로그래밍을 이용했을 것입니다. 만약 앞으로도 한줄 페이로드를 작성해서 문제들을 푼다면, 문제풀이에 분명한 한계가 발생합니다. 불편하다는 단점 또한 있구요. 물론 이를 소켓프로그래밍을 통해서 ..

2020.08.09 게시됨

etc/Tips

우분투를 처음 시작할 때 다운받을 플러그인

우분투를 처음 시작하는 당신에게 -우분투 각종 플러그인 모음- 1. ubuntu 다운로드: https://jimnong.tistory.com/673 우분투 리눅스 다운로드 방법(Desktop 버전) 컴퓨터로 우분투 리눅스(Ubuntu Linux) 공식 홈페이지에 접근하면 사용 중인 PC의 환경에 맞는 bit를(32bit/64bit) 자동으로 골라서 iso파일이 받아지게끔 조치해줍니다. 먼저 다운로드 페이지에 들어갑� jimnong.tistory.com 2. vim설치: https://byd0105.tistory.com/7 - Ubuntu에 vi(vim)에디터 설치 - Vi 에디터를 설치하기 위해서 먼저 Ubuntu가 필요하다. http://byd0105.tistory.com/6 Ubuntu가 설치 완료되..

2019.08.14 게시됨

[IDA] 03. 아이다 안에서 구조체 활용하기 포스팅 썸네일 이미지

etc/Tips

[IDA] 03. 아이다 안에서 구조체 활용하기

[IDA] 03. 아이다 안에서 구조체 활용하기 어떤 이유인지는 모르지만 IDA는 아직 구조체를 인식하지 못하는 것 같습니다. 위 코드는 ASIS CTF 의 문제 Cat의 일부입니다. 보면 27번 줄에 0x18만큼 heap에 할당을하고 밑에 차례대로 name과 kind, 그리고 age를 입력받네요. 보아하니 구조체인데, 알아보기 힘든 면이 없지않아 있네요. 다음은 Structures탭에 들어간 모습입니다. 여기서 새로운 구조체를 선언해줄 수 있는데요, 여기서 그냥 Insert키를 눌러주면 됩니다. 여기다가 입력을 해주시면 이렇게 구조체가 추가된 것을 볼 수 있는데, 이제 안에 있는 멤버들도 넣어주어야겠죠? 그건 ends를 누른 뒤에 'd' 키를 누르면 됩니다. 그러면 저런식으로 멤버들을 추가시킬 수 있는..

2019.08.10 게시됨

[IDA] 02. 함수 안으로 들어가기 포스팅 썸네일 이미지

etc/Tips

[IDA] 02. 함수 안으로 들어가기

[IDA] 02. 함수 안으로 들어가기 정말정말정말 혹시나 싶어서 쓰는 글이다. 내가 그랬기 때문ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 아이다에 파일을 넣고 실행하면 나타나는 첫 번째 창이다. 왼쪽에 Functions Window에는 각각 분석된 함수들이 리스트 되어있고, 오른쪽에는 선택한 함수의 어셈블리어의 코드가 나와있다. 처음에 나는 이게 끝인줄 알고 어셈분석을 했다ㅋㅋㅋㅋㅋ그러면서 "이게 천만원씩이나 한다고...????"하면서 욕했던게 기억이 난다ㅋㅋㅋㅋ 자, 진정하고 이 상태에서 F5버튼을 눌러보자. 짠. C언어 코드로 바뀌었죠? 이래서 천만원짜리라는 겁니다. 더이상 저처럼 삽질하는 사람이 없기를 바라며, 저는 이만. 끝.

2019.08.10 게시됨

[IDA] 01. 변수의 이름 바꾸기 포스팅 썸네일 이미지

etc/Tips

[IDA] 01. 변수의 이름 바꾸기

[IDA] 01. 변수 이름 바꾸기 너무 간단한 내용이여서 얼른 끝내죠. 다음은 ASIS CTF 4강전 문제 중 하나인 Cat을 IDA로 돌린 것입니다. 보면 c언어 파일로 작성되어있지만, 사용자 설정 변수나 함수의 이름들은 sub_나 우리가 흔히 이용하지 않는 이름들로 되어있는 걸 볼 수 있죠 네 바꾸고 싶은 변수 위에 마우스를 올려놓고 오른쪽 클릭 후, 저기 첫번째 Rename global item을 클릭하거나 N을 누르면 이 창이 뜨는데 여기서 바꿔주시면 됩니다. 참고로 이름짓는 방법은 C언어에서 변수이름지정 규칙과 같습니다(빈칸안되고, 특수문자 안되고 등등..) 끝!

2019.08.10 게시됨