Study (4) 썸네일형 리스트형 orw 실습 실습 OS) Ubuntu 22.04실습 Architecture) Intel x86-64source code) https://github.com/praivesi/dreamhack/tree/main/shellcode Dreamhack 강의 중 Assembly code 를 skeleton 코드에 삽입하여 실행해보는 예제를 실습했다.이 실습의 목적은 어셈블리 코드의 수행 과정을 pwndbg 로 따라가면서 레지스트리와 메모리가 어떻게 바뀌는지 확인해보는 과정이었다. 어셈블리 코드 중간에 syscall 을 호출하는 과정이 있는데,이 함수에 파라미터를 전달하려면 registry 의 RAX, RSI, RDX 값 등을 바꿔주어야 한다.마찬가지로 함수의 리턴 결과를 받을 때에도 이러한 registry 필드에 씌여진 값을 .. Person Detection + 아두이노 자동차 키트 (f. RoboPet) #01. TinyML 스터디11주에 걸쳐 참여했던 "모두의 연구소 - 내 TinyML 능력이 세상을 구하는 방법" 스터디가 끝이 났다! 이 스터디를 참여하면서 10여년만에 Arduino도 써보고 Colab으로 MobileNet 모델을 분석하고 튜닝해보기도 했다. ML 입문자였던 나는 나름 ML과 친해질 수 있는 계기가 되지 않았나 싶다. 마지막 프로젝트로 진행했던 주제가 잊혀지는 게 아쉬워 간단히 정리해보고자 한다. #02. RoboPet[ 프로젝트명 ] RoboPet (애완로봇) [ 목표 ] RoboPet 은 Robotics 와 Pet 의 합성어로 집 문을 열고 들어가면 주인을 기다리고 있던 로봇이 나를 반겨준다. [ 준비물 ] 1. Arduino 자동차 키트 2. 카메라 모듈 (OV2640) 3. A.. Makefile - multiple definition of 'main' 오류 원인 [임베디드 OS 개발 프로젝트 (이만우)] 책을 따라 어셈블리 코드 -> C 언어 코드 부팅 예제를 따라하고 있었다. 분명 책에 있는 그대로 Makefile 을 작성했다고 하는데 multiple definition of 'main' 이라는 오류가 발생했다. 현재 공부중인 예제는 어셈블리 코드로 작성된 Entry.S 파일에서 BL main 이라는 명령어를 통해 main 함수로 분기를 이동한다. 이 main 파일은 Main.c 파일에 정의되어 있는 함수이고, 기본적으로 c언어에서 정의된 함수 이름은 전역으로 선언되기 때문에 Entry.S 파일에서도 main 함수의 위치가 어디인지 알 수 있다. Makefile에서는 Main.c 파일을 컴파일해서 Main.o 파일을 만들고, Entry.S 파일을 컴파일하여 E.. 어셈블리어 명령어 정리 1. LDR (Load Register): 메모리에서 데이터를 레지스터로 로드하는 명령어입니다. 예를 들어, LDR R0, [R1]은 R1 레지스터에 저장된 주소에서 데이터를 읽어서 R0 레지스터에 저장합니다. 2. B (Branch): 프로그램의 실행 흐름을 변경하는 명령어입니다. 주로 조건부 또는 무조건적인 점프를 수행하기 위해 사용됩니다. 예를 들어, B label은 주어진 레이블 위치로 실행 흐름을 점프시킵니다. >> [ B . ] 명령어는 현재 위치로 실행 흐름을 변경하는 코드로 무한루프를 발생시키고자 할 때 사용한다. 3. MRS (Move Register to System register): 시스템 레지스터(예: CPSR)의 값을 일반 레지스터로 이동시키는 명령어입니다. 이를 통해 프로그램은.. 이전 1 다음