본문 바로가기

Security/Reversing27

Abex crackme #5 틀린 부분이 있다면 언제든지 댓글 남겨주세요! Abex crackme #5 문제 풀이 이 프로그램은 델파이로 만들어져 있으며 실행해보면 시리얼넘버를 입력하라는 메시지창이 뜬다. 알맞은 시리얼 넘버를 입력하면 오른쪽과 같이 Well Done! 메시지창이 뜨고 잘못된 시리얼 넘버를 입력하면 왼쪽과 같이 Error! 메시지창이 뜬다. 단순히 문제해결만 하는 것은 간단하다. 앞선 문제에서 했던 것처럼 Found Intermodular call에서 MessageBox함수의 위치를 찾아 정답 문자열을 출력하는 부분부터 값을 찾아 나가면 된다. JE명령어에 따라 EAX가 0이어야 정답 메시지를 출력하는 부분으로 점프함을 알 수 있다. * Jump Equal=비교하는 값이 같으면 ZF=1, ZF가 1일 때 jump동작.. 2021. 2. 7.
Abex crackme #4 틀린 부분이 있다면 언제든지 댓글 남겨주세요! Abex crackme #4 문제 풀이 이 프로그램을 실행시키면 시리얼번호를 입력하는 칸이 있고 register버튼이 비활성화 되어있다. 분석을 통해 알맞은 번호를 찾아 입력하여 register버튼이 활성화 되도록 하는 것이 이번 문제의 핵심이다. 지금 상태에서는 정답 메시지도 확인할 수 없기 때문에 힌트를 찾기 힘들다. 이럴 땐 API검색을 사용한다. 알맞은 시리얼 번호를 찾으려면 비교 함수를 사용할 것이므로 API중 비교함수를 찾는다. [코드화면 > 오른쪽 마우스 > search for > all intermodular calls] 원하는 API에서 엔터키를 누르면 그 코드로 이동하며, API에서 바로 BP를 걸 수도 있다. * visual basic으로.. 2021. 2. 7.
Abex crackme #3 틀린 부분이 있다면 언제든지 댓글 남겨주세요! Abex crackme #3 문제 풀이 이 예제는 일련번호를 담은 파일을 생성하는 것을 목적으로 하는 프로그램이다. 우선 어떤 파일명으로 생성할 것인지를 알아내고 그 파일을 정해진 규칙에 맞도록 변경해야 한다. 그냥 프로그램을 실행시켰을 때에는 ‘Click OK to check for the keyfile.’ 이라는 메시지가 뜨고 확인을 누르면 ‘Hmmmmm, I can’t find the file!’ 이라는 Error 메시지가 뜬다. 디버거에서 해당 프로그램을 열면 문자열을 따로 찾을 필요도 없이 엔트리 포인트 아래로 찾아야 할 문자열들을 확인할 수 있다. Step over(F8)을 통해 실행 과정을 보면 시작 메시지가 뜨고 확인을 누르면 CreateFil.. 2021. 2. 7.
PEB TEB 보호되어 있는 글 입니다. 2021. 2. 2.
Abex crackme #2 / ollydbg 단축키 틀린 부분이 있다면 언제든지 댓글 남겨주세요! Abex crackme #2 문제 풀이 이 예제는 사용자가 입력한 이름과 관련 있는 일련번호를 찾아내는 것을 목적으로 하는 프로그램이다. 우선 프로그램을 실행해보면 0x00401238 (entry point)에서 멈췄다가 다시 F9로 실행하면 메인 함수인 ThunRTMain함수에서 실행이 멈추고 다음과 같은 메시지 창을 띄운다. 메시지 창에 값을 입력했을 때 나오는 결과는 크게 3가지로 보인다. 일련번호 오답, 정답, 이름 길이 부족. 프로그램의 길이가 길어 처음부터 살펴보기 어려울 땐 프로그램을 실행시켰을 때 뜨는 메시지에 포함된 문자열을 검색해서 그 부분부터 확인하는 방법을 사용하면 좋다. ollydbg에서는 search for > all referenc.. 2021. 1. 25.
Reversing Basic Challenge #1 틀린 부분이 있다면 언제든지 댓글 남겨주세요! Dreamhack 워게임 rev-basic-1 dreamhack.io/wargame/challenges/15/ rev-basic-1 Reversing Basic Challenge #1 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출 dreamhack.io Reversing Basic Challenge #0 문제와 거의 동일하다. main함수 확인 결과 256길이의 문자열을 입력받아 비교하는 기능을 한다. sub_7FF616683228 함수를 자세히 확인해본다. 문자열의 문자를 하나씩 비교하는 함수이다. 각 문자를 조합해보면 .. 2020. 12. 20.
Reversing Basic Challenge #0 틀린 부분이 있다면 언제든지 댓글 남겨주세요! Dreamhack 워게임 rev-basic-0 dreamhack.io/wargame/challenges/14/writeups rev-basic-0 Reversing Basic Challenge #0 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출 dreamhack.io 우선 어떤 동작을 하는 파일인지 확인하기 위해 x64dbg를 통해 열어 모듈분석을 하고 main함수를 찾는다. 256자 이내의 문자열을 받아 맞는지 아닌지 확인하는 것으로 추측된다. sub_7FF7523A1190 함수가 'Input: '문자열을 print, s.. 2020. 12. 19.
x64dbg 기본 사용법 틀린 부분이 있다면 언제든지 댓글 남겨주세요! x64dbg에서 기본 사용법 및 main함수 찾기, easy_crackme1.exe 파일 분석 기본 사용법 따라가기 기능 - call, jmp, jcc와 같은 PC변경 명령어는 [enter] 키를 이용하여 이동 - mov, lea와 같은 주소 참조 명령어는 해당 주소 > 오른쪽 마우스 > 디스어셈블러에서 따라가기 혹은 덤프에서 따라가기 레이블 및 주석 달기 - 레이블 :함수나 변수, 즉 해당 주소에 이름을 붙임 [:] 키를 이용하여 지정 - 주석 :해당 주소에 설명을 붙임 [;] 키를 이용하여 지정 그래프로 보기 - 보고자 하는 함수에서 오른쪽 마우스 > 그래프 보기 혹은 [g] 키 - 빠져나갈 땐 오른쪽 마우스 > Follow in Disassembler .. 2020. 12. 17.
레지스터 명령어 틀린 부분이 있다면 언제든지 댓글 남겨주세요! 리버싱 기초 - 레지스터 기본 명령어 Opcode (명령어) [명령어] dst, src Data Movement - mov: src의 값을 dst로 옮김 (길이가 반드시 일치해야 함 WORD-WORD, BYTE-BYTE) * MOVSX(부호o), MOVZX(부호x)는 길이가 달라도 가능 (BYTE-WORD, WORD-DWORD) 0비트로 채움 - lea: src의 주소를 dst에 저장 Arithmetic Operations - inc / dec: dst의 값을 1 증가/감소 = ++dst / --dst - neg: dst의 값의 부호를 바꿈 (2의 보수) = -dst - not: dst의 값의 비트를 반전 = ~dst - add / sub / imul / i.. 2020. 12. 1.
728x90
반응형