실행파일에서는 Input Name, Input Serial을 입력받고 이를 CMP해서 Wrong 나 Correct이라는 메시지를 출력한다!!
입력 받은 문자열을 가져와서 하나씩 0x10, 0x20, 0x30과 차례로 XOR 연산을 진행하고 있다.
[ESP+ESI+C] 안에 있는 값을 갖고오고, [ESP+EBP+10]의 값을 가져온다
[ESP+ESI+C]에 0x10, [ESP+EBP+10]에는 사용자가 입력한 첫번째 값이 들어온다.
이제 그 둘을 xor 해준다~~~!!!!
그리고 ESI에 생성한 시리얼값을 저장하고, 입력받은 시리얼값과 비교해서 일치할 경우 "Correct!"를, 아니면 "Wrong"을 띄우는 곳으로 jmp한다.
플래그값을 얻어내기 위해, c 코드를 작성해보았다.
#include <stdio.h>
int main() {
char name[] = { 0x5B, 0x13, 0x49, 0x77, 0x13, 0x5E, 0x7D, 0x13 };
int x[] = { 0x10, 0x20, 0x30 };
int j = 0;
for (int i = 0; i < 8; i++) {
printf("%c", name[i] ^ x[j]);
j++;
i++;
printf("%c", name[i] ^ x[j]);
j++;
i++;
printf("%c", name[i] ^ x[j]);
j = 0;
}
printf("\n");
}
K3yg3nm3
'2023 리버싱' 카테고리의 다른 글
[Reversing.kr] easy elf (0) | 2023.05.28 |
---|---|
[Reversing.kr] easy unpack (0) | 2023.05.28 |
패킹과 언패킹 (0) | 2023.05.21 |
DLL, IAT, EAT 분석 (0) | 2023.05.13 |
notepad.exe pe 헤더 분석 (0) | 2023.04.30 |