분류 전체보기 65

백준 14697번 방 배정하기 c++

나의 메모 배정된 모든 방에 빈 침대가 없도록 -> 방의 정원을 모두 꽉 채울것 3개의 침대수가 주어지는데 방 3개 모두 사용할 필요 X 필요한 변수 방의 정원 : A,B,C 전체 학생 수 : N 경우 A방으로 죄다 배정하기 if(N % A == 0) printf("1"); A방으로 죄다 배정하기 B방으로 죄다 배정하기 C방으로 죄다 배정하기 A,B방으로 죄다 배정 A,C방으로 죄다 배정 B,C방으로 죄다 배정 A,B,C방으로 죄다 배정 --------------------------------------------------------- 일단 브루트 포스는 이름부터 완전 탐색이니까 방을 배정하는 모든 경우의 수를 생각해보니 이렇게 7개 나왔다. 그래서 A,B,C 1개의 방만으로 배정하는 경우는 각 fo..

PS 2021.05.19

코드엔진 Basic RCE L03

문제 : 비주얼베이직에서 스트링 비교함수 이름은? 답 : vbaStrCmp 일단 프로그램을 그냥 실행시켜보았다. 그러면 이렇게 오류 메시지가 뜨고 프로그램이 실행이 안된다. 오류창을 보니 MSVBVM50.DLL 파일이 없어서 안된다고 하는것 같으니 일단 구글에 파일에 대해 검색해본다. https://boksbooks.tistory.com/67 라는 글을 보고 DLL누락 문제를 해결했다. DLL파일을 설치하고 다시 실행하니 이런 창이 뜬다. 사진 1은 외국어로 뭐라고 적혀있는데 문제에서도 나와있듯이 비밀번호를 입력하라는것 같다. 두번째창은 비밀번호를 입력하고 왼쪽 버튼을 눌러서 인증할수있다. 이제 프로그램이 어떻게 돌아가는지 알았으니 디버거로 열어본다. 일단 막막하다. 엔트리 포인트인 00401168에서 ..

코드엔진 Basic RCE L02

문제 : 패스워드로 인증하는 실행파일이 손상되어 실행이 안되는 문제가 생겼다. 패스워드가 무엇인지 분석하시오 답 : JK3FJZh 일단 평소대로 문제 파일을 실행해 보았다. 그랬는데 이상하게 이런 화면이 뜨며 앱을 실행할 수 없다고 한다. 평소에 문제파일은 항상 정상적으로 실행된다는 고정관념을 가졌던 나는 어? 문제 파일이 누락됐나? 라며 구글링을해서 헥스에디터로 열어야 한다는 것까지 확인후 나 스스로 풀어보았다. 참고 글 : https://jie0025.tistory.com/26 일단 헥스 에디터로 막연하게 파일을 열어 보았다. 그랬더니 무언가 잔뜩 떴다. OllyDbg로 리버싱을 하며 자주 봤던 것들이였다. 일단 비밀번호를 찾는 것이니 아무거나 얻어 걸려라는 마음으로 옆에 보이는 텍스트 부분을 죄다 ..

2021_04_10 윤리교육

이날은 윤리 교육이라 크게 중요한 개념이나 꼭 기억해야할 내용은 많지 않았다. 가장 중요한 것은 윤리의식이라는걸 기억하면 된다. 윤리교육때 대구소속 사이버수사관님께서 강의를 진행하셨는데 강의 중간중간에 질문 시간에 나온 질문 중 유익한 질문들을 따로 정리해두었다. 1. Q & A Q : 포렌식 관련 직종으로 진출시 리버싱에 대한 지식이 있을시 도움이 되는가? A : 리버싱 능력이 있으면 포렌식에 유리하다. 하지만 리버싱은 포렌식의 여러 분야 중 특히 악성코드 포렌식에서 주로 사용되므로 전체 포렌식을 커버하진 않는다. Q : 재판관련이나 사이버 수사대일을 하지 않아도EnCE가 도움이 되는가? 디지털포렌식 분야는아주 넓다. EnCE는 EnCase라는 툴을 사용하여 컴퓨터에서 무슨 일이 있었는지 추적하고 확인..

코드엔진 Basic RCE L01

문제 : HDD를 CD-Rom으로 인식시키기 위해서는 GetDriveTypeA의 리턴값이 무엇이 되어야 하는가 답 : 5 이 문제는 리버싱 과정 없이 사실 구글에 GetDriveTypeA라는 함수를 검색후 마이크로소프트 문서에서 CDROM일 경우의 리턴값을 찾아서 답을 입력해서 풀수도 있는 단순한 문제이다. 그러나 이렇게 문제를 푸는건 프로그램의 동작방식을 분석하는 방법이 아니므로 OllyDbg로 파일을 열고 분석해보았다. 일단 디버거로 분석하기전 그냥 프로그램을 실행해서 프로그램이 어떻게 동작하는지 살펴보았다. 처음에 1번 사진이 뜨고 자신이 나의 하드디스크를 CD-ROM으로 인식하게 만들라고 말한다. 확인을 누르면 CD-ROM이 아니라고 말하며 다시 확인을 누르면 프로그램이 종료된다. 프로그램의 동작..

리버싱 공부시 나와의 약속 (5~6월달)

일단 리버싱 입문을 1회독 했으니 리버싱 입문 도서를 복습하면서 매일 코드엔진 문제를 풀어야겠다. 1. 리버싱 입문 복습 일단 부록에 나오는 부분은 꼭 한번 보고 기억할건 기억해두자. 부록을 다 본 다음에는 01 - 1~3 , 02 - 1.7~1.8 , 02 - 2.3~2.6, 03 1.1 ~ 1.3, 03 - 2.2, 03 - 3.2~3.3 04 - 2 전체, 04 - 3 전체, 05 전체, 06 다 다시 해보기 , 07 전체 한번 더 읽기 정도로 복습한다. 2. 코드엔진 문제 풀기 하루에 최소 1문제 최대 3문제를 푼다. 문제를 풀때는 한문제당 40분 타이머를 맞추고 40분안에 풀지 못했다면 풀이를 보고 원리를 이해한다. 문제를 풀었다면 이 블로그에 풀이를 적고 풀지 못했다면 다른 분들의 풀이를 보고..

리버싱 2021.05.09

PS공부시 나와의 약속

잘못된 방법으로 방황하는 경우를 최대한 줄이기 위해 (이미 다른 코딩 공부할때 방황을 너무 많이 했다.) 나와의 약속을 여기 올려놓고 주기적으로 봐야겠다. 1. 한 문제를 푸는데 투자하는 시간 여러 조언과 블로그에서 말씀하시기를 "최소 30분이상 생각해보기 최대 2시간 넘기지 말기"라는 말을 정말 많이 본것 같다. 나도 성격이 급한 편이라 10분 ~ 15분정도 고민하고 안되면 뇌를 멈춰버리는데 그러지 않고 꼭 30분 이상 2시간 이하로 규제해야겠다. 2. 푼 문제를 맞았던 틀렸던 꼭 다른 분들 풀이와 코드를 보면서 원리 이해하기 이것도 타 블로그나 많은 분들이 강조해서 꼭 지켜야 겠다. 꼭 눈으로 보지 않아도 따라 쳐보고 VS에서 한단계씩 실행으로 헷갈리는 부분은 코드 1줄1줄수준으로 풀면 더 이해가 잘..

PS 2021.05.05

5월 목표

1. 매주 책 2권이상 읽고 독서 감상문 쓰기 읽어야할 책 리스트(중요도 순) : 역사 속의 소프트웨어 오류, 공대생도 잘 모르는 재미있는 공학 이야기, 공대생이 아니어도 쓸데있는 공학 이야기, 적분이 콩나물 사는데 무슨 도움이 돼?, 객관성의 칼날 이 5개 책들은 꼭 읽어야 겠다. 그리고 읽을때 무작정 소설 책 읽듯이 읽는게 아닌 이 책들은 생각을 하면서 읽어야 하는 책들이니 조금 생각을 하면서 읽어보아야겠다. 2. 코드엔진 Basic RCE단계 다 풀기 리버스 엔지니어링 책 한권을 읽었다고 끝난게 아니다. 읽고 내것으로 만들어야 한다. 책에 나온 레나 챌린지와 크랙미 예제들을 다시 풀어라고 하면 능숙하게 풀 자신은 없다. 이론과 방향성을 배운만큼 나 스스로 적용해보는 연습을 해보자. 3. 씹어먹는 C..

리버싱 입문_6장 지뢰찾기 게임

리버싱 시 팁들 비교구문을 잘 눈여겨 보자 예) CMP A,B 비교구문 실행 후 점프문 실행 전 제로 플래그를 바꾸어 가면서 결과의 변화를 통해 어떤 코드인지 예측해보자. CALL 구문을 눈여겨 보자 예) CALL 주소 어떤 서브루틴을 호출하는지 F7을 통해 스탭 인투로 로직을 살펴보기도 하면서 어떤 기능인지 알아보자. 리버싱은 디버거로 코드와 스택, 메모리에 있는 값을 관찰하면서 의미하는게 무엇인지 추측하고 프로그램을 반복적으로 실행하면서 추측이 맞는지 확인해야한다.