개발, 연습 30

[C/WINAPI] 인터넷 파일 다운로드

인터넷에 있는 파일을 다운로드 받을 수 있는 코드를 짜 보았다. wininet.h 헤더에 있는 함수들로, 인터넷 검색을 통하여 예제들을 시험해 보며 짰다. 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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 #include "Winfiledown.h" int downloadFile(const char * server, const char * filename) { HINTERNET hinet, hurl; DWORD size, readsize; TCHAR *buffer; FILE * wfp..

개발, 연습 2020.07.01

2019 HackCon 후기

방학 동안 하는게 없는 것 같아서 HackCon CTF를 참가하기로 했다. 온라인으로 진행되는 HackCon은 8월 22~23일 하루동안 진행되었다. (HackCon.online) 오랜만에 해 보는 CTF라 한 문제도 풀어보지 못할 것 같았고, CTF가 열리는 시간을 혼동하여 롤까지 하고 있었다. 놀듯이 해 봤던 것 같다. 결국 풀기를 성공한 문제는 스테가노그래피 100점이 부여된 첫 번째 문제뿐이었다. 이것도 예전에 비슷한 흐름을 본 적이 있어서 그 감으로 풀었던 것 같다. 사진을 열어보면 THIS_IS_NOT_A_FLAG라고 나온다. 플래그가 아니라고 하거니와 실제로 입력했을 때 플래그가 아니다. 스테가노그래피는 사진 등의 파일에 글자(암호)나 사진 등의 데이터를 숨기는 기법이라고 하며, 저 jpg파..

개발, 연습 2020.07.01

파일 릴리즈 배포와 디지털 서명 cert

파일을 배포하기 위해 릴리즈로 컴파일 하더라도 디지털 서명이 되어있지 않은 프로그램들은 보안성을 위해 chrome나 윈도우 smart screen 보안으로 인해 실행하기 번거롭거나 다운로드 받아 사용할 수가 없다. cert라는 프로그램을 사용해 키를 생성해 사설 인증서로 인증받게 되는 과정을 인터넷 검색으로 찾은 내용을 적어본다. 참고 블로그 주소 cert.zip 압축을 푼 뒤 makecert.exe -n "CN=서명이름" -r -sv 서명키이름.pvk 인증서이름.cer 암호는 입력하지 않아도 무관 certmgr.exe -add 인증서이름.cer -s -r localMachine root 개인 로컬 인증서 도구에 사설 인증서를 신뢰할 수 있는 인증서라고 올리는 작업 signtool.exe signwiza..

개발, 연습 2020.07.01

인스톨러 제작 프로젝트

visual studio installer package를 따로 받아 설치하면 새 프로젝트로 인스톨러를 만들 수 있는 프로젝트 목록이 나타난다. Visual Studio Installer Projects 빠른 설치파일 : InstallerProjects.vsix 이 프로젝트를 이용하여 이전에 만들었던 리버싱을 위한 프로그램을 개발했던 것들을 한 번에 설치하는 프로그램을 제작하였다. 각 프로젝트의 셋업 프로젝트를 제작하여도 되지만 셋업 위자드 프로젝트로 간단히 제작해도 된다. 프로젝트를 생성 시 직접 위자드가 나와서 파일을 add 하면 기본적으로 설치를 원하는 프로그램을 담고 있는 인스톨러를 제작하게 된다. 그 후에 프로젝트가 열리는데, Application Folder안에 설치파일이 담기게 된다. Use..

개발, 연습 2020.07.01

리버싱용 프로그램 개발 - ProcessMem Tape

프로세스 메모리에 write할 수 있는 프로그램을 제작하였다. 현재 실행 중인 프로세스의 pid를 적고 OpenProcess 버튼을 누르면 OpenProcess 함수 결과에 따라 나머지 에딧폼이 열리게 된다. hex나 char형으로 적고 싶은 대로 적게 되면 아래에 쓰기 될 내용이 이어져 나오게 된다. 원하는 대로 적은 후, TAPING 버튼을 누르면 쓰게 된다. 쓰기 결과에 따라 메시지 박스가 나온다. CLEAR 버튼을 누르면 쓰기 될 바이트가 초기화된다. -파일- ProcessMem Tape.exe

개발, 연습 2020.07.01

리버싱용 프로그램 개발 - PE Backpack, R2R, Strview

리버싱을 공부할 때 중요한 PE Header Format 공부를 하던 중 책에서 찝어준 중요한 구조체 요소들만 가지고 PE Viewer를 제작하였다. c언어의 파일 입출력을 가지고 제작하였고 사실상 노가다에 다름없는..코딩이었다. 콘솔 어플리케이션으로 만들었고, 이걸 바탕으로 mfc를 이용해 제작을 하였다. 리버싱 핵심원리 책에서 PE Header Format 시작에서 또 하나 중요한 것으로 Rva Raw계산을 꼽았다. 이것도 콘솔 어플리케이션으로 한 번 만들어 보고 그것을 바탕으로 mfc를 이용해 윈도우 어플리케이션으로 한 번 더 만들었다. 그리고 잘 사용할 수 있을지는 모르겠지만 파일의 모든 문자열을 파일 옵셋과 함께 출력하는 프로그램도 같이 만들었다. 현재 이 프로그램은 콘솔로만 제작이 되어있다. ..

개발, 연습 2020.07.01

Java 연습 - 은행 시스템

java 연습 차원에서 프로그램을 만들어보았다. https://github.com/terria1020/Java-Practice-BankSystem java 열혈 프로그래밍 책에서 12장까지 읽은 내용을 토대로 입/출력, 클래스 생성, 생성자, 접근 제어자 등의 배운 점을 이용해서 사용했고, 시간을 불러오는 것은 책에서 스치듯 나온 것을 보고 인터넷 검색 등으로 사용해 보았다. 테스트 해 본 결과이다.

개발, 연습 2020.07.01

Java 공부 - 변수의 자료형

자바의 변수의 형태와 특이점들을 정리하려고 한다. 변수의 선언은 (자료형) (변수이름); 으로 선언이 가능하다. 변수의 이름을 정하는 규칙이 있는데, - 변수 이름의 첫 번째 문자는 숫자가 올 수 없다 - 자바의 변수 이름은 대소문자를 구별한다 - '$'와 '_'이외의 특수문자는 사용할 수 없다 - 키워드는 변수의 이름으로 사용할 수 없다 - 클래스와 차이를 두기 위해 첫 글자는 소문자로 사용한다 - 되도록이면 영어 단어의 뜻이 바뀌는 위치마다 대문자를 사용한다(또는 '_') -- userName, userNameLength, player_level 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 package default; public class Main { publi..

개발, 연습 2020.06.30

scanf와 scanf_s

마이크로소프트 사에서는 자주 사용하는 개발 IDE인 Visual Studio에서 scanf 사용을 권하지 않는다. 하위 버전에서는 경고를 띄우지만 최상위 버전에서는 SDL(security development lifecycle) 검사가 체킹 되어 있어 비주얼 스튜디오에서만 지원하는 scanf_s를 사용하지 않으면 오류가 뜨게 되어있다. scanf_s()는 문법은 scanf()와 다를게 거의 없다. 그러나 문자열을 입력받는 서식문자 %s를 사용할 땐, 저장할 문자열 뒤에 최대 문자열 입력 개수를 인자로 한 개 더 넣어주어야 한다. 1 2 char name[10]; scanf("%s", name); cs 이전 scanf 사용이 이랬었다면, 1 2 3 #define MAX_LEN 10 char name[MAX..

개발, 연습 2020.06.30