2024. 3. 5. 22:23ㆍInformation Security 정보보안/Reverse Engineering 리버스 엔지니어링
배울내용:
Crackme16_2.exe
Crackme16_2_unpacked.exe
어셈블리 변조하기
어셈블리 코드 분석
assembly code 분석
어셈블리어 명령어
Reversing Engineering
리버싱 엔지니어링 기초
Crackme16_2.exe 파일 분석하기
이번에는 위와같은 16_2 파일을 분석해볼것이다
당연히 아무 이름이나 비번입력하면 Wrong password! 라고 뜨는걸 볼수있다
search for >> All referenced text strings 로 성공메세지를 확인 보면 아래와 같다
Good Job =) 부분을 더블클릭해 뒤로 가보면
이부분에서 CMP 한뒤에 JMZ 해서 성공과 실패 메세지로 나뉜다
그럼 여기에 있는 EAX 값을 보면되는데 다시 ID 와 PW 를 입력해주자
Name 을 abcd 로 , Password를 1234 로해서 보자
당연히 안되지만 JMP 를 잘하면 아래처럼 성공메세지를
뛰울수있다
그러나 우리는 password 를 찾자고하면
abcd 바로 위에 있는게 비밀번호다
그 비밀번호는 3D723D97 이고 이걸 10 진수로 바꾸면
1030897047 이 비밀번호인걸 알수있다
이렇게 성공메세지를 변조하지 않고 password 를 찾아서 뛰울수가 있다
Crackme16_2_unpacked.exe 파일 분석하기
이번에는 PEID 라는 프로그램으로 unpacking 시켜야 OllyDBG에 올려서 제대로 볼수가있다
(packing 되어있으면 정보가 대부분 숨겨져있음)
그렇게 되면 Borland Delphi 4.0 - 5.0 이 나오는걸 볼수있는데
옛날에 Visual studio 나올때 같이 나온 유명한 프로그램 이라고 한다
OllyDBG로 돌아와 실행하면 아래와 같은 전자기기 처럼생긴 그림이 나온다
이것 저것 버튼 클릭하면 생기는 이벤트가 있을것같다서 이것저것 다 클릭해본다
그러면 왼쪽아래에 연두색 버튼을 클릭하면 위와 같이 뜬다
그리고 딱히 다른기능을 별로 없다
text 를 확인해보면 Label1.caption 부문에 엄청긴 ASCII 값이 들어가있는걸 볼수있다
이부분에서 F2 (Break Point ) 를 걸고
이 부분에서 다시 올라가보면
0045621E 에서 점프를 안 하는걸 볼수가있다
그러면 이번엔 그냥 점프를 시켜주면
아래처럼 보이게 된다
이때 부터 비밀번호를 입력하면 뭔가를 찾을수있을것 같다
비밀번호를 틀리면 옆에처럼 보이게 된다
그러면다시 search for >> All referenced text strings 에서 확인해보자
그러면 pig 라는게 보인다 이걸 다시 입력해보자
그래도 실패가 된다
다시 BreakPoint 를 걸고 하나하나 실행해보니 중간에
1번방향으로 계속 넘어가지 2번으로 넘어가지않아서 한번 JMP 를 줘서 바꿔봤다
그러면 성공적으로 성공메세지를 뛰울수있게된다
이번에는 다른것보다 몇개 트릭이 있었던 것 같다