일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 게임 프로그래밍
- 웹해킹
- 5585
- 리버싱
- tcp
- boj
- 자바스크립트
- c언어 게임
- webhacking.kr
- 코딩테스트 연습
- 자바
- 백준
- 소프트맥스 함수
- 코드엔진
- 웹케이알
- 네트워크
- c++
- 10809
- 크레인 인형뽑기
- Old-17
- 퍼셉트론
- openCV
- 딥러닝
- 프로그래머스
- Old-14
- 계단함수
- 신규 아이디 추천
- C언어
- old-1
- JS
- Today
- Total
목록전체 글 (65)
SteffenLee
vector 라이브러리 vector는 타입이 모두 같은 객체의 모음이고, 객체를 담기 때문에 컨테이너(container)이라고 합니다.배열과 유사한데 다른점이 있다면 메모리가 동적으로 할당된다는 것이다.나머지 장점이나 단점은 글을 이어나가면서 설명하겠습니다. vector는 헤더를 라는 것을 선언해야 사용가능합니다.Ex)12345678#includeusing std::vector;//이건 vector를 std::를 안쓰게 도와준다. int main(){ . . .}Colored by Color Scriptercs 그리고 vector는 클레스 템플릿입니다. vector의 정의 및 초기화 정의 형식은 vector 이름;이다.vector의 정의 예시 123456789#include#include#includeu..
동적할당 연결리스트를 만들어봤습니다. 1234typedef struct Node { int data; struct Node * next_node;}Node;csNode 구조체입니다. node는 데이터와 다음 노드의 주소를 갖고 있습니다. 이런 식으로 이어지면 연결리스트가 됩니다.123456typedef struct _List { Node * head; Node * tail; Node * current; int NumOfData;}List;cs연결리스트를 관리하기 위한 구조체입니다. head는 머리, tail은 꼬리, current는 현재 노드를 가르킵니다. 노드 초기화1234567void reset_node(List *list) { list->head = NULL; list->current = NULL;..
decltype 타입 지정자 decltype 타입 지정자는 C++11에 추가됐습니다.이 지정자는 피연산자의 타입을 반환합니다. 그리고 컴파일러에서는 타입을 결정하기 위한 표현식일뿐 평가를 하지 않습니다. 구문은 decltype('expression'); 입니다. 예를 들자면 decltype(f()) sum = x;이면 f의 반환 타입에 따라서 sum의 타입이 정해집니다. decltype에서 상위 const와 참조자를 다루는 방식은 auto 타입과 약간의 차이가 있습니다.decltype를 적용하는 표현식이 변수이면 상위 const와 참조자를 포함해 대상 변수의 타입으로 반환합니다. 간단한 예시를 보자면12345678910#includeusing namespace std; int main() { const ..
코드엔진 basic 08번 풀이입니다. OEP를 구하는 문제이군요. 그렇다면 이 프로그램은 패킹이 되어있다고 볼 수 있습니다. PEiD로 확인해보겠습니다. UPX로 패킹되어있군요. 올리디버거로 열어보겠습니다. 앞에서부터 쭉 해오던 패커를 언패킹하는 거니 바로 풀겠습니다. 이렇게 찾으시면 저 점프문에서 점프하는 주소가 정답입니다. 인증해보겠습니다. 성공입니다. 감사합니다.
코드엔진 07번 풀이입니다. 문제가 c드라이브 이름이 codeengn일 경우 생성된 시리얼을 찾으면 되나 봅니다. 그럼 c드라이브 이름을 codeengn으로 바꾸고 시작하겠습니다. 이제 올리디버거로 열어보겠습니다. 일단 한 번 실행시켜 보겠습니다. 이런 식으로 입력을 하니 시리얼이 다르다고 뜨네요. 그럼 밑으로 내리다 보면 많은 문자열이 보이는 곳이 있습니다. 밑에는 실패나 성공을 했을 때 뜨는 문구도 있습니다. 그리고 중간에 아까 입력했던 asdf라는 문자열도 있군요. 그렇다면 저 부근에서 문자열 비교가 일어난다는 걸 추측 할 수 있습니다. 추측이 맞는지 확인 해봅시다. 성공, 실패 여부를 확인하는 곳 앞에는 JE분기문이 있습니다. 이 분기문은 ZF를 보고 판단하여 분기하게 됩니다. 그렇다면 저 부분에..
코드엔진 baisc 06번 풀이 입니다. 문제가 언팩을 한 후에 시리얼을 찾아서 인증하는게 문제인가 봅니다. 언팩을 하려면 어떤 패커로 압축되어 있는지 확인해봅시다. PEiD로 열어봤습니다. UPX로 패킹이 되어있군요. UPX패커라면 지난번에 풀었던 5번과 같은 패커로 이루어져있습니다. 그렇다면 바로 올리디버거로 열어서 언팩을 진행해보겠습니다. 올리디버거로 열은 뒤 POPAD를 찾고 그 밑에서 JMP을 찾았습니다. 그러면 JMP로 따라가는 저 주소 값이 정답의 절반이겠군요 지금까지 정답은 ; 00401360Serial입니다. Serial 키를 찾으러 가봅시다. 지난번과 같은 방법으로 언팩해주신 후에 올리덤프로 저장해주시면 되겠습니다. 2018/01/05 - [CodeEngn] - [CodeEngn]bas..
코드엔진 basic 05번 풀이입니다. 이번 문제는 프로그램에 등록키를 알아내는 문제인가 봅니다. 풀이에 앞서 이 프로그램은 패킹이 되어있습니다. 패킹에 관한 내용은 나중에 따로 다루겠습니다. 그래서 PEiD라는 프로그램으로 패커의 종류를 알아보겠습니다. UPX 0.89.6 - 1.02라는 패커로 패킹 되어있군요. 이 패커의 특징은 시작 부분에서 PUSHAD를 하고 OEP(Original Entry Point)로 들어가기 전에 POPAD를 한다. POPAD이후에 나오는 JMP의 주소 부분이 OEP 주소이다. PUSHAD : PUSHAD는 EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI의 레지스터 값을 스택으로 PUSH 합니다. POPAD : POPAD는 반대로 스택 값에 있는 EAX..
코드엔진 basic 04번 풀이입니다. 안티 디버깅이 되있는 프로그램입니다. 프로그램을 실행시키면 정상이라는 내용이 계속해서 출력되는군요. 그럼 올리디버거에 프로그램을 올리고 실행시켜보겠습니다. 올리디버거에서 실행시켰더니 디버깅 당함이라고 뜨는군요. 그렇다면 이제 디버깅을 탐지하는 함수를 찾아봅시다. Ctrl + F2를 눌러 재시작해주시고 F8로 쭉 실행시켜봅니다. 중간에 실행이 멈추면서 무언가를 호출해오면서 cmd창에 디버깅 당함이라 뜨기 시작합니다. 그렇다면 다시 한번 재시작해주시고 저 부분까지 내려옵니다. 이번에는 F8이 아닌 F7로 내부로 들어가 봅니다. 이런식으로 내부로 들어오게 됩니다. F8로 천천히 실행시키다 보면 중간에 IsDebuggerPresent라고 수상하게 생긴 함수가 있습니다. 이..