Reverse Engineering DAY_014 Crackme10.exe, Crackme11.exe, Crackme12.exe, 어셈블리 변조하기, 어셈블리 코드 분석, assembly code 분석, 어셈블리어 명령어, Reversing Engineering, 리버싱 엔지니어링 기초

2024. 3. 2. 16:14Information Security 정보보안/Reverse Engineering 리버스 엔지니어링

728x90

배울내용:

Crackme10.exe

Crackme11.exe

Crackme12.exe

어셈블리 변조하기 

어셈블리 코드 분석

assembly code 분석 

어셈블리어 명령어 

Reversing Engineering 

리버싱 엔지니어링 기초

 

 

 

 

 

 

 

Crackme09.exe 는 08과 똑같은 방법으로 풀수있다

그럼으로 바로 Crackme10.exe 로 넘어가보자 

 

 

 

 

 

 

Crackme10.exe 파일 분석하기  

 

 

 

 

 

 

 

 

 

 

 

이번에도 이전시간과 똑같이

JNZ 가되있던걸 JMP 로 실패메세지가 아닌 성공메세지로 이동시켜주자 

 

 

 

실행을 해보면 아무것도 실행이 안되는걸 볼수있다

 

그래서 변조를 안하고 실행을 해봤더니 여전히 프로그램이 실행이 안되는걸 볼수있다

 

그래서 F8 을 눌러서 하나하나 진행상황을 본뒤에 어떤 부분에서 변조가 필요한지 확인한다

 

 

 

 

보니 401008 부분에 한번에 ExitProcess 로 넘어가는게 보여서 이부분을 JNE 를 JE로 바꾸거나 바로 위 401005 값을 

변조해서 JNZ가 바로 밑으로 이동시킬수있게 EAX 값을 바꿔주면 된다 

 

 

 

 

이걸 변조하고 실행하면 아래처럼 프로그램이 실행이된다 

 

 

 

 

 

 

이제 이때부터 찾아서 성공메세지를 뛰워주는걸 해봐야하지만

 

 

 

성공메세지로 보이는걸로 이동시키는걸 변조하고 전체실행시켜 이부분으로 보내주려해도 그냥 프로그램이 종료된다 

 

 

 

 

 

 

 

그대신 여기에서 0E(14) 자리를 비교하여 성공메세지를 간다는건 확인헀다

 

그러면 비밀번호는 14 자리라는걸 알수있다 

한번 비밀번호를 입력해보자 

 

 

 

 

그리고 나서 한번더 확인해봤더니

 

 

 

1111.. 위에 무엇인가 똑같은 글씨의 개수로 표시가 됐다 

아마 저게 비밀번호이지 않을까 생각이든다 한번 저 비밀번호대로 입력해보자 

 

 

 

 

 

 

그랬더니 이번에는 "Right number!!" 라는 문구가 뜨면서 성공메세지가 뜨는걸 확인할수있다

이번시간에는 간단한 부분이지만 이전에 썻던 방법과는 다른방법인걸 알수있다 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Crackme11.exe 파일 분석하기  

 

 

 

 

 

 

이번에는 바로 실행이 되지만 이렇게 뜬다 

 

 

 

 

 

 

 

 

String Text 에 성공메세지가 있는지를 봐도 없어서 뛰울지 감이 안잡힌다 

 

 

 

 

 

그래도  함수들중 CMP있는지 봤더니 vbaStrCmp 라는게 있다

여길 자세히 보자

 

 

 

 

 

 

F2 로 이부분에서 멈추게한뒤에 변하는게 있는지 확인해본다

 

 

그러면 

 

 

 

 

Stack Window 에 677345 라는게 뜬걸 확인할수있다 

이부분을 더 자세히보니

 

 

 

1234 를 넣었을때 저렇게 나오는걸 보니 저걸 비교한것 같다

 

우리는 이걸 이미 이전시간에 Register Window 에서 값이 바뀐걸 봤고

이번에는 Stack Window에 값이 보이는걸 한번 해봤다 

 

 

 

갚을 넣었을때 이렇게 Code Window 만보는게 아니라 다른 화면도 동시에 봐야한다 

그래야 A 에 없는게 B 에서 찾을수가 있을것같다 

 

 

 그럼한번 입력해보면 아래처럼보이게 된다 

 

Bien 을 몰라서 검색해보니 

"Bien"은 스페인어나 프랑스어로는 "잘", "좋은"이라는 뜻으로도 사용될 수 있다고한다

또한, "bien"은 프랑스어에서는 "잘", "매우"를 강조하는 부사로도 사용된다고 한다.

 

아마 성공한것 같다 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Crackme12.exe 파일 분석하기  

이번문제는 다소 허무할수있다 

 

 

 

 

 

 

Crackme12.exe 를 실행하면 이렇게 3 개의 창이 뜨면서 꺼진다

 

 

 

 

 

String 으로 봐도 없는걸로봐 3번째 창에 title 부분에 Remove Me! 이부분에서 뭔가를 없애줘야할것같다

 

 

 

 

 

 

코드가 길지않아서 금방 보인다 3 부분으로 출력되는게 보이는데 그중 젤 마지막에 있는 걸 없애주면 되는데  USER32.MessageBox 이부분이 실행되면 메세지를 뛰우니 저걸 JMP 로 옮겨주면 될것같다 

 

 

 

 

 

그러면 앞에 2개가 뜨고 종료된다

 

그럼 끝이란다. (나도 풀이 뒤져보고 다른해석이 있지않을까? 생각했지만 정답이 NagNag의 크기인 19byte에 ExitProcess 가 정답이란다) 

 

 

728x90