2024/07 52

HTML, JS 이벤트 처리

기본적으로 흐름은사용자가 무언가를 함(혹은 브라우저가)이벤트가 발생이벤트에 따른 함수 실행변화Timing Event(시간 주기를 이용한 이벤트)(대부분은 window. 생략합니다!!)window.setTimeout(함수, 밀리sec)적어놓은 밀리sec 이후에 함수 한 번 실행.window.setInterval(함수, 밀리sec)적어놓은 밀리sec 주기로 함수 반복 실행.window.clearTimeout(setTimeout 담긴 변수)setTimeout()의 짝궁.setTimeout() 함수 실행 중지. (밀리sec 되기 전 실행 아예 안시키도록)window.clearInterval(setInterval 담긴 변수)setInterval()의 짝궁.setTimeout() 함수 실행 중지. (돌아가는 중이던..

원하는 주소로 return 시키기

Return Address Overwrite(이하 RAO) 기법이다.내가 어떤 주소로 rip를 이동 시키고 싶고, 그 주소의 hex값을 알았을 경우, BOF 등으로ret 주소를 덮어써서 해당 주소로 가도록 유도하는 것이다.기본 문제인 드림핵의 basic_exploitation_000 을 예시로 적용해보자.(https://dreamhack.io/wargame/challenges/2)파일을 받아보면 C파일과 그것으로 컴파일한 실행파일이 있다.코드는 이러하다.#include #include #include #include void alarm_handler() { puts("TIME OUT"); exit(-1);}void initialize() { setvbuf(stdin, NULL, _IONB..

Hacking/Pwnable 2024.07.12

List STL

C++의 STL에 당연하게도 linked list가 구현되어 있다.이 list는 doubly linked list로, 이중 연결 리스트이다.사용 방법선언int main(void) { list L = {1, 2}; // 1->2 list::iterator t = L.begin(); // t는 head 가리킴 auto t = L.begin(); // over C++ 11 ver.}기본적인 선언이다. 다만 헤드를 가리키는 변수를 만들 때,C++ 11 이상에서는 다음과 같은 형식이 가능하다.auto t = L.begin();메소드L은 list 변수라 가정한다.L.push_back(val)L.push_front(val)L.insert(addr, val) // addr 앞에 삽입한다L.erase(a..

실수 자료형의 주의점

IEEE-754 formatsign -> 부호exponent -> 지수(과학적 표기법)fraction -> 유효숫자이렇게 저장됨으로써 생기는 문제점들을 기억해야 한다.1. 실수의 저장/연산 과정에서 반드시 오차가 생긴다.다음 예시를 보자.if(0.1+0.1+0.1 == 0.3) printf("true\n");else printf("false\n");결과는 놀랍게도 false가 출력된다.0.1과 0.3은 둘 다 무한소수이고 0.1+0.1+0.1 을 하면서 오차가 커지게 되어 둘이 다르다고 나오게 된다.하지만 오차 범위는 알 수 있고. (float은 $10^{-6}$, double은 $10^{-15}$)double의 오차 허용 범위가 훨씬 크기에, 실수 자료형은 double을 쓴다.(메모리가 모자랄 경우에는..

시작해요 언리얼 2022 무작정 따라하기 - 2주차

KEYWORDS:모델링 모드, 모델링, 큐브 그리드, 큐브 그리드 툴, 스태틱 매시 저장, 피벗 설정, 캐릭터 시작 위치 설정, 대각 큐브 그리드 증감, 머티리얼 설정, 블로킹 볼룸, 간단한 점프맵 레벨 새로 만들고 나서새로 게임 레벨을 만들었을 때 해야할 일들.게임 모드 확인하기아웃라이너 최상단의 레벨 우클릭 > 월드 세팅 > 게임모드 오버라이드프로젝트 세팅 확인하기이 프로젝트를 열었을 때 해당 레벨이 노출되도록 변경. 모델링 모드모델링 모드 - 선택 모드(기본) 이동shift + 1, shift + 5로 옮겨 다닐 수 있다.SkySphere 꺼놓기(권장)아웃라이너에서 하늘 영역 액터를 비저빌리티 해제 해놓는다.모델링을 할 때 자꾸 하늘이 클릭되는 번거로움을 방지하기 위함이다.큐브 그리드 생성하기모델링..

BOM 개념과 활용

BOM(Browser Object Model)브라우저 객체 모델. DOM이 Document(웹 페이지 문서)에 관한 객체였다면,BOM은 Browser에 관한 객체인 것이다.(이 글을 쓰는 지금도 마침 봄이다ㅋ)최상위 : window나머진 그 아래 동등.Window Methodswindow.open() 창 열기window.close() 창 닫기window.moveTo() 창 옮기기window.resizeTo() 창 크기 변경하기window.onload() 로드가 되었을 때(head, body....)window.unload() 페이지 벗어날 때Example) 새로운 윈도우(창) 열기 // 인자: url, 새창에 열지 새탭에 열지(기본값 새창), 창 크기, 상태 Screen Object : 모니터..

결합 확률 질량 함수(Joint PMF)

여러 확률 변수의 결합 확률 질량 함수(Joint PMFs of Multiple RVs)DRV인 두 확률 변수 X, Y가 있다고 하자.두 PMF를 합치면(Joint PMF)$$p_{X,Y}(x, y) = P(X=x, Y=y) = P({X=x}\cap{Y=y})$$Example)P((X, Y) $\in$ A), P((x, y) : $0 \le x \le 1, 1 \le y \le 2$) 의 값은,주변 확률 질량 함수(Marginal PMFs)Joint PMF는 각각의 PMF를 다 포함했기에, Joint PMF를 알면 결국 각각의 PMF를 알 수 있다.증명에는 각각의 DRV들이 결국 표본 공간의 분할임을 이용, 전확률정리를 사용한다.marginal 개념은 아래 개념들에서 증명하는데 계속 쓰인다.다중 확률 변..

시작해요 언리얼 2022 무작정 따라하기 - 1주차

KEYWORDS:언리얼 작업 환경, 뷰포트, 아웃라이너, 액터, 레벨, 단축키, 스냅, 툴바, 콘텐츠 브라우저, 뷰포트 모드, 2D 뷰포트, 트랜스폼, 폴더 구조, 계층 구조, 게임 모드, 레벨 저장, 에셋, 프로젝트 세팅viewport : level이라는 게임 공간을 제작하기 위해 보여지는 화면Level?흔히 게임할 때 스테이지라 부르는 것을 개발할 때는 레벨이라고 한다.  outliner : 액터들을 볼 수 있는 화면언리얼에서의 level은 "액터"라는 단위 물체들로 구성되어 있음.아웃라이너에서 그런 요소들을 볼 수 있다.아웃라이너 최상단 : 현재 레벨타입 : 해당 액터가 어떤 역할을 하는지 표지단축키, 툴바단축키 개인 설정: 편집 - 에디터 개인설정 에서 변경해당 액터 확대 : 액터 마우스 좌클릭 ..

DOM의 요소 관계와 JS에서의 사용

DOM이 무엇인지는 다음을 참고하시고 : HTML에서의 DOM 구조요소 관계중요한 것은 DOM이 hierachical(계층적)이라는 것이다.계층적임의 예시는 다음을 보자.This is a paragraph of text with alink.를 DOM 구조를 나타내면,자식들은 순서대로 first, second... 가 되고자식들의 부모는 parentNode로 접근이 가능하며자식들 끼리는 nextSilbing, previousSibling으로 접근이 가능하다.요소 접근하기document.getElementById(id)html페이지에서 유일한 id를 찾아서 그것의 DOM을 반환한다.!주의! : getElement"S"임에 주의!! id는 유일해서 Element이지만 얘네는 여러개 가능해서 복수형임!!docu..

JS에서 Random 값 받기(Math.random())

근데 random 메서드가 Math 내장 객체에 있다.그래서 Math.random()으로 쓴다.Math.random()리턴 값: 0~1사이의 실수ex. 0.9099821, 0.00212313.....그래서 정수로 받고 싶으면var rand1to10 = Math.floor(Math.random() * 10 + 1)처럼 곱하기 해주고, 1 더해준 다음 floor() 메서드로 감싼다. (가우스 함수 같이 정수만 떼서 줌)위 예시는 1부터 10까진데 1부터 100까지는var rand1to100 = Math.floor(Math.random() * 100 + 1)이런 식으로. Few Examples)0~255var ex = Math.floor(Math.random() * 256) // return 0~255100~..