2024. 3. 1. 14:45ㆍInformation Security 정보보안/Reverse Engineering 리버스 엔지니어링
배울내용:
Crackme6.exe
Crackme7.exe
어셈블리 변조하기
어셈블리 코드 분석
assembly code 분석
레지스터
Register
어셈블리어 명령어
Reversing Engineering
리버싱 엔지니어링 기초
Crackme06.exe 파일 분석하기
우리가 여태까지 성공메세지까지는 가기가 쉬웠다
Crackme06.exe 도 이전에 배웠던 방식과 똑같이 하게 되면
이렇게 틀린 비밀번호를 쳐도 성공메세지를 뛰울수가있다
그러면 비밀번호가 도데체 어디에있을까?
이부분을 보면 LEA EAX, [EBP-4] 를 받게 되고
그값이 결국 7F97E56C 라는 값하고 비교한뒤에 같으면 성공메세지를 뛰우는거고
실패하면 실패메세지로 보내게든다 그러면 7F97E56C 를 그냥 프로그래머용 계산기로 확인해보면
이값이 10 진수로 바꾸게 되면 2140661100 이란걸 알수있다
그리고 기존에 실행파일을 실행시키고 비밀번호를 넣으면
이렇게 비밀번호를 성공적으로 변조없이 성공메시지를 뛰울수가있다
Crackme07.exe 파일 분석하기
Crackme07.exe를 실행했을때 위와같은 창이뜨고 이름과 Serial 을 넣고 Check 를 하면 성공메세지를 뛰워주는것 같다
이번에도 기존에 똑같은 방법으로 성공메세지를 뛰우려고했으나
이번 문제에는 search for >> All referenced text string 에 아래처럼 아무것도 안보이게 된다
그러면 이번엔 search for >> intermoduler calls 에서 함수로 비교하는걸 찾아보자
성공메세지를 뛰울려면 어떤값을 확인해야하기떄문에 비교를 할것이다 그러면
cmp (compare) 라는 단어가 들어간 함수를 찾으면 뭔가있을것같다.
다행히도 1개의 vbaVarCmpEq 라는게 있고 Initial CPU selection 이 실행되는듯하다
그부분에 F2 로 Breakpoint로 잡고 한번실행해본다
그럼당연히 여기에서 멈추는데 이 함수가 실행하기전에 ECX 에 어떤값이 들어오고 그값이 레지스터에도
보인다 그값이 "41504641" 라는걸 알수있고 그다음에 vbaVarCmpEq 함수가 실행되는걸로봐 뭔가 관련있을것같다
한번다시 실행해서 Serial에 저값을 넣어보면
이렇게 Registered! 라는문구가뜨면서 성공한 메세지가 뜨는것 같다.
아마 Name에 다른값을 넣어도 Serial이 바뀌는것같다
꼭 정답이 41504641 이 아니니 Name 따라 Serial이 틀려지니 Name에 맞게 Serial 값을 넣어주면 될것같다