어셈블리어명령어
https://yejprogramming.tistory.com/44
레지스터, 스택과 어셈블리어 명령어
레지스터 레지스터 : cpu 내부 존재하는 다목적 저장 공간, CPU가 고속으로 데이터를 처리하는 것을 가능하게 한다. 메모리스택 : 중앙 처리 장치와 붙어 있는 RAM의 일부분 CPU(마이크로 프로세서)
yejprogramming.tistory.com
오늘 실습한 리버싱은 우회리버싱과 키 값 찾는 리버싱이었다.
우회리버싱은 코드 수정을 해야하지만 키값 찾기는 코드수정이 필요없다.
ollygdb에서 crackme 파일 오픈
[F9]으로 실행을 하여 이렇게 Error 창이 나오는 것을 확인.
[Ctrl + F2] 재시작
F2로 40100C에 BP(Break Point)를 걸어줌. (시작메시지 박스가 나오기 직전)
[F8]로 해당부분까지 실행 - 시작 메시지 박스 출력
[Spacebar]를 눌러 명령을 수정
JE -> JMP
코드창에서 마우스오른쪽버튼->Copy to executable -> All modifications->Copy all
해당 창에서 다시 오른쪽 마우스로 Save
파일 저장
만든 파일 실행
아까 Error창이 나온 것과는 다르게 이번에는 YEAH! 우회 성공!
======================================
다른 크랙 실습 파일을 오픈
MessageBox(출력함수) 찾아서 성공메시지(Success!), 실패메시지(Failed...ㅠㅠ) 확인
출력함수의 윗 부분(해당 스크린샷의 맨 윗부분)에서 CMP와 JMP 명령을 찾음
CMP 명령 밑에 있는 JLE 확인
JLE : 점프 명령어로, 앞의 값이 뒤의 값 보다 작거나 클 때 실행됨.
즉, 이 JLE 명령어가 실행되지 않는 경우 바로 밑에 있는 성공메시지가 출력될 것이라는 것을 확인할 수 있음.
저장 후 실행~
해주면 Success!
=============================
abexcm 파일 오픈
messagebox 찾아주기
이번에도 CMP, JMP 명령 찾음
call 명령어에서 BP설정
F9으로 실행 후 원하는 값 입력
push 명령어의 오른쪽 부분에서 입력값(000407)을 확인 가능하고,
그 밑에 있는 값은 입력값과 비교를 하는 값이므로 시리얼 값이라고 추측. 확인이 필요함
입력값은 00402324에, 시리얼값은 00402000 주소에 PUSH됨.
[ctrl+G]로 해당 주소로 가서 확인해보자.
시리얼 넘버 확인 가능
<<<캡쳐본 실종>>>
프로그램 실행 후 확인된 시리얼 넘버를 다시 제대로 입력하면
키값 찾기 성공!
=====================================
search for-all referenced strings에서 you failed 문자열 찾아서 더블클릭
키값찾기
'정보보안' 카테고리의 다른 글
인증 쿠키값 속이기 & 코드 품질 (1) | 2022.05.25 |
---|---|
[정보보안]웹해킹 (2) | 2022.05.04 |
레지스터, 스택과 어셈블리어 명령어 (3) | 2022.04.06 |