프롬프트 = 코드 인데
코드 레벨 난독화가 들어갈거라 실행되기 전까진 알 수가 없음.
특정 트리거가 코드 내에서 엄청 복잡하게 실행되어서 어떤 값이 나올수도 안 나올수도 있게 만들거임.
진정한 의미의 떡밥 숨기기가 가능할 예정.
| AI로 난독화를 풀면 나오는 것 | 실제 코드 |
| FUNCTION CheckFlags(flags): val1 = ((flags * 7744) XOR 9720) MOD 99668 obf_key_1 = (val1 + 99668) MOD 99668 check_1 = (obf_key_1 * 2254 + 2015) MOD 96835 check_1 = (check_1 + 96835) MOD 96835 IF check_1 EQUALS 84742 THEN length_1 = ((obf_key_1 * 1992 + 537) MOD 692 + 692) MOD 692 out_str_1 = EMPTY_STRING base_chars_1 = ARRAY [240, 220, 214, 215, 211, 137, 155, 246] FOR i FROM 0 TO 7 DO char_val = base_chars_1[i] XOR ((obf_key_1 + i) MOD 256) out_str_1 = APPEND(out_str_1, CHAR(char_val)) END FOR PRINT SUBSTRING(out_str_1, 0, length_1) END IF val2 = ((flags * 9958) XOR 4567) MOD 71731 obf_key_2 = (val2 + 71731) MOD 71731 check_2 = (obf_key_2 * 7488 + 5181) MOD 16810 check_2 = (check_2 + 16810) MOD 16810 IF check_2 EQUALS 9303 THEN length_2 = ((obf_key_2 * 8773 + 454) MOD 536 + 536) MOD 536 out_str_2 = EMPTY_STRING base_chars_2 = ARRAY [76, 115, 111, 114, 123, 111, 83, 126] FOR i FROM 0 TO 7 DO char_val = base_chars_2[i] XOR ((obf_key_2 + i) MOD 256) out_str_2 = APPEND(out_str_2, CHAR(char_val)) END FOR PRINT SUBSTRING(out_str_2, 0, length_2) END IF PRINT NEWLINE END FUNCTION | if @flags == 1 { return "Hello" } if @flags == 2 { return "World" } |
한마디로 걍 변수가 1이냐 2냐에 따라 Hello혹은 World를 출력하는건데 아예 불가능함.
flags의 값을 알아야 내용을 알아낼 수 있음.
상황 따라 풀 수도 있는데 아마 굉장히 어려워질듯.
