2. Reversing (리버싱)/1) Write UP (51) 썸네일형 리스트형 [2021.05.22] CodeEngn Advanced / xcz.kr & 교재 7장 #CodeEngn advance L03 : Name이 CodeEngn 일때 Serial은 무엇인가 드디어 코드엔진 basic을 다 끝내고 어드밴스드로 넘어왔다... ! 순서대로 풀기보다는 잘 풀리는거 먼저 풀고 나머지를 차근차근 풀어보려고 한다. 시리얼 값을 구하는 문제였는데 이게 왜 어드밴스드에 있는지 모르겠는...너무 쉬운 문제였다. string 찾기로 보니 마지막에 있는것이 성공메세지인 것 같다. 이름과 시리얼을 입력하고 체크를 누르면 되는 것 같아서 name부분에 CodeEngn을 넣어주고 serial에 아무거나 넣어주었다. 이런 경고창이 나왔고 올리디버거에서 다시 살펴보았다. 그랬더니 1234를 3265754874와 비교하고 있는게 너무 잘보였던 문제였다. 위에서 나온 3265754874.. [2021.05.15] reversing.kr , suninatas, xcz & 교재 6장(dll), 8장 Reversing.kr – Easy Crack 다운 받은 파일을 실행시키면 하나의 입력을 받아 확인한다. 틀렸을 경우 ‘Incorrect Password’라는 메시지 박스가 나타난다. password를 알아내야 하는 문제이다. 디버거로 파일을 분석해본다. 메시지를 입력 받는 함수를 호출한 직후 cmp명령어를 통해 ‘a’와 내가 입력한 값이 저장된 주소의 2번째 글자와 비교하고 있다. 즉 2번째 글자는 ‘a’인 것을 알아냈다. 그 다음 [esp+A]에는 2번째 이후의 글자가 저장된 곳인데, 이 글자와 5y가 담긴 주소 ‘406078’를 함수에 인자로 넣어 비교한다. 즉, 3번째, 4번째 글자는 5y (_a5y) 분기문 통과! 그 다음은 보면 내가 입력한 5번째 글자부터 “R3versing”을 하나씩 차례차.. [2021.05.08] CodeEngn Basic 16~20 write-up / 교재 5,6장 # CodeEngn Basic 16 Name이 CodeEngn일때, Serial을 구하시오 성공실패 문구 근처에 가봄 EAX 값에는 우리가 입력한 임의의 값인 111의 16진수 값이 들어가 있었음 시리얼 값이 들어있을 EBP-3C 값을 찾아보도록 EBP란? - EBP : Pointer to data on the stack (in the SS segment) EBP는 함수가 호출되었을 때 그 순간의 ESP를 저장하고 있다가 함수가 리턴하기 직전에 다시 ESP에 값을 되돌려줘서 스택이 깨지지 않도록 합니다. (이것을 Stack Frame 기법이라고 하며, 리버싱에서 중요한 개념입니다.) 출처: https://asiatica-aramid.tistory.com/28 [Investigate and write! :.. [2021.05.01] CodeEngn 11-15 & 교재 4장 CodeEngn Basic RCE L11 하지만 여기 nop은 무조건 점프라서 노상관 OEP를 묻길래 혹시나 해서 Dump를 떠봤더니, 역시나 UPX 패킹되어 있었다. 언패킹 우선 처음 보이는 이 부분(00401000)이 OEP 일것이고, stolenbyte 여기여기 ^nop의 향연 12바이트나 훔쳐감.. 한줄씩 실행해봤을 때 메시지 박스가 이상하게 출력됨 이는 메시지 박스 내용이 어디 도망간 것으로 추측 ? 패킹하기 전에 프로그램을 실행해보면 이런 창이 나온다 이 문구를 불러와야하는데 그걸 훔쳐가서 문구가 깨진 것이다! 다시 언패킹하기 전의 디버깅, 여러 call을 bp 걸고 실행하다가 발견, 여기 push 0~ push 11.402012까지가 계산해보니까 딱 12바이트로, 이 부분을 복사해서 아까 훔.. [2021.03.27] CodeEngn Basic L08~L10 & 교재 3장 [Codeengn basic 8~10 풀이] 1.CodeEngn Basic RCE L08 #8 OEP를 구하시오 Ex)00400000 처음 실행 시 뜨는 화면 계산기인듯? 1+1 이런 연산들 계산 된다. OEP란? Original Entry Point : 패킹된 파일의 실제 프로그램 시작 부분 OEP 이전의 실행 부분은 패킹된 파일이 메모리에 로드되어 압축을 푸는 명령어가 들어 있음! 이게 그럼 압축되어있다는 소린가? 방법 1) 패킹하기 전 파일의 OEP : 01020C40 압축풀기 (55 -> 112 KB 변화) 패킹 후 OEP 01012475 어라라… 이게 답이네..? 방법 2) 맨처음 켠 곳의 맨 마지막 코드에 BP 걸고 내부로 들어가면 바로 처음이 OEP! 2. CodeEngn Basic RCE .. [2021.03.20] CodeEngn Basic L05-L07 & 교재 Chapter2 발표 #5 이 프로그램의 등록키는 무엇인가 우선 처음 프로그램을 실행하면 이렇게 나온다. 짠 처음에 갈피를 못잡다가, 다른 사람들 풀이를 보니 언패킹이라는 것을 해야한다고 함! 언패킹도구인 upx 사용 (깃에서 다운받고 환경변수 설정하고 실행) 언패킹하면 용량도 더 커지고 시작지점도 달라진다. 한 줄씩 실행해보면 요기서 실행됨. bp달고 코드 속에 들어가서 현재 모듈의 문자열 찾기를 해본다. 앞뒤 성공 실패 메세지 사이에 끼인 수상한 메세지 발견 실제로 문제를 풀어보면, 저게 정답 코드가 맞음을 알 수 있다! 패킹을 하는 이유 : 악성 행위로부터 자신을 보호하기 위해 단순히 실행파일의 크기를 줄이기 위해 압축하는 컴프레싱과는 다르게, 패킹은 프로그램 분석을 어렵게 만들기 위한 목적을 가지고 있다. (Prote.. [2021.03.13] CodeEngn Basic L01-L04 Codeengn Basic 01~04번 문제 풀이 네이버 사다리게임 사이트를 활용하여 각 문제 담당자를 정한 후 풀이 발표 진행 1번문항 : 이지혜 여기서 EAX는 종료되는 상횡에서 return 값을 저장하는 용도이다. 2번문항 : 유민서 CodeEngn - Basic RCE L02 - 패스워드로 인증하는 실행파일이 손상되어 실행이 안되는 문제가 생겼다. 패스워드가 무엇 인지 분석하시오 02.exe 파일을 실행해보면 앱을 실행할 수 없다고 나오고, 올리디버거로 열어도 알 수 없다는 오류가 뜬다. PE구조를 분석하기 위해 PEView를 다운받아서 실행시켜보았더니 실행파일 구조 자체에 결함이 있어서 실행할 수 없다고 판단할 수 있었다. 오른쪽 화면을 내리다 보면 you did it! 뒤에 알 수 없는 문자열.. [2020.11.28] Reversing.kr Challenge Music Player 라이트업 해당 뮤직 플레이어는 1분만 음악을 들을 수 있도록 제한되어있다. 1분 이상 들을 수 있도록 1분 체크 루틴을 수정해야한다. 해당 MP3 플레이어에 음악 파일을 실행시키면 1분까지만 실행되고 팝업창이 출력된다. 해당 프로그램의 모듈간의 호출을 찾아 rtcMsgBox 함수를 필터링하니 rtcMsgBox 함수가 네번 호출된 것을 알 수 있다. 4개의 함수 중 어떤 함수가 1분 제한 메시지를 띄우는 건지 알아내기 위해 4개의 함수에 BP를 설정한다. wav 파일을 넣고 1분간 실행하자 4045D8의 위치로 이동한다. 4045D8에 있는 rtcMsgBox 함수가 1분 제한 팝업창을 띄운다는 사실을 알 수 있다. 4045D8 위치로 이동하지 않게 코드를 수정해야 한다. 4045D8 주소에 도달하지 않기 위해서는 .. 이전 1 2 3 4 5 6 7 다음