히공

코드엔진 - basic 18 본문

reverse engineering/CodeEngn

코드엔진 - basic 18

heegong 2020. 10. 17. 17:53
728x90

18번을 풀어보겠습니다.

 

 

 

 

 

이러한 문제입니다.

 

 

 

 

 

실행화면 입니다. 

 

 

 

 

 

 

check를 눌러보았습니다.

 

 

 

 

 

 

 

 

x32dbg에서 문자열을 찾아보았습니다.

 

 

2번째를 더블클릭해서 봐봅시다.

 

 

 

 

 

 

 

 

cmp eax,5 를 하고나서

eax가 5미만인지 체크합니다.

 

 

 

 

 

 

https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getdlgitemtexta

구글에 msdn GetDlgItemTextA

이라고 쳐서 return값을 알아보았습니다.

 

한마디로 문자열의 길이를 반환해줍니다.

 

 

 

 

 

 

 

bp를 걸고 실행해봅시다.

 

 

 

 

 

 

 

check를 눌러줍니다.

 

 

 

 

 

 

 

 

4076F0이 Name입니다.

 

 

 

 

 

 

 

 

분기점 입니다.

 

 

 

보면 제가 입력한 abcd와 1879321517CE7930를 strcmp로 비교하는것을 볼 수 있습니다.

 

 

 

 

 

 

 

Check를 눌러보겠습니다.

 

 

 

 

 

잘뜹니다.

 

 

 

같은방법으로 CodeEngn을때 Serial을 구해봅시다.

 

 

 

 

 

 

 

 

 

입력해줍니다.

 

 

 

 

 

 

06162370056B6AC0하고 입력한 비번인 1234하고 비교합니다.

 

 

 

 

 

 

 

 

정답입니다.

 

 

 

 

 

 

++

시리얼 루틴 구현입니다.

def dword_return(ls,num):
    return int(''.join(ls[num*4:num*4+4][::-1]),16)
 
 
def dword(num):
    return num & 0xffffffff
 
 
def ah(num):
    num = hex(num)[2:]
    if len(num)<=2:
        return 0
    return int(num[-4:-2],16)
 
 
def al(num):
    return num & 0xff
 
 
def bytepass(num):
    hex_num = hex(num)[2:]
    hex_num = (8-len(hex_num))*'0'+hex_num
    ls = []
    for i in range(0,len(hex_num),2):
        ls.append(int(hex_num[i:i+2],16))
    return ls
 
 
 
def del_0x_hex(num):
    return hex(num)[2:]
 
 
 
 
Name = input("Name : ")
 
dword_409E00 = [0x67452301,0xEFCDAB89,0x98BADCFE,0x10325476]
 
 
 
dword_408DB8 = "A6 0B 31 D1 AC B5 DF 98 DB 72 FD 2F B7 DF 1A D0 ED AF E1 B8 96 7E 26 6A 45 90 7C BA 99 7F 2C F1 47 99 A1 24 F7 6C 91 B3 E2 F2 01 08 16 FC 8E 85 D8 20 69 63 69 4E 57 71 A3 FE 58 A4 7E 3D 93 F4 8F 74 95 0D 58 B6 8E 72 58 CD 8B 71 EE 4A 15 82 1D A4 54 7B B5 59 5A C2 39 D5 30 9C 13 60 F2 2A 23 B0 D1 C5 F0 85 60 28 18 79 41 CA EF 38 DB B8 B0 DC 79 8E 0E 18 3A 60 8B 0E 9E 6C 3E 8A 1E B0 C1 77 15 D7 27 4B 31 BD DA 2F AF 78 60 5C 60 55 F3 25 55 E6 94 AB 55 AA 62 98 48 57 40 14 E8 63 6A 39 CA 55 B6 10 AB 2A 34 5C CC B4 CE E8 41 11 AF 86 54 A1 93 E9 72 7C 11 14 EE B3 2A BC 6F 63 5D C5 A9 2B F6 31 18 74 16 3E 5C CE 1E 93 87 9B 33 BA D6 AF 5C CF 24 6C 81 53 32 7A 77 86 95 28 98 48 8F 3B AF B9 4B 6B 1B E8 BF C4 93 21 28 66 CC 09 D8 61 91 A9 21 FB 60 AC 7C 48 32 80 EC 5D 5D 5D 84 EF B1 75 85 E9 02 23 26 DC 88 1B 65 EB 81 3E 89 23 C5 AC 96 D3 F3 6F 6D 0F 39 42 F4 83 82 44 0B 2E 04 20 84 A4 4A F0 C8 69 5E 9B 1F 9E 42 68 C6 21 9A 6C E9 F6 61 9C 0C 67 F0 88 D3 AB D2 A0 51 6A 68 2F 54 D8 28 A7 0F 96 A3 33 51 AB 6C 0B EF 6E E4 3B 7A 13 50 F0 3B BA 98 2A FB 7E 1D 65 F1 A1 76 01 AF 39 3E 59 CA 66 88 0E 43 82 19 86 EE 8C B4 9F 6F 45 C3 A5 84 7D BE 5E 8B 3B D8 75 6F E0 73 20 C1 85 9F 44 1A 40 A6 6A C1 56 62 AA D3 4E 06 77 3F 36 72 DF FE 1B 3D 02 9B 42 24 D7 D0 37 48 12 0A D0 D3 EA 0F DB 9B C0 F1 49 C9 72 53 07 7B 1B 99 80 D8 79 D4 25 F7 DE E8 F6 1A 50 FE E3 3B 4C 79 B6 BD E0 6C 97 BA 06 C0 04 B6 4F A9 C1 C4 60 9F 40 C2 9E 5C 5E 63 24 6A 19 AF 6F FB 68 B5 53 6C 3E EB B2 39 13 6F EC 52 3B 1F 51 FC 6D 2C 95 30 9B 44 45 81 CC 09 BD 5E AF 04 D0 E3 BE FD 4A 33 DE 07 28 0F 66 B3 4B 2E 19 57 A8 CB C0 0F 74 C8 45 39 5F 0B D2 DB FB D3 B9 BD C0 79 55 0A 32 60 1A C6 00 A1 D6 79 72 2C 40 FE 25 9F 67 CC A3 1F FB F8 E9 A5 8E F8 22 32 DB DF 16 75 3C 15 6B 61 FD C8 1E 50 2F AB 52 05 AD FA B5 3D 32 60 87 23 FD 48 7B 31 53 82 DF 00 3E BB 57 5C 9E A0 8C 6F CA 2E 56 87 1A DB 69 17 DF F6 A8 42 D5 C3 FF 7E 28 C6 32 67 AC 73 55 4F 8C B0 27 5B 69 C8 58 CA BB 5D A3 FF E1 A0 11 F0 B8 98 3D FA 10 B8 83 21 FD 6C B5 FC 4A 5B D3 D1 2D 79 E4 53 9A 65 45 F8 B6 BC 49 8E D2 90 97 FB 4B DA F2 DD E1 33 7E CB A4 41 13 FB 62 E8 C6 E4 CE DA CA 20 EF 01 4C 77 36 FE 9E 7E D0 B4 1F F1 2B 4D DA DB 95 98 91 90 AE 71 8E AD EA A0 D5 93 6B D0 D1 8E D0 E0 25 C7 AF 2F 5B 3C 8E B7 94 75 8E FB E2 F6 8F 64 2B 12 F2 12 B8 88 88 1C F0 0D 90 A0 5E AD 4F 1C C3 8F 68 91 F1 CF D1 AD C1 A8 B3 18 22 2F 2F 77 17 0E BE FE 2D 75 EA A1 1F 02 8B 0F CC A0 E5 E8 74 6F B5 D6 F3 AC 18 99 E2 89 CE E0 4F A8 B4 B7 E0 13 FD 81 3B C4 7C D9 A8 AD D2 66 A2 5F 16 05 77 95 80 14 73 CC 93 77 14 1A 21 65 20 AD E6 86 FA B5 77 F5 42 54 C7 CF 35 9D FB 0C AF CD EB A0 89 3E 7B D3 1B 41 D6 49 7E 1E AE 2D 0E 25 00 5E B3 71 20 BB 00 68 22 AF E0 B8 57 9B 36 64 24 1E B9 09 F0 1D 91 63 55 AA A6 DF 59 89 43 C1 78 7F 53 5A D9 A2 5B 7D 20 C5 B9 E5 02 76 03 26 83 A9 CF 95 62 68 19 C8 11 41 4A 73 4E CA 2D 47 B3 4A A9 14 7B 52 00 51 1B 15 29 53 9A 3F 57 0F D6 E4 C6 9B BC 76 A4 60 2B 00 74 E6 81 B5 6F BA 08 1F E9 1B 57 6B EC 96 F2 15 D9 0D 2A 21 65 63 B6 B6 F9 B9 E7 2E 05 34 FF 64 56 85 C5 5D 2D B0 53 A1 8F 9F A9 99 47 BA 08 6A 07 85 6E E9 70 7A 4B 44 29 B3 B5 2E 09 75 DB 23 26 19 C4 B0 A6 6E AD 7D DF A7 49 B8 60 EE 9C 66 B2 ED 8F 71 8C AA EC FF 17 9A 69 6C 52 64 56 E1 9E B1 C2 A5 02 36 19 29 4C 09 75 40 13 59 A0 3E 3A 18 E4 9A 98 54 3F 65 9D 42 5B D6 E4 8F 6B D6 3F F7 99 07 9C D2 A1 F5 30 E8 EF E6 38 2D 4D C1 5D 25 F0 86 20 DD 4C 26 EB 70 84 C6 E9 82 63 5E CC 1E 02 3F 6B 68 09 C9 EF BA 3E 14 18 97 3C A1 70 6A 6B 84 35 7F 68 86 E2 A0 52 05 53 9C B7 37 07 50 AA 1C 84 07 3E 5C AE DE 7F EC 44 7D 8E B8 F2 16 57 37 DA 3A B0 0D 0C 50 F0 04 1F 1C F0 FF B3 00 02 1A F5 0C AE B2 74 B5 3C 58 7A 83 25 BD 21 09 DC F9 13 91 D1 F6 2F A9 7C 73 47 32 94 01 47 F5 22 81 E5 E5 3A DC DA C2 37 34 76 B5 C8 A7 DD F3 9A 46 61 44 A9 0E 03 D0 0F 3E C7 C8 EC 41 1E 75 A4 99 CD 38 E2 2F 0E EA 3B A1 BB 80 32 31 B3 3E 18 38 8B 54 4E 08 B9 6D 4F 03 0D 42 6F BF 04 0A F6 90 12 B8 2C 79 7C 97 24 72 B0 79 56 AF 89 AF BC 1F 77 9A DE 10 08 93 D9 12 AE 8B B3 2E 3F CF DC 1F 72 12 55 24 71 6B 2E E6 DD 1A 50 87 CD 84 9F 18 47 58 7A 17 DA 08 74 BC 9A 9F BC 8C 7D 4B E9 3A EC 7A EC FA 1D 85 DB 66 43 09 63 D2 C3 64 C4 47 18 1C EF 08 D9 15 32 37 3B 43 DD 16 BA C2 24 43 4D A1 12 51 C4 65 2A 02 00 94 50 DD E4 3A 13 9E F8 DF 71 55 4E 31 10 D6 77 AC 81 9B 19 11 5F F1 56 35 04 6B C7 A3 D7 3B 18 11 3C 09 A5 24 59 ED E6 8F F2 FA FB F1 97 2C BF BA 9E 6E 3C 15 1E 70 45 E3 86 B1 6F E9 EA 0A 5E 0E 86 B3 2A 3E 5A 1C E7 1F 77 FA 06 3D 4E B9 DC 65 29 0F 1D E7 99 D6 89 3E 80 25 C8 66 52 78 C9 4C 2E 6A B3 10 9C BA 0E 15 C6 78 EA E2 94 53 3C FC A5 F4 2D 0A 1E A7 4E F7 F2 3D 2B 1D 36 0F 26 39 19 60 79 C2 19 08 A7 23 52 B6 12 13 F7 6E FE AD EB 66 1F C3 EA 95 45 BC E3 83 C8 7B A6 D1 37 7F B1 28 FF 8C 01 EF DD 32 C3 A5 5A 6C BE 85 21 58 65 02 98 AB 68 0F A5 CE EE 3B 95 2F DB AD 7D EF 2A 84 2F 6E 5B 28 B6 21 15 70 61 07 29 75 47 DD EC 10 15 9F 61 30 A8 CC 13 96 BD 61 EB 1E FE 34 03 CF 63 03 AA 90 5C 73 B5 39 A2 70 4C 0B 9E 9E D5 14 DE AA CB BC 86 CC EE A7 2C 62 60 AB 5C AB 9C 6E 84 F3 B2 AF 1E 8B 64 CA F0 BD 19 B9 69 23 A0 50 BB 5A 65 32 5A 68 40 B3 B4 2A 3C D5 E9 9E 31 F7 B8 21 C0 19 0B 54 9B 99 A0 5F 87 7E 99 F7 95 A8 7D 3D 62 9A 88 37 F8 77 2D E3 97 5F 93 ED 11 81 12 68 16 29 88 35 0E D6 1F E6 C7 A1 DF DE 96 99 BA 58 78 A5 84 F5 57 63 72 22 1B FF C3 83 9B 96 46 C2 1A EB 0A B3 CD 54 30 2E 53 E4 48 D9 8F 28 31 BC 6D EF F2 EB 58 EA FF C6 34 61 ED 28 FE 73 3C 7C EE D9 14 4A 5D E3 B7 64 E8 14 5D 10 42 E0 13 3E 20 B6 E2 EE 45 EA AB AA A3 15 4F 6C DB D0 4F CB FA 42 F4 42 C7 B5 BB 6A EF 1D 3B 4F 65 05 21 CD 41 9E 79 1E D8 C7 4D 85 86 6A 47 4B E4 50 62 81 3D F2 A1 62 CF 46 26 8D 5B A0 83 88 FC A3 B6 C7 C1 C3 24 15 7F 92 74 CB 69 0B 8A 84 47 85 B2 92 56 00 BF 5B 09 9D 48 19 AD 74 B1 62 14 00 0E 82 23 2A 8D 42 58 EA F5 55 0C 3E F4 AD 1D 61 70 3F 23 92 F0 72 33 41 7E 93 8D F1 EC 5F D6 DB 3B 22 6C 59 37 DE 7C 60 74 EE CB A7 F2 85 40 6E 32 77 CE 84 80 07 A6 9E 50 F8 19 55 D8 EF E8 35 97 D9 61 AA A7 69 A9 C2 06 0C C5 FC AB 04 5A DC CA 0B 80 2E 7A 44 9E 84 34 45 C3 05 67 D5 FD C9 9E 1E 0E D3 DB 73 DB CD 88 55 10 79 DA 5F 67 40 43 67 E3 65 34 C4 C5 D8 38 3E 71 9E F8 28 3D 20 FF 6D F1 E7 21 3E 15 4A 3D B0 8F 2B 9F E3 E6 F7 AD 83 DB 68 5A 3D E9 F7 40 81 94 1C 26 4C F6 34 29 69 94 F7 20 15 41 F7 D4 02 76 2E 6B F4 BC 68 00 A2 D4 71 24 08 D4 6A F4 20 33 B7 D4 B7 43 AF 61 00 50 2E F6 39 1E 46 45 24 97 74 4F 21 14 40 88 8B BF 1D FC 95 4D AF 91 B5 96 D3 DD F4 70 45 2F A0 66 EC 09 BC BF 85 97 BD 03 D0 6D AC 7F 04 85 CB 31 B3 27 EB 96 41 39 FD 55 E6 47 25 DA 9A 0A CA AB 25 78 50 28 F4 29 04 53 DA 86 2C 0A FB 6D B6 E9 62 14 DC 68 00 69 48 D7 A4 C0 0E 68 EE 8D A1 27 A2 FE 3F 4F 8C AD 87 E8 06 E0 8C B5 B6 D6 F4 7A 7C 1E CE AA EC 5F 37 D3 99 A3 78 CE 42 2A 6B 40 35 9E FE 20 B9 85 F3 D9 AB D7 39 EE 8B 4E 12 3B F7 FA C9 1D 56 18 6D 4B 31 66 A3 26 B2 97 E3 EA 74 FA 6E 3A 32 43 5B DD F7 E7 41 68 FB 20 78 CA 4E F5 0A FB 97 B3 FE D8 AC 56 40 45 27 95 48 BA 3A 3A 53 55 87 8D 83 20 B7 A9 6B FE 4B 95 96 D0 BC 67 A8 55 58 9A 15 A1 63 29 A9 CC 33 DB E1 99 56 4A 2A A6 F9 25 31 3F 1C 7E F4 5E 7C 31 29 90 02 E8 F8 FD 70 2F 27 04 5C 15 BB 80 E3 2C 28 05 48 15 C1 95 22 6D C6 E4 3F 13 C1 48 DC 86 0F C7 EE C9 F9 07 0F 1F 04 41 A4 79 47 40 17 6E 88 5D EB 51 5F 32 D1 C0 9B D5 8F C1 BC F2 64 35 11 41 34 78 7B 25 60 9C 2A 60 A3 E8 F8 DF 1B 6C 63 1F C2 B4 12 0E 9E 32 E1 02 D1 4F 66 AF 15 81 D1 CA E0 95 23 6B E1 92 3E 33 62 0B 24 3B 22 B9 BE EE 0E A2 B2 85 99 0D BA E6 8C 0C 72 DE 28 F7 A2 2D 45 78 12 D0 FD 94 B7 95 62 08 7D 64 F0 F5 CC E7 6F A3 49 54 FA 48 7D 87 27 FD 9D C3 1E 8D 3E F3 41 63 47 0A 74 FF 2E 99 AB 6E 6F 3A 37 FD F8 F4 60 DC 12 A8 F8 DD EB A1 4C E1 1B 99 0D 6B 6E DB 10 55 7B C6 37 2C 67 6D 3B D4 65 27 04 E8 D0 DC C7 0D 29 F1 A3 FF 00 CC 92 0F 39 B5 0B ED 0F 69 FB 9F 7B 66 9C 7D DB CE 0B CF 91 A0 A3 5E 15 D9 88 2F 13 BB 24 AD 5B 51 BF 79 94 7B EB D6 3B 76 B3 2E 39 37 79 59 11 CC 97 E2 26 80 2D 31 2E F4 A7 AD 42 68 3B 2B 6A C6 CC 4C 75 12 1C F1 2E 78 37 42 12 6A E7 51 92 B7 E6 BB A1 06 50 63 FB 4B 18 10 6B 1A FA ED CA 11 D8 BD 25 3D C9 C3 E1 E2 59 16 42 44 86 13 12 0A 6E EC 0C D9 2A EA AB D5 4E 67 AF 64 5F A8 86 DA 88 E9 BF BE FE C3 E4 64 57 80 BC 9D 86 C0 F7 F0 F8 7B 78 60 4D 60 03 60 46 83 FD D1 B0 1F 38 F6 04 AE 45 77 CC FC 36 D7 33 6B 42 83 71 AB 1E F0 87 41 80 B0 5F 5E 00 3C BE 57 A0 77 24 AE E8 BD 99 42 46 55 61 2E 58 BF 8F F4 58 4E A2 FD DD F2 38 EF 74 F4 C2 BD 89 87 C3 F9 66 53 74 8E B3 C8 55 F2 75 B4 B9 D9 FC 46 61 26 EB 7A 84 DF 1D 8B 79 0E 6A 84 E2 95 5F 91 8E 59 6E 46 70 57 B4 20 91 55 D5 8C 4C DE 02 C9 E1 AC 0B B9 D0 05 82 BB 48 62 A8 11 9E A9 74 75 B6 19 7F B7 09 DC A9 E0 A1 09 2D 66 33 46 32 C4 02 1F 5A E8 8C BE F0 09 25 A0 99 4A 10 FE 6E 1D 1D 3D B9 1A DF A4 A5 0B 0F F2 86 A1 69 F1 68 28 83 DA B7 DC FE 06 39 57 9B CE E2 A1 52 7F CD 4F 01 5E 11 50 FA 83 06 A7 C4 B5 02 A0 27 D0 E6 0D 27 8C F8 9A 41 86 3F 77 06 4C 60 C3 B5 06 A8 61 28 7A 17 F0 E0 86 F5 C0 AA 58 60 00 62 7D DC 30 D7 9E E6 11 63 EA 38 23 94 DD C2 53 34 16 C2 C2 56 EE CB BB DE B6 BC 90 A1 7D FC EB 76 1D 59 CE 09 E4 05 6F 88 01 7C 4B 3D 0A 72 39 24 7C 92 7C 5F 72 E3 86 B9 9D 4D 72 B4 5B C1 1A FC B8 9E D3 78 55 54 ED B5 A5 FC 08 D3 7C 3D D8 C4 0F AD 4D 5E EF 50 1E F8 E6 61 B1 D9 14 85 A2 3C 13 51 6C E7 C7 D5 6F C4 4E E1 56 CE BF 2A 36 37 C8 C6 DD 34 32 9A D7 12 82 63 92 8E FA 0E 67 E0 00 60 40 37 CE 39 3A CF F5 FA D3 37 77 C2 AB 1B 2D C5 5A 9E 67 B0 5C 42 37 A3 4F 40 27 82 D3 BE 9B BC 99 9D 8E 11 D5 15 73 0F BF 7E 1C 2D D6 7B C4 00 C7 6B 1B 8C B7 45 90 A1 21 BE B1 6E B2 B4 6E 36 6A 2F AB 48 57 79 6E 94 BC D2 76 A3 C6 C8 C2 49 65 EE F8 0F 53 7D DE 8D 46 1D 0A 73 D5 C6 4D D0 4C DB BB 39 29 50 46 BA A9 E8 26 95 AC 04 E3 5E BE F0 D5 FA A1 9A 51 2D 6A E2 8C EF 63 22 EE 86 9A B8 C2 89 C0 F6 2E 24 43 AA 03 1E A5 A4 D0 F2 9C BA 61 C0 83 4D 6A E9 9B 50 15 E5 8F D6 5B 64 BA F9 A2 26 28 E1 3A 3A A7 86 95 A9 4B E9 62 55 EF D3 EF 2F C7 DA F7 52 F7 69 6F 04 3F 59 0A FA 77 15 A9 E4 80 01 86 B0 87 AD E6 09 9B 93 E5 3E 3B 5A FD 90 E9 97 D7 34 9E D9 B7 F0 2C 51 8B 2B 02 3A AC D5 96 7D A6 7D 01 D6 3E CF D1 28 2D 7D 7C CF 25 9F 1F 9B B8 F2 AD 72 B4 D6 5A 4C F5 88 5A 71 AC 29 E0 E6 A5 19 E0 FD AC B0 47 9B FA 93 ED 8D C4 D3 E8 CC 57 3B 28 29 66 D5 F8 28 2E 13 79 91 01 5F 78 55 60 75 ED 44 0E 96 F7 8C 5E D3 E3 D4 6D 05 15 BA 6D F4 88 25 61 A1 03 BD F0 64 05 15 9E EB C3 A2 57 90 3C EC 1A 27 97 2A 07 3A A9 9B 6D 3F 1B F5 21 63 1E FB 66 9C F5 19 F3 DC 26 28 D9 33 75 F5 FD 55 B1 82 34 56 03 BB 3C BA 8A 11 77 51 28 F8 D9 0A C2 67 51 CC AB 5F 92 AD CC 51 17 E8 4D 8E DC 30 38 62 58 9D 37 91 F9 20 93 C2 90 7A EA CE 7B 3E FB 64 CE 21 51 32 BE 4F 77 7E E3 B6 A8 46 3D 29 C3 69 53 DE 48 80 E6 13 64 10 08 AE A2 24 B2 6D DD FD 2D 85 69 66 21 07 09 0A 46 9A B3 DD C0 45 64 CF DE 6C 58 AE C8 20 1C DD F7 BE 5B 40 8D 58 1B 7F 01 D2 CC BB E3 B4 6B 7E 6A A2 DD 45 FF 59 3A 44 0A 35 3E D5 CD B4 BC A8 CE EA 72 BB 84 64 FA AE 12 66 8D 47 6F 3C BF 63 E4 9B D2 9E 5D 2F 54 1B 77 C2 AE 70 63 4E F6 8D 0D 0E 74 57 13 5B E7 71 16 72 F8 5D 7D 53 AF 08 CB 40 40 CC E2 B4 4E 6A 46 D2 34 84 AF 15 01 28 04 B0 E1 1D 3A 98 95 B4 9F B8 06 48 A0 6E CE 82 3B 3F 6F 82 AB 20 35 4B 1D 1A 01 F8 27 72 27 B1 60 15 61 DC 3F 93 E7 2B 79 3A BB BD 25 45 34 E1 39 88 A0 4B 79 CE 51 B7 C9 32 2F C9 BA 1F A0 7E C8 1C E0 F6 D1 C7 BC C3 11 01 CF C7 AA E8 A1 49 87 90 1A 9A BD 4F D4 CB DE DA D0 38 DA 0A D5 2A C3 39 03 67 36 91 C6 7C 31 F9 8D 4F 2B B1 E0 B7 59 9E F7 3A BB F5 43 FF 19 D5 F2 9C 45 D9 27 2C 22 97 BF 2A FC E6 15 71 FC 91 0F 25 15 94 9B 61 93 E5 FA EB 9C B6 CE 59 64 A8 C2 D1 A8 BA 12 5E 07 C1 B6 0C 6A 05 E3 65 50 D2 10 42 A4 03 CB 0E 6E EC E0 3B DB 98 16 BE A0 98 4C 64 E9 78 32 32 95 1F 9F DF 92 D3 E0 2B 34 A0 D3 1E F2 71 89 41 74 0A 1B 8C 34 A3 4B 20 71 BE C5 D8 32 76 C3 8D 9F 35 DF 2E 2F 99 9B 47 6F 0B E6 1D F1 E3 0F 54 DA 4C E5 91 D8 DA 1E CF 79 62 CE 6F 7E 3E CD 66 B1 18 16 05 1D 2C FD C5 D2 8F 84 99 22 FB F6 57 F3 23 F5 23 76 32 A6 31 35 A8 93 02 CD CC 56 62 81 F0 AC B5 EB 75 5A 97 36 16 6E CC 73 D2 88 92 62 96 DE D0 49 B9 81 1B 90 50 4C 14 56 C6 71 BD C7 C6 E6 0A 14 7A 32 06 D0 E1 45 9A 7B F2 C3 FD 53 AA C9 00 0F A8 62 E2 BF 25 BB F6 D2 BD 35 05 69 12 71 22 02 04 B2 7C CF CB B6 2B 9C 76 CD C0 3E 11 53 D3 E3 40 16 60 BD AB 38 F0 AD 47 25 9C 20 38 BA 76 CE 46 F7 C5 A1 AF 77 60 60 75 20 4E FE CB 85 D8 8D E8 8A B0 F9 AA 7A 7E AA F9 4C 5C C2 48 19 8C 8A FB 02 E4 6A C3 01 F9 E1 EB D6 69 F8 D4 90 A0 DE 5C A6 2D 25 09 3F 9F E6 08 C2 32 61 4E B7 5B E2 77 CE E3 DF 8F 57 E6 72 C3 3A"
dword_408DB8 = dword_408DB8.split(' ')
 
 
dword_4091B8 = dword_408DB8[0x400:]
dword_4095B8 = dword_4091B8[0x400:]
dword_4099B8 = dword_4095B8[0x400:]
 
 
 
# 0x404058 함수
qu = ''
for i in range(4):
    qu += del_0x_hex(ord(Name[i]))
 
eax = int(qu,16)
 
qu = ''
for i in Name[4:]:
    qu += del_0x_hex(ord(i))
 
edx = qu+(8-len(qu))*'0'
edx = edx[:8]
edx = int(edx,16)
 
 
 
ecx = 0
 
while ecx!=0x10:
    
    edi = eax >> 0x18                           # sar 연산
    esi = eax >> 0x10
    esi = esi & 0xff                            # byte로 맞추기
 
 
    ebx = dword_return(dword_408DB8,edi)
    ebx += dword_return(dword_4091B8,esi)
    ebx = dword(ebx)                            # 4바이트 맞춰주기
 
 
    esi = al(eax)
    edi = ah(eax)
    
 
 
    ebx = ebx ^ dword_return(dword_4095B8,edi)
    ebx += dword_return(dword_4099B8,esi)
    ebx = dword(ebx)
    ebx = ebx ^ edx
 
    edx = eax
    eax = ebx & 0xffffffff
 
 
    ecx+=1
 
 
 
dword_4088F0 = []
dword_4088F0.extend(bytepass(edx))
dword_4088F0.extend(bytepass(eax))
 
 
 
v3 = len(Name)
 
dword_4088F0.extend((v3-len(dword_4088F0))*[0])
 
dword_408AF0 = ''
 
for i in range(v3):
    v6 = ((((dword_4088F0[i] >> 4) & 0xF) < 0xA)
        + ((dword_4088F0[i] >> 4) & 0xF)
        - 8 * (((dword_4088F0[i] >> 4) & 0xF) < 0xA)
        + 55) | ((((dword_4088F0[i] & 0xF) < 0xA) + (dword_4088F0[i] & 0xF) - 8 * ((dword_4088F0[i] & 0xF) < 0xA) + 55) << 8);
    i+=1
 
    hex_v6 = del_0x_hex(v6)
    dword_408AF0 += chr(int(hex_v6[2:],16))+chr(int(hex_v6[:2],16))         # 리틀엔디안
 
v4 = v3*2       # 위 for문 리턴값    
 
 
 
# for문 시작
 
 
asm_404768 = "55 8B EC 56 57 53 8B 5D 0C 8B 75 08 01 1D 10 9E 40 00 EB 40 A1 14 9E 40 00 B9 40 00 00 00 2B C8 8D B8 C0 9D 40 00 3B CB 77 1E 2B D9 F3 A4 E8 B5 F9 FF FF 33 C0 A3 14 9E 40 00 BF C0 9D 40 00 B9 10 00 00 00 F3 AB EB 0C 8B CB F3 A4 01 1D 14 9E 40 00 EB 04 0B DB 75 BC 5B 5F 5E C9 C2 08 00 90 56 57 8B 0D 14 9E 40 00 C6 81 C0 9D 40 00 80 83 F9 38 72 18 E8 6F F9 FF FF 33 C0 A3 14 9E 40 00 BF C0 9D 40 00 B9 10 00 00 00 F3 AB A1 10 9E 40 00 33 D2 0F A4 C2 03 C1 E0 03 A3 F8 9D 40 00 89 15 FC 9D 40 00 E8 3E F9 FF FF B8 00 9E 40 00 5F 5E C3 CC CC CC CC CC CC 55 8B EC 57 56 53 8B 5D 0C 8B 7D 10 85 DB 8B 75 08 74 36 0F B6 06 8B C8 83 C7 02 C1 E9 04 83 E0 0F 83 E1 0F 83 F8 0A 1B D2 83 D0 00 8D 44 D0 37 83 F9 0A 1B D2 83 D1 00 C1 E0 08 8D 4C D1 37 0B C1 46 66 89 47 FE 4B 75 CA 8B C7 C6 07 00 2B 45 10 5B 5E 5F C9 C2 0C".split(' ')
 
v11 = int(f"5245{asm_404768[v4]}",16)
LOBYTE_important = dword_4088F0[0] & 0xff
 
 
 
fir_hex = del_0x_hex(dword(dword(0x407AF0 * (v11+LOBYTE_important))+v11)).upper()
fir_hex = (8-len(fir_hex))*'0'+fir_hex
 
sec_hex = del_0x_hex(dword(0x407AF0 * (v11+LOBYTE_important)) - 5796720).upper()
sec_hex = (8-len(sec_hex))*'0'+sec_hex
 
result = fir_hex+sec_hex
 
 
 
print(f"\n\n{Name}의 Serial : {result}\n\n")

 

 

 

 

 

 

 

 

 

 

정답 : 06162370056B6AC0

'reverse engineering > CodeEngn' 카테고리의 다른 글

코드엔진 - basic 20  (0) 2020.10.19
코드엔진 - basic 19  (0) 2020.10.18
코드엔진 - basic 17  (2) 2020.10.10
코드엔진 - basic 16  (0) 2020.10.05
코드엔진 - basic 15  (0) 2020.10.04
Comments