Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 엔케이스
- 악성코드
- 레가
- 레지스트리포렌식
- Music_Player
- forensic
- Reversing
- 고려대학원
- encase
- 사이버수사과
- U's room
- 이디스커버리
- 디지털포렌식
- 서호전
- 역연산
- 리버싱
- reversing.kr
- e-discovery
- 리버싱엔지니어링
- 서울호서직업전문학교
- 악성코드분석
- 사이버수사
- KDFS2022 #KDFS2023 #학생트랙 #멤버모집 #포공학 #포렌식 #디지털포렌식 #범인을찾아라 #DFC #포렌식대회 #보고서 #학생트랙보고서
- REGA
- 포렌식 #안티포렌식 #레지스트리 #거부권한 #깃허브 #Forensics #forensic #anti-forensic #anti-forenscis #컴퓨터 #사이버수사 #수사관 #KDFS
- x64dbg
- http://reversing.kr/
- Opentext
- 악성코드 분석
- 포렌식
Archives
- Today
- Total
DDDDigtal 4ensics
레나 튜토리얼 - 03 풀이 본문
이번 문제 풀이는 2개의 메시지박스( [이미지 1], [이미지 3] )를 삭제하는 미션이다.
기드라로 문제 를 연다면, [이미지 4]와 같이 나올 것 이며, 해당 프로그램의 메인 코드는 다음과 같다.
void entry(void)
{
UINT uExitCode;
DAT_0040311c = GetModuleHandleA((LPCSTR)0x0);
if (DAT_0040311c != (HMODULE)0x0) {
MessageBoxA((HWND)0x0,s_Remove_the_nags_to_register_This_00403034,s_Register_Me_0040307d,0);
}
FUN_00401052(DAT_0040311c);
uExitCode = MessageBoxA((HWND)0x0,s_Oops!_I_am_not_registered_!!_00403089,s_Register_Me_0040307d,0
);
/* WARNING: Subroutine does not return */
ExitProcess(uExitCode);
}
이번 문제는 파일의 코드 패치를 요구하는 문제이다. 올리디버거, dbgx64와 같은 툴 보다 기드라라는 나도 익숙하지 않은 툴을 쓴다는게 조금 불편했던 그런 문제이다.
일단 GetModuleHandleA를 이용하여 파일의 핸들을 가져온다. 성공할 시 [이미지 1]의 메세지 박스를 띄운다. 이 코드는 [이미지 5]와 같은 어셈브리로 나타나는데, 이 때 JZ(0일 경우 점프)를 JMP(무조건 점프)로 패치하면 삭제할 수 있다.
기드라에서 코드 패치는 Ctrl + Shift + G로 할 수 있다.
[이미지 6]과 같이 파일의 JZ를 JMP로 수정함으로 써, 해당 메세지박스의 호출을 피할 수 있다.
후 [이미지 7]과 같이 코드 브라우저가 수정된 것을 볼 수 있는데, 이제 uExitCode에 대하여 코드를 수정해야한다. 이는
[이미지 8]의 영역을 NOP처리함으로 써, 해당 메시지 박스를 지울 수 있다.
후 file export를 하면 원하는 결과를 얻을 수 있다.
'Reversing' 카테고리의 다른 글
레나 튜토리얼 - 04 풀이 (0) | 2024.02.15 |
---|---|
레나 튜토리얼 - 01 풀이 (1) | 2024.02.12 |
[Reversing.kr] Music_Player 문제풀이 (0) | 2023.05.05 |
[Reversing.kr] Easy Keygen 문제풀이 (0) | 2023.05.02 |
[Reversing.kr] Easy_CrackMe 문제풀이 (1) | 2023.04.30 |