핵심은 이 부분.
이 루프에서 XOR ECX, EDX연산을 하면서 Serial을 생성하게 된다.
특이하게 ECX가 루프마다 변하는데,
10, 20, 30을 반복한다.
일단 문제에서 5B 13 49 77 13 5E 7D 13라는 시리얼을 얻을 수 있는데,
내가 입력한 글자당 두 자리의 숫자가 생성된다.
따라서, Name의 길이는 총 8글자이다.
따라서 해당 루프도 8번을 돌아야 하므로,
ECX는 10 20 30 10 20 30 10 20 순서대로 변하게 된다.
XOR연산을 한 값이 Serial이 되어야 하므로 xor 역연산을 하면 Name을 얻을 수 있다.
즉.. 아래를 계산하면 된다.
0x5b xor 0x10
0x13 xor 0x20
0x49 xor 0x30
0x77 xor 0x10
0x13 xor 0x20
0x5E xor 0x30
0x7D xor 0x10
0x13 xor 0x20
성공.
***저 함수 내부의 스위치문을 분석해보고 추가할 것
'Reversing' 카테고리의 다른 글
[reversing.kr] Music Player (0) | 2020.04.16 |
---|---|
[reversing.kr] Easy Unpack (0) | 2020.04.13 |
[reversing.kr] Easy Crack (0) | 2020.04.06 |
[코드엔진] Malware Analysis 05 (0) | 2020.04.02 |
[코드엔진] Malware Analysis 04 (0) | 2020.04.02 |