Malware

Codegate2020 simple_machine

wsoh9812 2020. 8. 25. 20:48

이 부분이 주된 코드이다.

삽질을 하다보면 다음과같은 알고리즘?을 도출 해 낼 수 있다.

 

my_input_2byte + 0xb0bd == 0
my_input_2byte + 0xbabc == 0
my_input_2byte + 0xbeb9 == 0
my_input_2byte + 0xbaac == 0
my_input_2byte + 0xcfce == 0
(0x63f7 ^ my_input_2byte) + 0xf974 == 0
(0xa419 ^ my_input_2byte) + 0x2b9d == 0
(0xec2b ^ my_input_2byte) + 0x4caf == 0
(0x347d ^ my_input_2byte) + 0xbee1 == 0
(0x5c87 ^ my_input_2byte) + 0xfc0d == 0
(0xe589 ^ my_input_2byte) + 0x6e48 == 0
(0x2e9b ^ my_input_2byte) + 0xe03c == 0
(0x73ad ^ my_input_2byte) + 0xd322 == 0
(0x94f7 ^ my_input_2byte) + 0x1979 == 0
(0xbd19 ^ my_input_2byte) + 0x36d6 == 0
(0xc72b ^ my_input_2byte) + 0x40e8 == 0

(0x497d ^ my_input_2byte) + 0xcbf7 == 0

 

코드를 분석하면서 case4번에서 return 값이 0이 나와야되는것은 파악을 했지만 ,

 

"어떻게 역으로 이코드를 파이썬으로 뽑아낼까?"하는 쪽에서 시간이 꽤 걸렸다.

 

분석결과

참일때 ax가 0xffff이다.

 

대충 코드를 짜보면 다음과 같다.