본문 바로가기

2. Reversing (리버싱)

(75)
[2021.09.25] CodeEngn Basic RCE L05, L06 풀이 코드엔진 5번 문제 이 프로그램의 등록키는 무엇인가 한줄씩 실행해보기 한줄씩 실행시켜보면 004412BC 주소에서 메시지 박스가 호출되는 것을 알 수 있다. 위에 칸에 123을 입력하고 아래 칸에 456을 입력해보았더니 잘못되었다는 메시지가 출력되었다. 그 다음줄 실행 다음줄을 실행하였더니 서브루틴함수로 들어가졌다. 코드가 끝인 것 같다. 그래서 오른쪽 마우스 클릭 -> Search for -> All referenced text strings 를 통해 이동해보겠다. All referenced text strings 실행시킨 상태 All referenced text strings 중에서 아까 오류메시지가 뜬 부분을 찾아 이동할 것이다. 더블클릭하면 그 부분 위치를 볼 수 있다. wrong Serial, ..
[2021.09.18] CodeEngn Basic RCE L03, L04 풀이 코드엔진 3 비주얼베이직에서 스트링 비교함수 이름은? 필요하다고 뜨는 dll을 설치하고 실행시켜보니 특정 창이 떴다. 확인 버튼을 누르니 뭔가 입력할 수 있는 창이 뜬다. 뭔가 입력해보니 error 창이 뜬다. 오른쪽 마우스 클릭 후 search for > all referenced text strings로 들어가 이 메시지 텍스트가 어디있는지 확인해보니 00402A69 에 있었다. 그리고 조금 위를 더 살펴보니 이 패스워드가 맞다고 하는 주소인 004028F5도 확인할 수 있었다. 그래서 어디서 성공메시지를 출력시키는지 따라가보니 다음과 같은 화면을 확인할 수 있었다. 살짝 위를 살펴보니 유니코드 2G83G35Hs2가 있었고. 그 다음줄에 vbaStrCmp라는 함수를 CALL한다는 사실을 알았다. 즉,..
[2021.09.18] abex crackme 1&2, 어셈블러 보호되어 있는 글입니다.
[2021.09.11] 리버싱을 위한 준비, codeengn basic 01 보호되어 있는 글입니다.
[2021.09.11] 코드 분석, PE FILE FORMAT 보호되어 있는 글입니다.
[ 2021.09.04 ] 01. 리버싱을 위한 기초 지식 1. 리버싱을 위한 프로그램 실행구조 컴퓨터의 구성 3요소 : CPU, 메모리, 하드디스크 실행파일 = PE파일 { 헤더 - 중요정보 저장 (기본정보와 { 보디 - 코드와 데이터 저장 배치정보를 담고있음) 로더가 헤더의 중요정보를 분석하고 보디에 있는 코드와 데이터들을 메모리에 배치한다. 메모리 - 코드 영역 : 프로그래 코드 저장 - 데이터 영역 : 정적 변수, 전역 변수 - 스택 영억 : 매개 변수, 지역 변수 - 히프 영역 : 동적 메모리 할당 코드 영역과 데이터 영역은 프로그램 로딩시 사용되고 스택 영역과 히프영역은 프로그램 실행시 사용된다. C언어는 MAIN()함수부터 프로그램을 실행하는 것처럼 PE 파일은 엔트리 포인트 위치부터 프로그램을 실행한다. 명령어 실행 : CPU에 있는 제어장치, 연..
[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”을 하나씩 차례차..