코딩
-
IDA 사용법 및 문법해킹/리버싱 이론 2024. 10. 7. 09:34
Dreamhack의 Exercise : Helloworld 강의를 정리함.IDA 실행 후 exe 파일 드래그 -> 바로 ok정적분석main함수를 찾기 위해 문자열 검색 (shift+F12) ->더블 클릭하여 따라감참조하는 함수 찾기 : 스트링 클릭 후 우클릭 -> List cross reference to... -> 해당 변수를 참조하는 모든 주소가 출력 됨.main함수를 찾았으면 디컴파일 F5*_acrt_iob_func 함수 : 스트림을 가져옴 , 인자로 1이 들어갈 경우 stdout, 0이면 stdin숫자를 문자로 변환 -> 숫자에 커서올리고 r a dup(b) -> b 가 a번 반복됨data 주소에서 (Shift+E) -> hex string으로 export 가능 -> python의 bytes.f..
-
03 - x86 Assembly해킹/리버싱 이론 2024. 10. 6. 22:12
명령어데이터 이동(Data Transfer)movmov dst, srcsrc에 들어있는 값을 dst에 대입lealea dst, srcsrc의 유효 주소(Effective Address, EA)를 dst에 저장산술 연산(Arithmetic)incinc opop의 값을 1 증가시킴decdec opop의 값을 1 감소 시킴addadd dst, srcdst에 src의 값을 더함subsub dst, srcdst에서 src의 값을 뺌논리 연산(Logical)andand dst, srcdst와 src의 비트가 모두 1이면 1, 아니면 0oror dst, srcdst와 src의 비트 중 하나라도 1이면 1, 아니면 0xorxor dst, srcdst와 src의 비트가 서로 다르면 1, 같으면 0notnot opop의 ..
-
02 - 컴퓨터 구조 / Window memory layout해킹/리버싱 이론 2024. 10. 6. 21:06
컴퓨터 구조컴퓨터 구조 구성기능 구조의 설계폰 노이만 구조하버드 구조수정된 하버드 구조명령어 집합구조(Isntruction Set Architecture) - CPU의 명령어 설계, CPU가 해석하는 명령어의 집합x86, x86-64ARMMIPSAVR마이크로 아키텍처 - CPU의 하드웨어적 설계캐시 설계파이프라이닝슈퍼 스칼라분기 예측비순차적 명령어 처리하드웨어 및 컴퓨팅 방법론직접 메모리 접근폰 노이만 구조 중앙처리장치 (CPU): 컴퓨터의 두뇌로, 프로그램의 연산과 시스템 제어를 담당합니다. 주요 구성 요소는 산술논리장치(ALU), 제어장치(Control Unit), 그리고 레지스터(Register)입니다.기억장치: 데이터를 저장하는 장치로, 주기억장치(RAM)는 프로그램 실행 중 필요한 데이터를 임시..
-
01 - 리버싱해킹/리버싱 이론 2024. 10. 6. 18:34
리버싱(Reversing) - 만들어진 프로그램을 역으로 해체하여 코드 단에서 분석BinaryCompiler : 고급언어를 목적 코드(Object Code)로 번역하는 프로그램 - GCC, Clang, MSCVCompile : 소스코드를 목적 코드(Object Code) 형식으로 번역하는 동작Assembler : Assembly Language를 기계어로 번역하는 프로그램Binary : 프로그램과 동의어 (Stored-Program Computer에서 프로그램이 저장장치에 이진 형태로 저장되기 때문)Interpreting : 사용자의 입력, 스크립트를 바로바로 번역하여 CPU에 전달하는 동작 - Python, JavascriptInterpreter : 인터프리팅을 하는 프로그램 더보기컴파일장점:1. 속도..
-
Week02 리액트/Next.js 기초 3.5 React Hooks (2) - 메모이제이션 훅카테고리 없음 2023. 12. 31. 18:37
3.5.1 useCallback과 useMemo - 메모이제이션 훅 메모이제이션이란? 어떤 함수의 계산 결과를 저장하고, 같은 호출이 발생하면 새 연산을 하지 않고 저장한 값을 반환해 재사용하는 최적화 방법이다. React에서 메모이제이션이 필요한 이유는 같은 값을 재사용함에도 화면을 다시 그리는 경우 일 것이다. React에서 화면을 그리는 경우는 다음과 같다. Props나 내부 상태가 업데이트 됐을 때 컴포넌트가 참조하는 Context 값이 업데이트 됐을 때 부모 컴포넌트가 다시 그려졌을 때 Props, 내부상태, Context의 변화에 따른 컴포넌트의 재렌더링은 당연하지만, 내부 값의 변화가 없는데 부모가 다시 그려질때의 리렌더링은 불필요하다. 이를 메모이제이션 훅을 사용해 방지할 수 있다. 우선,..
-
Week02 리액트/Next.js 기초 3.5 React Hooks (1) - 상태 훅웹개발/React 2023. 12. 31. 16:39
React Hooks는 훅(Hook)을 통해 함수 컴포넌트 안의 상태나 라이프 사이클을 다루기 위한 기능이다. 잘 와닿지 않는데 HTML과 Vanila JS를 사용 할 줄 안다는 가정하에 훅이 무슨 역할인지 이해해보자. 유저가 input을 입력하고 submit버튼을 누르면 유저의 입력값이 나타나는 코드를 작성한다고 가정해보자. Java script 파일에 작성해야 할 점을 생각해본다면 3가지로 추릴 수 있다. 1. submit버튼 클릭시 input에 들어와 있는 값을 가져와야한다. 2. submit버튼에 클릭 시 어떤 행동을 하라는 (이 경우에는 input값을 가져와 입력값을 출력하는) 이벤트 리스너를 달아야 한다. 3. input값에 들어가 있던 값을 어느 엘리먼트에서 프린트 할 것인지 가져와야 한다...
-
Week01 리액트/Next.js 기초 3.1-3.4웹개발/React 2023. 12. 31. 16:26
3.1 리액트 입문 터미널에서 아래의 코드를 실행해 타입스크립트를 사용하는 최신 리액트 기본 앱을 만들 수 있다. $ npx create-react-app@latest react-sample --template typescript npx가 없다면 npm을 이용해 설치해 주고 npm이 없다면 node js를 설치해줘야 한다. $ cd react-sample $ npm run start 만들어진 react-sample 프로젝트로 작업 디렉토리 변경 후 서버를 실행해 준다. 서버가 실행될 때 동작하는 코드에 대해 자세히 알아보자. 사전지식) tsx, jsx는 return 값으로 html의 element를 준다. 그리고 return element를 export한다. const Hello = () => { ret..
-
React study 시작웹개발/React 2023. 12. 31. 15:45
Vue2.0->3.0에서 바뀌는 점이 많아지면서 기존의 vue 2.0으로 개발해 왔던 프로젝트를 React로 뒤엎기로 결정했다. react로 알음알음 찾아가며 바꿔가고 있지만, 기본적인 개념에 대해 더 확실히 짚고넘어가자는 의미로 파트내에서 스터디를 만들어 진행하기로 했다. 진행하면서 배운점들을 정리할 예정이다. 교재 : 타입스크립트, 리액트, Next.js로 배우는 실전 웹 애플리케이션 개발 강의 : Udemy - React 완벽 가이드 with Redux, Next.js, TypeScript