mgchem's log
WYSINWYX: What You See Is Not What You eXecute
Study/CS 2025. 9. 10. 00:47

논문 링크: https://research.cs.wisc.edu/wpis/papers/wysinwyx05.pdf 해당 논문은 프로그래머가 보는 소스 코드와 실제 실행되는 기계 코드가 다르다는 점을 지적한다. 해당 현상으로 인해 소스 코드 분석만으로는 취약점을 완전히 파악할 수 없다. 일례로 보안을 위한 프로그래머의 의도 하에 들어간 소스 코드가 컴파일러의 최적화 과정에서 불필요한 코드로 간주되어 제거되는 일이 발생할 수 있다. 해당 취약점은 컴파일 이후의 로우 레벨 코드를 검사해야만 발견할 수 있다. 컴파일 과정에서의 문제 외에도 분석 중 간과되는 가정, 여러 언어로 작성된 소스 코드 등 다양한 원인에 의해 소스 코드와 기계 코드 사이에 차이가 발생할 수 있다. 저자는 문법에서 정의되지 않은 예외적이고..

Reflections on Trusting Trust (Thompson/CACM1984)
Study/CS 2025. 9. 2. 23:38

논문 링크: https://doi.org/10.1145/358198.358210 Unix의 개발자 켄 톰슨의 튜링상 수상 강연 기록이다. 본문은 세 단계에 걸쳐 C 언어 코드와 C 컴파일러 코드들을 예시로 들며, 프로그램과 컴파일러를 보안에 대한 걱정 없이 완전히 신뢰할 수 있는지에 대한 의문을 던진다. 1단계에서는 자신의 학창 시절 경험을 바탕으로 C 언어로 작성된 콰인 하나를 소개한다. 해당 코드가 특별한 이유 중 하나로, 자신의 소스 코드뿐만 아니라 소스 코드 중간에 위치한 임의의 주석 내용까지도 출력하는 점을 들었다. 2단계에서는 C 컴파일러가 C 언어로 작성되었음에서 오는 '닭과 달걀' 문제를 언급한다. 컴파일러 코드에 새로운 기능을 추가하고 스스로를 재컴파일하면 해당 기능을 컴파일된 컴파일러..

HF와 DFT의 차이
Study/Chem 2025. 8. 27. 17:43

Hartree-Fock theory와 Density functional theory는 모두 다전자 시스템에서 파동함수와 에너지를 계산하기 위해 사용되는 방법론이다. HF에서는 Fock 방정식의 도입을 통해 다전자 시스템의 문제를 N개의 전자 각각에 대한 일전자 슈뢰딩거 방정식들로 근사하였다.$$ \hat{F} \phi _{i} = \epsilon _{i} \phi _{i} $$$$ \hat{F} = \hat{H}^{core} + \sum_{j} (\hat{J}_j - \hat{K}_j) $$즉 각 전자가 다른 전자들의 평균적인 전기장 속에서 독립적으로 움직인다고 가정하였으나(mean field approximation),실제로는 매 순간 전자끼리 상호작용하며 움직이며, 이를 서로 상관되어 있다고(corr..

Slater 행렬식의 유용함
Study/Chem 2025. 8. 26. 23:21

Hartree-Fock theory에서는 Slater 행렬식을 통해 파동함수를 표현한다.$$\Psi ^{HF} = \frac{1}{\sqrt{N}}\begin{vmatrix} \phi _{1} & \phi _{2} & ... & \phi _{N} \\ \end{vmatrix}$$전자는 페르미온으로, 파울리 배타 원리와 구별 불가능성, 파동함수의 반대칭성을 만족해야 한다. 1. 파울리 배타원리; 동일한 양자 상태를 갖는 두 전자는 존재할 수 없다.두 행 또는 열이 동일하면(= 두 전자가 같은 상태에 있다면) 행렬식의 값은 0이 되므로 파동함수는 0, 해당 상태가 존재할 확률도 0이 된다.Slater 행렬식을 사용한 파동함수의 표현은 자연스럽게 두 전자가 동일한 상태에 존재하는 것을 불가능하게 만든다. 2...

Secular matrix 단순화 과정
Study/Chem 2025. 8. 21. 18:35

MO theory에서, 가능한 모든 AO끼리의 linear combination을 담는 secular matrix로 시작하여 0인 것을 지워나가는 과정에서$ S_{1s(a)2s(a)}= \int \phi _{1s(a)}^{*}\phi _{2s(a)}d\tau = 0 $같은 a원자 내의 예) 1s, 2s 오비탈은 서로 직교하므로 S값이 정확히 0임은 자연스럽다.$ S_{2s(a)1s(b)}= \int \phi _{2s(a)}^{*}\phi _{1s(b)}d\tau \approx 0 $하지만 서로 다른 원자에 속한 오비탈은 interaction 존재. 그런데 왜 0으로 근사하는가? 일반화학이나 무기화학에서 MO diagram 그릴 때 생각해보면 항상 (homonuclear diatomic 기준) 1s끼리, ..

article thumbnail
[PyTorch] loss nan 문제 해결
Study/CS 2024. 11. 25. 20:13

과제 중 train, validation loss 모두 nan이 나오는 현상을 확인했다.에러 로그도 없어 골치 아프던 와중 발견한 아래의 코드torch.autograd.set_detect_anomaly(True) autograd 중 어디에서 오류가 발생했는지 감지하고 출력하는 함수로, 코드 첫 줄에 넣어주면 된다.  로그에서 보이듯 backward 중 sqrt(0)의 derivative 계산에서 nan이 나왔다.torch.sqrt(x) 대신 torch.sqrt(x + 1e-8)로 바꾸어 해결하였다.

article thumbnail
Lab3: Attacklab (phase 5)
Study/CS 2023. 11. 5. 23:36

Overview Phase 5는 phase 3을 ROP를 사용해서 푸는 문제다. Phase 3를 푸는 과정 및 touch3 함수의 구성은 지난 게시물에서 다루었다. typedef struct st { char cookie_str[9]; int cookie_val; } st; 요약하면 위와 같이 cookie값을 char, int로 각각 포함하는 struct st를 만들고, st의 주소값을 %rdi에 넣은 채로 touch3 함수를 call하는 문제다. ROP Phase 5에 쓰이는 gadget은 start_farm 함수와 end_farm 함수 사이에 위치한다. $ objdump -d rtarget > rtarget.d rtarget의 전체 내용을 disassemble한 결과인 rtarget.d를 열어 sta..

article thumbnail
Lab3: Attacklab (phase 4)
Study/CS 2023. 11. 4. 20:39

Overview Phase 4, 5는 각각 phase 2, 3과 같이 touch2, touch3 함수를 알맞는 argument와 함께 call하는 것이 목표로, 실행하고자 하는 machine code를 직접 input으로 넣어주었던(Code injection) phase 2, 3과 달리 이미 존재하는 machine code의 일부를 gadget으로 사용하는 ROP(Return-Oriented Programming)를 사용해야 한다. touch2 함수의 구성과 해당 phase 2를 푸는 과정은 지난 게시물에서 다루었다. 요약하면 %rdi에 자신의 cookie값이 들어있는 상태에서 touch2 함수를 call하면 된다. ROP Phase 4에 쓰이는 gadget은 start_farm 함수와 mid_farm ..

article thumbnail
Lab3: Attacklab (phase 3)
Study/CS 2023. 11. 1. 02:00

Overview (gdb) disas touch3 touch3 함수의 구성을 살펴보자. touch3 함수는 argument로 st pointer type을 받는다. 참고로 st는 struct로, 구성은 아래와 같다. typedef struct st { char cookie_str[9]; int cookie_val; } st; cookie_str과 cookie_val은 각각 cookie의 string(0x00000000에서 0x 제외), unsigned value이다. 즉 %rdi에 st의 주소값을 넣는 코드가 필요하다. 물론 touch3, hexmatch, hexmatch 안에서 call되는 strncmp 함수들은 data를 stack에 push하므로 Buffer에 저장되는 우리의 입력값이 overwri..