분류 전체보기(12)
-
flag
보호되어 있는 글입니다.
2022.11.17 -
머신러닝 패키지 정리 (machine learning package) - 1
머신러닝 패키지 정리 - 1 matplotlib(맷플롭립) scatter() : 그래프에서 산점도 그리기 show() : 아래와 같이 그래프를 보여줌 import matplotlib.pyplot as plt plt.scatter(x좌표, y좌표) plt.show() scikit-learn(사이킷런) scikit-learn을 사용하기 위해서는 2차원 리스트가 필요하다. zip() : 나열된 리스트에서 원소를 하나씩 꺼내 줌 xy_data = [[l, w] for l, w in zip(x_data, y_data)] 위와 같은 방법으로 1차원 리스트들을 대칭되게 2차원 리스트로 변경 KNeighborsClassifier() from sklearn.neighbors import KNeighborsClassifi..
2021.07.11 -
easy-crackme1.exe 분석 보고서
1. easy-crackme1.exe 실행 단서1 : ‘input:’ 이라는 문자열을 찾음 가설1 : input이라는 문자열이므로 무언가를 입력하는 부분 같음, 디버깅할 때 input이라는 문자열로 main함수나 중요한 부분을 찾을 수 있겠다는 생각을 함 2. main 함수 결과1 : 가설대로 main 함수를 찾을 수 있었음 함수 설명 : %d(정수)라는 자료형을 두 개 입력받고 정수를 가지고 easy-crackme1 (1).140001180이라는 함수를 불러와 어떠한 조건으로 검사하고 correct!인지 wrong!인지를 확인한다. 가설1 : 설명에 있던 함수의 리턴값이 1이여야 test 연산을 하면 1이 되어 ZF값(ZF -> 0)이 세팅되지 않기 때문에 je문에 만족하지 않게 되어 correct! ..
2021.05.06 -
지역변수 출력 (리버싱 유형 - 1)
#include int main() { int a = 5; printf("%d\n", a); return 0; } 지역변수인 a를 출력하는 코드를 x64dbg로 동적 분석 Ctrl + G 를 누른 뒤 main을 입력하면 main 함수로 이동 sub rsp, 28 : rsp가 가르키는 주소를 0x28 만큼 빼서 스택공간 확보 mov edx, 5 : edx에 5를 대입 (int a = 5 와 대칭) lea rcx, qword ptr ds:[7FF7D84B2240] : rcx에 주소 대입(7FF7D84B2240 : %d) call : printf 함수 불러오기 xor eax, eax : 같은 값을 eax하면 무조건 0이 나옴 (만약 1 반환을 원하면 mov eax, 1로 나옴) add rsp, 28 : 스택공..
2021.03.17 -
메모리 구조
코드 세그먼트(CS) : 소스 코드들이 이진화되어 저장 되어있는 메모리 영역. 스택 세그먼트(SS) : 지역 변수와 함수 호출 인자가 저장 되어있는 메모리 영역. (FILO 구조를 가짐) 데이터 세그먼트(DS) : 전역 변수와 Heap을 저장하는 메모리 영역. (Heap은 프로그램 도중 할당, 해제하며 사용하는 동적 메모리 공간) 이후 새로운 내용 있을 때마다 추가할 예정
2021.02.25 -
abex' crackme #1 write-up
초기 실행결과 동적 분석 (ollydbg) 이 프로그램은 어셈블리로 짜여진 코드이므로 코드가 매우 간결하게 되어있음 처음 시작할때 F8 키를 누르면서 한줄씩 실행하게 됨, 40100E에서 MessageBoxA 함수가 불려지고 화면에 초기 실행결과들(해석해보면 HD를 CD-Rom으로 생각하게 만들라고 함)이 나옴. 만약 그냥 실행을 하면 "Nah... This is not a CD-RPM Drive!" 이라는 문구가 메시지박스로 나오게 되지만 프로그램을 크랙하여 타이틀이 "YEAH"이고 "OK, I really ~~~ " 라는 문구를 띄어야 하는거 같음. 해결방법 예측 401026주소에 있는 JE 명령어가 40103D를 가르키고 있으므로 JMP 명령어로 바꾸어 무조건 점프하게 해주면 될거같다는 생각함. (..
2021.02.06