본문 바로가기

리버싱

(6)
RVA to RWA 쉽게 계산하기 파일에서는 Offset로 위치를 표현하고 메모리에서는 address(VA) 로 위치를 표현하는데 위의사진에서는 파일과 메모리에서의 위치가 차이가난다. 그래서 메모리에서의 값을 확인한후 그위치를 수정하고자할때는 그위치의 Offset값을 구하여만 한다. ​ RAW = RVA - VirtualAddress(VA) + PointerToRawData ​ RAW은 파일에서의 주소 이다. RVA 는 메모리에서의 주소이다 VirtualAddress(VA) 은 메모리에서의 섹션시작위치이다. PointerToRawData 은 파일에서의 섹션 시작위치이다 위에서 RVA는 VA - ImageBase 로 구할수있는데 여기서 ImageBase 는 위에 사진에서의 메모리 시작 address를 보면 0부터 시작안하고 01000000..
[reversing.kr] Easy Crack 풀이 http://reversing.kr/index.php Reversing.Kr This site tests your ability to Cracking & Reverse Code Engineering. Now Challenge a problem for each environment. (Windows, Linux, .Net, Flash, Java, Python, Mobile..) Admin E-Mail: gogil @reversing.kr Notice 2014-12-12 New challenge 'CustomShell' was added. 2014-12-10 New challenge 'CRC2', 'Advent... reversing.kr ​ ​ 문제를 다운받아 실행해보았다. 시리얼값이 아닐때 나오는 메시지..
[리버싱] angstromctf 2018 리버싱 3번문제 https://2019.angstromctf.com/ 2019.angstromctf.com 2019.angstromctf.com ​ ​ 풀어볼 문제 ​ 끄덕 먼저 경로를 알려줬으니 경로로들어가서 실행시켜보자. ​ ​ ​ 일단 그냥 실행하니 라고하니 인자를 하나 넘겨서 진행한다는걸 알수있다. (왜 rev3 실행시켰는데 rev1 이라고뜨지) ​ 인자로 testabcd 를 넘겨보니 Oops, !! ​ 문제 다운 ​ 암호화나 컴파일 상태 확인 = gcc... ​ 일단 지금 저 프로그램안에는 Oops, 라는 실패문자열이있다는걸 알았으니 그 기준으로 IDA을 통해 분석 ​ ​ 내가 알고있는 문자열이 있으니 찾아가보자. ​ ​ 위의 이미지들을 보면 "egzloxi|ixw]dkSe]dzSzccShejSi^3q" 이 문..
[reversing.kr] Easy Keygen 풀이 http://reversing.kr/index.php Easy Keygen 풀이. 먼저 프로그램을 실행시켜보니 Name와 Serial값을 입력하는 프로그램이였다. ​ ​ 프로그램과 같이있던 메모장을 보니 Serial을 알려주고 이에 맞는 Name를 찾으라고하는걸보니 Name을 이용해서 Serial값을 만들어 낸다는것을 알수있다. ​ ​ 디버거를 이용해서 Name를 입력받는 곳으로 가보자. 진행할때는 시리얼값을 'ABCDEFG' 로 입력하였다. ​ ​ Input Name: 라는 문자가 보이는데 이제 Name를 입력 받기전에 ​ esp+10 ,+20 , +30 에다가 10,20,30 을 세팅하는 모습이 보이는데 이부분이 시리얼값을 만들어내는 키 같은 역활을한다. ​ ​ 이부분이 시리얼값을 만들어 내는 루팅과..
[코드엔진] basic 7 풀이 7번 문제 c드라이브 문제 설명대로 C 드라이브의 이름을 CodeEngn 으로 변경하였다. ​ 이제 실행해본다. ​ 시리얼값을 요구. 역시 아님. ​ 문자열 들 프로그램의 문자열들을 찾아보니 시리얼값 처럼 보이는게 많이나온다. ​ 일단 성공 문자열로 이동해보았다. 성공 문자열로 이동하여 쭉 돌려보니 ​ 처음에 L2C-5781 이라는 문자열을 쭉비교해보고 그다음 함수에서 EqfgEngn4562-ABEX 라는 문자열을 쭉비교하는 모습이 보였다. L2C-5781EqfgEngn4562-ABEX 그래서 그둘을 붙혀서 입력해보니 성공 처음에는 c드라이브 이름을 변경하지않고 그냥 실행시켰더니 키값이 L2C-5781 4562-ABEX 이였다. ​ 즉 c드라이브이름을 변경하여 나온 CodeEngn 은 EqfgEngn 으..
[코드엔진] basic 5 풀이 5번 문제 ​ 일단 실행. ​ 일단 입력. ​ ​ 당연하게 디버거로 올려봅시다. ​ ????? 아까본 문자열이 없다?? 혹시 패킹되어있는지 확인해봅시다. ​ 짜잔 UPX로 패킹되어있다. 풀어봅시다. ​ 언패킹 ​ 언패킹하여 풀어낸 모습. ​ 이제 디버거에 올려서 메시지로 보았던 문자열을 찾아서 이동해보자. 어우야.. 찾은 문자열에서 조금더 위로 올라가면 분기하는 부분들이나오는데 천천히 진행해본결과 문자열을 받아가는 함수 , 문자열을 입력했는지 확인하는 함수 , 1번시리얼과 2번시리얼을 비교하는 함수들이나오길래 ​ 시리얼을 위에칸만 입력하는게아니라 아래도 입력을 해야하는걸 알았다. ​ 결과적으로 직접입력한 시리얼값 aaaa1111와 Registered User 을 비교하는데 안에 자세히 들어가면 4개씩 비..