리버싱 (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개씩 비.. 이전 1 다음