일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 데이터베이스
- 코딩봉사
- kotlin
- 자바
- 1과목
- 정보처리산업기사
- 프로그래머스
- 스프링
- java
- 공부일지
- softeer
- CJ UNIT
- 백준알고리즘
- MYSQL
- SQL
- 알고리즘
- 파이썬
- 백준
- 소프티어
- 문제풀이
- SW봉사
- 코틀린
- 시나공
- python
- 코딩교육봉사
- BFS
- 회고
- 백준 알고리즘
- C++
- programmers
- Today
- Total
목록기타 학습 (77)
JIE0025
######## 작성자가 진행한 실습 그대로의 과정을 담았습니다. ######## 오늘의 챌린지는 비주얼베이직에서의 스트링 비교함수 이름을 찾는 것이다. 추가적으로 스트링 비교함수 내부가 어떻게 돌아가는지를 분석해보았다. -------------------------------------------------------------------------------------- 올리디버거로 실행시켜보았더니 시스템에러가 났다. The program can't start because MSVBVM50.DLL is missing from your computer. Try reinstalling the program to fix this problem MSVBVM50.DLL 이 없어서 생긴 문제인 듯 했다. 해결법..
############## 작성자가 진행한 실습 그대로의 과정을 담았습니다. ############## ######## 공부 목적으로 실습한 것이라서 혼자 삽질한 내용이 담겨 있습니다. ######## https://codeengn.com/challenges/ 실습 파일은 코드엔진 challenges 에서 다운 받을 수 있다. 오늘은 코드엔진의 challenge 중 basic 2번을 풀어보았다. 실행파일이 손상되어서 실행할 수 없는 파일의 패스워드를 찾는 것이 이번 문제이다. 실행할 수 없는 파일임을 확인하기 위해 평소 실습하던 환경인 OllyDbg에서 파일을 오픈해보았다. Unable to open or read file .....02.exe 역시 오픈하거나 읽을 수 없는 파일이라고 뜬다. 다른 도구인..
문자열 패치에는 두가지 방법이 있다. 1) 문자열 버퍼의 직접 수정 2) 빈 메모리 영역에 새로운 문자열 생성 후 파라미터로 전달 (내가 했던 실습은 C++를 사용하여 main함수 안에 메시지박스 함수를 호출한다. 파라미터로는 Hello world! 를 전달한다.) - 문자열 버퍼의 직접 수정 실습 첫번째 문자열 버퍼의 직접 수정 실습을 하다가 잘 되지 않았다. 무엇이 문제인지 파악하고자 하였지만 초보자로서 알기 어려웠다. 자세히 들여다보면 답이 있다. 00C91007 에서 push offest 00c92128을 하는 것이 보인다. 즉 00c92128의 문자열 자체를 바꾸어야 우리가 원하는 목적을 이룰 수 있다는 것이다. 내가 실수한 부분은 offset의 문자열을 바꾼것이 아닌, 00c91007을 수정하..
함수 호출과 메모리 반환 어셈블리 언어에서 어떻게 이루어지는지 알아보자. 다음은 설명을 위한 가정이다. - 함수 B에서 함수 A를 호출하는 상황이다. - 함수 A는 매개변수로 int b, int c, int d를 갖고 있으며, 반환형은 int형이다. 1. CALL 함수 A를 호출 하면 다음과 같은 세가지 단계를 거친다. 1) push : 매개변수 저장 push를 통해 a라는 함수의 인자로 들어갈 값을 저장한다. 함수 a의 매개변수는 총 3개 이므로 push를 세번 반복할 것이다. 함수 호출시 가장 먼저 하므로 스택의 밑부분에 위치한다. 2) call : 호출한 명령어의 주소 저장 EIP(instuction Pointer)로 다음 명령어 주소값에다가 현재 우리가 함수를 호출했던 주소를 저장해줌으로서 ret..
➡️ 기초 어셈블리 명령어➡️레지스터 종류와 역할➡️추가 설명 - Pointer Register 1) ESP (Stack Pointer) : 가장 최근에 스택에 입력된 데이터의 포인터 2) EBP (Base Pointer) : Stack Frame을 사용할 때 현재 실행중인 함수가 사용하는 Stack Frame의 바닥을 가리킴 3) EIP (Instruction Pointer) : 다음에 수행 될 명령어의 포인터 * Stack Frame ? : 현재 수행중인 함수의 스택영역, ESP와 EBP 사이의 공간 - PUSH : stack에 데이터를 저장함 (esp값 자동 조정 : 감소)- POP : stack에서 데이터를 지움 (esp 자동 조정 : 증가)아래 그림을 통해 stack push pop 에 대해 간..
오늘은 JavaScript 객체지향 실습을 하기로 했다 실습 소스코드 게시글 : https://www.zerocho.com/category/JavaScript/post/573d876380f0b9102dc370b8 객체지향을 실습해볼 수 있으며, 추가 기능을 통해 JavaScript의 객체지향 프로그래밍을 연습 해 볼 수 있다. 먼저 게시 되어 있는 소스를 직접 작성해보면서 작성자분의 빌드 화면이 나오도록 만들었다. 이름을 입력하면 결과가 나온다. 그럼 이제부터 기능추가를 해보겠다. ------------------------------------------------------------------------------------------------------------..
* 정규표현식이란? 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어이다. 문자열을 처리할 때 특정 조건의 문자를 '검색' 하거나 '치환'하는 과정을 매우 간편하게 처리할 수 있다. 정규표현식 연습은 다음 사이트에서 진행해 볼 수 있다. https://regex101.com/ * 정규표현식 패턴 다음은 정규표현식의 패턴들을 정리한 것이다. * 정규표현식 연습 작성자 개인의 연습이므로 특정 주제에 대해 100%에 가까운 정답이라고 확신할 수는 없습니다. Test String의 문자 형식만을 고려하여 연습하였습니다. 1. 전화번호 01[016789]\D?\d{3,4}\D?\d{4} 01 : 아무런 기호가 없는 일반 문자열이므로 문자열의 시작이 01로 시작됨을 의미한다. [016789] : ..