[ReversingKr] Easy_CrackMe
by jennysgap분석
입력값이 틀렸을 때 나타나는 메세지 박스 문자열(Incorrect Password
)을 검색하면 sub_401080
함수를 찾을 수 있다.
해당 함수에서 자세히 봐야할 부분은 if문이다.
int __cdecl sub_401080(HWND hDlg)
{
CHAR String; // [esp+4h] [ebp-64h]
char v3; // [esp+5h] [ebp-63h]
char v4; // [esp+6h] [ebp-62h]
char v5; // [esp+8h] [ebp-60h]
__int16 v6; // [esp+65h] [ebp-3h]
char v7; // [esp+67h] [ebp-1h]
String = 0;
memset(&v3, 0, 0x60u);
v6 = 0;
v7 = 0;
GetDlgItemTextA(hDlg, 1000, &String, 100);
// 이 부분만 분석하면 정답을 알 수 있다!
if ( v3 != 'a' || strncmp(&v4, a5y, 2u) || strcmp(&v5, aR3versing) || String != 'E' )
return MessageBoxA(hDlg, aIncorrectPassw, Caption, 0x10u);
MessageBoxA(hDlg, Text, Caption, 0x40u);
return EndDialog(hDlg, 0);
}
if 문의 조건은 아래 4가지가 해당 됐을 때 정답 메세지 박스를 출력한다.
v3 != 'a'
strncmp(&v4, a5y, 2u)
strcmp(&v5, aR3versing)
String != 'E'
그렇다면 각 변수의 주소를 살펴보자.
String 주소는 ebp-64h, v3 주소는 ebp-63h이다.
즉, v3의 위치는 입력값의 2번째 문자라는 거다!
v4는 3번째 문자 위치
v5는 5번째 문자 위치
CHAR String; // [esp+4h] [ebp-64h]
char v3; // [esp+5h] [ebp-63h]
char v4; // [esp+6h] [ebp-62h]
char v5; // [esp+8h] [ebp-60h]
그럼 다시 조건으로 돌아와서 해석해보면 다음과 같다.
v3 != 'a' // 2번째 입력 문자는 a
strncmp(&v4, a5y, 2u) // 3번째 입력 문자는 5y
strcmp(&v5, aR3versing) // 5번째 입력 문자는 R3versing
String != 'E' // 1번째 입력 문자는 E
이것을 순서대 조합하면 Ea5yR3versing
문자열이 된다.
반응형
'BOX' 카테고리의 다른 글
[TetCTF 2021] WEB - HPNY (0) | 2021.01.05 |
---|---|
공개키 암호 방식(RSA) (0) | 2020.12.15 |
문화상품권 100% 당첨 이벤트!! (위즈랩 방탈출 게임 만들기) - 2020.06.09까지 (0) | 2020.05.21 |
[영어회화] 톡톡어학원 건대점 3개월 후기 (0) | 2020.01.06 |
제 1회 혼공 능력 시험 #혼공테 (0) | 2019.12.13 |
블로그의 정보
jennysgap
jennysgap