본문 바로가기
SMALL

hacking/reversing4

reversing.kr : Replace reversing.kr의 Replace를 풀어보았다. 일단 이 프로그램은 입력을 받고 맞는 값과 비교해서 Wrong이 옳은 값으로 된다는 것을 느낄 수 있다. 그리고 아무 값이나 넣어봤을때, 그냥 프로그램이 꺼졌다. 그래서 x32 dbg로 프로그램을 확인하였다. user32부분에서 DialogBoxParamA부터 EndDialog까지 사용된다. 여기서 GetDigItemInt 에서 사용자로부터 입력받는 부분임을 알 수 있다. 그래서 이부분에 break point를 걸었다. 그리고 그 함수 부분으로 가보니 입력한 값을 0x4084D0 부분에다가 넣는다는 것을 알 수 있다. 또한 성공하였을 시에 Wrong 부분이 Correct!로 바뀜을 확인할 수 있다. 그리고 correct문으로 가기위해서는 jmp구간을 .. 2020. 2. 19.
reversing.kr : musicPlayer reversing.kr의 music player 를 풀어 보았다. 우선 문제의 힌트 이다. 실행 파일은 mp3를 넣으면 1분 미리듣기가 가능하다. 이제 이것을 다뤄 보겠다. debuger를 사용하여 메인함수 진입 구간을 발견하였다. F8로 따라가다가 또 함수 진입 구간 발견 디버거 돌리던 중에 1분 미리듣기끝난경우다. 이걸 보자마자, 번뜩 떠올랐다. 문자열 참조!! 우선 1분 미리듣기가 검색이 안되어서 01:00을 찾았다. 하지만! , 이 것으로는 정답을 찾지 못하였다. 다음으로 생각해볼 것은 메세지 박스 호출 발견해서 모두 breakpoint 걸어준다 그리고 모두 메세지 호출 못하도록 메세지 박스 위쪽의 점프문을 모두 점프로 바꿔준다. 저 위에 cmp eax,EA60 부분은 시간 비교 구문이다. 이 것.. 2020. 2. 6.
reversing.kr : Easy UnpackMe Read Me 내용 읽어보니 OEP를 찾는 문제입니다. //OEP : Original Entry Point 만약 파일이 packing이 되면 OEP가 바뀌게 됩니다. 그래서 원래 OEP를 찾으라는 것 같습니다. 실행하면 아무런 반응이 없습니다. 이런? Detect 프로그램을 이용하여 패킹되어있는지 확인합니다. 하지만 packing이 되어있지 않습니다. tool을 사용해서 unpacking하는 문제는 아닌 것같습니다. 그럼 디버거로 직접 찾아야겠죠..? 일단 debuger로 뜯어 보기로 합니다. 일단 디버거로 열어서, 문자열 참조도 안되고 호출도 모르겠습니다. 그래서 F8을 무작정 따라가 봤습니다. 위와 같은 반복문 구간이 보입니다. 일단 반복문 아래에 break point를 걸고 다음으로 넘겼습니다. 반.. 2020. 2. 5.
codeengn : crackme 1 예제 1번 풀이. 예제 1번은 정말 간단하지만 어려운 문제 GetDriveType의 리턴 값이 EAX에 저장되고 EAX-2 , ESI +3 후 둘이 비교해서 같으면 오류 문을 건너뛰는 루틴임을 알 수 있다. (EAX : 1, ESI : 3) 정말 간단한 풀이로는 그냥 00401026 번지의 내용을 JE -> JMP로 수정 후 크랙파일로 저장하면 된다. 혹은 책에 나왔듯이 Zero flag를 1로 수정해주면 된다. 어려운 풀이 - GetDriveType 함수를 구글링 해보면 리턴 값이 3 이면 하드디스크, 리턴값이 5이면 CD-ROM이다. 그리고 위에 루틴을 비교했을 시 EAX - 2 , ESI + 3 --> 5 - 2 == 0 + 3 이므로 따라서 GetDriveType의 리턴 값을 5로 수정해주면 된다.. 2020. 2. 4.
반응형
LIST