일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- codeengn basic 14
- codeengn 13
- 누구나 쉽게 즐기는 c언어 콘서트 개정판 14장 연습문제풀이
- java
- CodeEngn
- 누구나 쉽게 즐기는 c언어 콘서트 개정판 13장 연습문제풀이
- 누구나 쉽게 즐기는 c언어 콘서트 개정판 10장 연습문제
- 누구나 쉽게 즐기는 c언어 콘서트 개정판 14장 연습문제 답
- 누구나 쉽게 즐기는 c언어 콘서트 개정판 10장 연습문제 답
- covetknowledge
- 누구나 쉽게 즐기는 c언어 콘서트 개정판 13장 연습문제 답
- codeengn basic 15
- 누구나 쉽게 즐기는 c언어 콘서트 개정판 8장 연습문제
- 반복문
- 누구나 쉽게 즐기는 c언어 콘서트 개정판 13장 연습문제
- 누구나 쉽게 즐기는 c언어 콘서트 개정판 8장 연습문제 답
- StolenByte
- 프로그래밍 언어
- 누구나 쉽게 즐기는 c언어 콘서트 개정판 8장 연습문제풀이
- 리버싱
- OEP
- 누구나 쉽게 즐기는 c언어 콘서트 개정판 9장연습문제 답
- break
- 누구나 쉽게 즐기는 c언어 콘서트 개정판 14장 연습문제
- 조건문
- 누구나 쉽게 즐기는 c언어 콘서트 개정판 9장 연습문제
- upx 언패킹 명령어
- 누구나 쉽게 즐기는 c언어 콘서트 개정판 9장 연습문제풀이
- Reversing
- 누구나 쉽게 즐기는 c언어 콘서트 개정판 10장 연습문제풀이
- Today
- Total
목록리버싱 (23)
One's Knowledge

CodeEngn basic 15번Name이 CodeEngn일때 Serial을 구하시오패킹되어 있지는않다. 간단히 Name이랑 Serial써서 serial 맞추는거다.성공구문과 실패구문을 찾았다. 이동하겠다.분기점에 브포를 걸어두겠다. EAX랑 *(45B844)를 비교하는 것을 볼 수 있다.이때 레지스터를 보니 EAX에는 내가 넣은 1234가 들어가 있다.45B844에는 60610000으로 빅엔디언으로 바꾸면 00006160 즉 24928이다.다시 실행해보니 성공했다고 나온다.한번 45B844에 들어있는 6160이 어떻게 나왔는지 보자.분기점 위에 있는 함수들에 싹다 브포걸고 보겠다.첫번째 브포에 바로 바꼈다. 00458760함수에 45B844에 있는 serial 생성방법이 있다.가보자겁나 복잡하다. 새로..

CodeEngn basic 14번Name이 CodeEngn 일때 Serial을 구하시오 (이 문제는 정답이 여러개 나올 수 있는 문제이며 5개의 숫자로 되어있는 정답을 찾아야함, bruteforce 필요) Ex) 11111UPX로 패킹되어있다.언패킹하였다.Name이 CodeEngn일때 serial을 찾는거라 이렇게 해보았다.당연히 실패가 뜨고 성공구문과 실패구문이 있는것을 알았다.성공구문과 실패구문을 찾았고 분기점에 breakpoint를 걸었다. 보면 EAX랑 ESI를 비교한다.EAX에는 내가 serial로 넣은 0x1234가 있고, ESI에는 0x129A1이 있다.일단 정답은 0x129A1을 10진수로 바꿔 76193인것을 알수 있다쉽게 찾았다. 하지만 이대로는 아쉬우니 serial 생성원리를 알아보자..

CodeEngn basic 13번정답은 무엇인가Exeinfo PE로 보니 패킹은 안되어있고, C#으로 만들어진걸 볼수 있다.올리디버거로 열리지 않는다.찾아보니 C#으로 만들어진 실행 파일은 일반적으로 .NET 기반이며,기계어로 컴파일되지 않고 IL(Intermediate Language)로 구성된다.OllyDbg와 같은 네이티브 디버거로는 분석이 어렵고, dnSpy 같은 .NET 전용 디버거를 사용해야 한다고 한다.그래서 dnSpy 다운받고 열어보았다.dnSpy에서 F5는 실행, F10은 한줄씩 실행이다.F5로 실행하려고 하니 break at으로 Entry Point로 갈수있는듯 하다.코드를 보니 값을 입력받아 a에 담고 text랑 비교하는 것을 볼수 있다.text값이 RijndaelSimple 알고리즘..
용어의미Imagebase 메모리 로딩될때 기준이 되는 주소RVA메모리안에서의 상대주소(프로그램 실행시 위치)VA메모리의 절대주소 (Imagebase + RVA)RAW파일안에서의 주소(디스크상의 위치) => 파일 시작점 기준 상대 Offset, 전체 시스템에서 절대주소 X RVA를 통해 RAW를 파악 가능 (메모리의 위치를 통해 파일내의 위치를 파악 가능) RAW RVA 변환 공식RAW = RVA - Section.VirtualAddress + Section.PointerToRawData VirtualAddress_of_Section : 섹션이 메모리에 로드될 때 시작하는 위치 (RVA)PointerToRawData_of_Section : 섹션이 파일 내에서 시작하는 위치 (RAW offset) 변환..

스택 프레임 : 함수 호출시 생성되는 메모리 블록 프롤로그 : 함수 시작시 실행되는 코드 (스택 프레임 설정)에필로그 : 함수 종료시 실행되는 코드 (스택 프레임 해제) 함수호출코드push 매개변수 // 함수호출규약에 따라 다르지만 EBP+8부터 인수1, EBP+12 인수2...call 함수 (push return address) // call 함수 하면 함수가 끝나고 다음 주소를 push 프롤로그push EBP // 함수가 끝나고 EBP를 다시 이전 EBP로 돌려줘야하기 떄문에 백업MOV EBP, ESP ..

CodeEngn basic 12 Key를 구한 후 입력하게 되면 성공메시지를 볼 수 있다 이때 성공메시지 대신 Key값이 MessageBox에 출력 되도록 하려면 파일을 HexEdit로 오픈한 다음 0x???? ~ 0x???? 영역에 Key 값을 overwrite 하면 된다. 문제 : Key값과 + 주소영역을 찾으시오 Ex) 7777777???????? 간단하게 Key값을 찾으면 될 것 같다. 성공구문이 보인다. 저기로 가보겠다. 성공구문 윗부분에 분기점을 찾았다. EAX값과 7A2896BF를 비교하는 것을 볼 수 있다. 브레이크포인트를 걸고 실행하겠다. Key 값으로 123을 입력하겠다. 실행을 하니 EAX에 7B가 들어간 것을 볼 수 있다. 어셈블리어는 기본 16진수로 표현한다. 7B를 10진수로 하..