블로그 이미지
황상두

카테고리

기타 (101)
알고리즘(백준) (3)
임베디드 보안 (7)
windows internal (22)
공부 (16)
전공 스터디 (27)
과제 (8)
영어 (6)
기록물 (6)
Total
Today
Yesterday

달력

« » 2025.4
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

공지사항

태그목록

최근에 올라온 글

'공부'에 해당되는 글 16건

  1. 2017.03.04 윈도우즈 디바이스 드라이버 - WDM
  2. 2017.02.26 Z3
  3. 2017.01.14 논리형 프로그래밍(?)
  4. 2017.01.14 함수형 프로그래밍(?)
  5. 2017.01.14 식과 제어문

https://www.youtube.com/watch?v=1E5Y64CPH00

WDM강의 여기서 이어서 보면 된다.




































Posted by 황상두
, |

Z3

공부/정보보안 / 2017. 2. 26. 19:10

pintool과 결부하여 사용하기 좋은 라이브러리이다.

Z3란 게 SMTsolver로서 사용된다고 한다.

원하는 경로를 위한 해(solve)를 구해주는 툴이라고 보면된다.

핀툴의 경우 속도가 매우 느린데 이 툴을 사용하여 원하는 경로만 볼 수 있다면 분석시간을 많이 단축 시킬 수 있을 것이다.


https://github.com/Z3Prover/z3 

github를 참조하자!


빌드된 버전도 있으니 사용하자!

-->  z3-4.3.2-x64-win.zip




z3실행파일이 생성되며 주요언어를 모두 지원한다.

파이썬을 통해서 하는 게 가장 편할것이다.

인터프리터 언어이기 떄문이다.

C언어나 C++로 하기 위해서는 외부라이버리를 참조해야만 사용가능하다.



angr과 triton은 같이 사용하는 프레임워크이다.


http://rise4fun.com/z3/tutorial

http://xer0s.tistory.com/97

http://revers3r.tistory.com/424 - angr

https://triton.quarkslab.com - triton

http://shell-storm.org/blog/Stack-and-heap-overflow-detection-at-runtime-via-behavior-analysis-and-PIN/


파싱이란? - 가공되지 않은 데이터에서 원하는 특정한 문자열을 빼내는 작업

makefile형식으로 이루어져 있다.


'공부 > 정보보안' 카테고리의 다른 글

샌드박스 및 LSTM  (0) 2017.06.04
보안 뉴스 정리  (0) 2017.06.02
메모리 인 퍼징  (0) 2017.03.10
processTracer  (0) 2017.01.10
pintool이란?  (0) 2017.01.10
Posted by 황상두
, |

http://clojure.or.kr/wiki/doku.php?id=study:algorithms:functional_logic_programming


논리형 프로그래밍이란?


기호논리의 원리를 이용한다. 관계를 중요시한다.

학교다닐떄 배우던 명제와 비슷하다.

ex)

전제

a는 c의 아버지다.

c는 d의 아버지다.


알수있는것!

a는 d의 할아버지다.


명령형 언어와 함수 언어에서의 프로그래밍은 기본적으로 절차적 (procedural) 이다. 그것은 프로그래머가 프로그램에 의해 무엇이 성취되는지를 알고 계산이 정확하게 어떻게 수행되는지를 컴퓨터에게 지시하는 것을 의미한다. 다시 말하면, 컴퓨터는 명령을 따르는 간단한 장치로서 취급된다. 계산되는 모든 것은 계산의 모든 세부 사항이 상세히 설명되어야 한다. 어떤 사람은 이런 것이 컴퓨터 프로그래밍을 어렵게 하는 핵심이라고 믿는다.

어떤 비명령형 언어에서의 프로그래밍, 특히 논리 프로그래밍 언어에서의 프로그래밍은 비절차적이다. 이러한 언어에서의 프로그램은 결과가 계산되는 방법을 정확하게 서술하지 않고 결과의 형식을 서술한다. 차이점은 우리가 컴퓨터 시스템이 어쨌든 결과가 얻어지는 방식을 결정한다고 가정하는 것이다. 논리 프로그래밍 언어에 이 능력을 제공하기 위해 필요한 것은 적당한 정보와 원하는 계산 결과를 추론하는 방법을 컴퓨터에게 제공하는 간결한 수단이다. 수렁 해석학은 컴퓨터에 대한 기본 통신 형식을 제공하고, Robinson 에 의해 첫번째로 개발된 증명 방법은 추론 기법을 제공한다


선언형 언어는  해법 정의(HOW)를 하기보다는 무엇(what)을 할 것인지에 중점을 둔다.

즉 우리가 대개 처음 배우는 C언어나 이런언어들은 보통 문제해결을 위해서 코딩을 한 후 주석을 단다.

왜 달까? 문제해결을 위한 해법을 적어 놓은 것을 상대방이 이해하기 쉽게 하기위함이다.



근데 선언형언어 및 논리형 프로그래밍은 결과를 물어보는 방식이다. 즉 애초에 결과를 물어보기때문에 주석이 덜필요하다

생각해보자

ex) 너 남자니? (male(a))

주석을 달필요가 있나?? 애초에 코딩이 질문이기에 필요없다.


'공부 > 프로그래밍' 카테고리의 다른 글

프로그래밍 네이밍 규칙  (0) 2017.12.16
함수형 프로그래밍(?)  (0) 2017.01.14
식과 제어문  (0) 2017.01.14
l-value 와 r-value 차이  (0) 2017.01.13
동적영역과 정적영역의 차이  (0) 2017.01.12
Posted by 황상두
, |

**명령형프로그래밍은 절차지향 프로그래밍이랑 비슷하다.**|


소위 FP(functional programming)이라고 불린다.


C언어의 매크로 함수

C++의 인라인 함수와 비슷한 느낌이라고 할까


함수형 프로그래밍이란 수학적 원리의 함수들로만 구성시키는 방식을 뜻한다.

ex) #define POWER(X) ((X)*(X))

X값이 어떤 값이든 항상 X의 제곱이 출력된다.


함수형 프로그래밍과 연관이 깊은 것이 순수함수개념이다

순수함수의 특징은

1. 데이터 수정이 불가능하다(X를 수정하지 않는다)

2. 항상 결과가 동일하다.(항상 X의 제곱이 결과다)


보시다시피, 부작용이 적은 프로그래밍 방식이다.

그렇기에 8코어 , 16코어... 멀티코어방식에 적합하다.

동시에 사용해도 안정적이기 떄문이다.


대신 복잡함을 수반한다. 쓸데없이 복잡하게 코딩해야되는 경우가 생긴다.

재귀함수를 써서 반복문을 구현한다든지...

매개변수로 함수를 쓴다든지 등등 여러상황이 있다.


http://changsuk.me/?p=1916

'공부 > 프로그래밍' 카테고리의 다른 글

프로그래밍 네이밍 규칙  (0) 2017.12.16
논리형 프로그래밍(?)  (0) 2017.01.14
식과 제어문  (0) 2017.01.14
l-value 와 r-value 차이  (0) 2017.01.13
동적영역과 정적영역의 차이  (0) 2017.01.12
Posted by 황상두
, |

구조적 프로그래밍이란

하나의 입력에 하나의 출력만 있는 형태의 프로그램 구조를 뜻한다.

만약 goto문을 사용한다면 하나의 출력형태만 존재하지 않는다.


단락회로?

예를 하나 들어보자!

if(i < 5 && j > 1000)

.

.

.

이때 i가 5보다 작다면

j가 1000보다 큰지 연산하지도 않고 다음줄로 넘어간다.

'공부 > 프로그래밍' 카테고리의 다른 글

논리형 프로그래밍(?)  (0) 2017.01.14
함수형 프로그래밍(?)  (0) 2017.01.14
l-value 와 r-value 차이  (0) 2017.01.13
동적영역과 정적영역의 차이  (0) 2017.01.12
프로그래밍 언어론 시작!!  (0) 2017.01.12
Posted by 황상두
, |

최근에 달린 댓글

글 보관함