Reversing Engineering - 3. puts("hello world!\n") → x86_64 asm 1. hello world # hello world - 1 - "hello world!"를 출력하는 코드가 어떤식으로 어셈블리 코드로 바뀌었는지 확인 #include int main(){ puts("hello world!\n"); return 0; } > 소스는 visual studio code 2019를 통해 64비트 릴리즈 모드로 컴파일 # hello world - 2 - 보는 방법 1. 주소: 해당 어셈블리 코드의 시작 주소가 표시됨 2. 기계 코드 > 사람이 읽을 수 있는 어셈블리 코드의 전 단계인 기계어가 여기에 표시됨 > : 앞에 있는 값은 prefix이고 띄어쓰기 다음에 있는 부분..
[문제] Time Conversion | HackerRank Convert time from an AM/PM format to a 24 hour format. www.hackerrank.com [문제 설명] - 입력은 string으로 주어지면 12시 형식으로 주어짐 - AM과 PM을 보고 24시 시간으로 주어진 시간을 바꾸는 것이 목표 [문제 풀이] - AM인 경우에는 12시 일때 00시 인 것을 고려함 > 12시가 아닌 경우에는 시간을 그대로 반환 - PM인 경우에는 주어진 시에 12를 더해야 함 > 12시에 12를 더할 경우 24가 되므로 이는 예외로 따로 처리함 [코드] string timeConversion(string s) { int num; if(s[8]=='A') { if(s[0]=='1'&..
티스토리 열심히 하다가 갑자기 내가 사용하는 스킨에 프로필 연동시키는 란이 없는게 아쉬웠던 나,, 그래서 뭔가 내가 안쓰는 메뉴바를 지우고 깃허브, boj solve.ac, 인스타 같은 프로필을 연결시키고 싶어져 버린 것! 우선 내가 쓰는 티스토리 스킨은 베이스 캠프에서 배포하는 무료 스킨이다 티스토리 블로그 반응형 무료 스킨 배포 :: 베이스캠프 (나눔, 추천) 업데이트 히스토리 Releases · ruden91/public-basecamp-skin 티스토리 무료 반응형 스킨 :: 베이스캠프. Contribute to ruden91/public-basecamp-skin development by creating an account on GitHub. github.c.. webruden.tistory.c..
Reversing Engineering - 1. 리버싱 엔지니어링이란 1. Reversing Engineering # Reversing Engineering - 리버싱 엔지니어링은 이미 만들어진 시스템이나 장치에 대한 해체나 분석을 거쳐 그 대상 물체의 구조와 기능, 디자인 등을 알아내는 일련의 과정 - 소프트웨어 뿐만 아니라 기계공학, 전자공학은 물론 생물학 등에서도 폭넓게 쓰임 - '완성품의 설계도 없이 구조와 동작 과정을 알아내는' 모든 단계 - 자료나 책에 따라 '역공학'이라고 지칭하기도 함 - 줄여서 '리버싱'이라고도 함 # 'Software' Reversing Engineering - 리버싱이 산업의 전 분야에 걸쳐 적용될 수 있지만, 여기서는 소프트웨어를 대상으로 할 것 - 즉, 소스 코드가..
# 유클리드 호제법 - 2개의 자연수의 최대공약수를 구하는 알고리즘의 하나 - 호제법이란? > 두 수가 서로 상대방 수를 나누어 원하는 수를 얻는 알고리즘을 나타냄 - 내용 > 2개의 자연수 a, b에 대해서 a를 b로 나눈 나머지를 r이라 함 (이때 a>b) > a와 b의 최대공약수는 b와 r의 최대 공약수와 같음 > 위의 성질에 의해 b를 r로 나눈 나머지 r'을 구하고 다시 r을 r'으로 나눈 나머지를 구하는 과정을 반복함 > 위의 과정에서 나머지가 0이 될 때 나누는 수가 a와 b의 최대 공약수가 되는 것 # 최대 공약수 (greatest common divisor) gcd(x,y) = gcd(s,x%y) if y>0 gcd(x,0) = x - 최대 공약수를 구하는 알고리즘 > y가 0이면 x를 ..