蒲小可 发表于 2023-11-18 00:39:14

【re】[HGAME 2023 week3]kunmusic -- .net程序逆向,z3库约束

附件下载下来有三个东西。

点开exe,发现是鸡哥

判断应该是.net程序(.NET 是一个免费的跨平台开源开发人员平台,用于生成许多不同类型的应用程序。 凭借 .NET,可以使用多种语言、编辑器和库来生成 Web、移动应用、桌面应用、游戏和 IoT 应用),可以用dnspy打开,那个exe和json打开后都没发现什么,接着打开dll文件

点进去Main函数看看

这里有对 Resources.data 的数据进行加密,下一步我们将data文件dump下来

将dump的文件按照上面的加密异或104,我们看看异或后是什么文件,或是什么数据
这里用python进行处理:
f=open("data",'rb')data=f.read()new_data=*len(data)for i in range(len(data)):    new_data=data^104byte_data=bytes(new_data)file=open("gg",'wb')file.write(byte_data)    得到的gg文件我们拖进Hxd看看是什么文件MZ开头,又是一个程序,我们再拖进dnspy看看


这里就是一堆方程求解,直接用z3库解密,然后再来一下异或就行了
z3库求解:
from z3 import*x=Solver()num='%i),8)for i in range(13)]x.add(num + 52296 + num - 26211 + num - 11754 + (num ^ 0xA114) + num * 63747 + num - 52714 + num - 10512 + num * 12972 + num + 45505 + num - 21713 + num - 59122 + num - 12840 + (num ^ 0x525F) == 12702282)x.add(num - 25228 + (num ^ 0x50DB) + (num ^ 0x1FDE) + num - 65307 + num * 30701 + num * 47555 + num - 2557 + (num ^ 0xBF9F) + num - 7992 + (num ^ 0xE079) + (num ^ 0xE052) + num + 13299 + num - 50966 == 9946829)x.add(num - 64801 + num - 60698 + num - 40853 + num - 54907 + num + 29882 + (num ^ 0x3506) + (num ^ 0x533E) + num + 47366 + num + 41784 + (num ^ 0xD1BA) + num * 58436 + num * 15590 + num + 58225 == 2372055)x.add(num + 61538 + num - 17121 + num - 58124 + num + 8186 + num + 21253 + num - 38524 + num - 48323 + num - 20556 + num * 56056 + num + 18568 + num + 12995 + (num ^ 0x995C) + num + 25329 == 6732474)x.add(num - 42567 + num - 17743 + num * 47827 + num - 10246 + (num ^ 0x3F9C) + num + 39390 + num * 11803 + num * 60332 + (num ^ 0x483B) + (num ^ 0x12BB) + num - 25636 + num - 16780 + num - 62345 == 14020739)x.add(num - 10968 + num - 31780 + (num ^ 0x7C71) + num - 61983 + num * 31048 + num * 20189 + num + 12337 + num * 25945 + (num ^ 0x1B98) + num - 25369 + num - 54893 + num * 59949 + (num ^ 0x3099) == 14434062)x.add(num + 16689 + num - 10279 + num - 32918 + num - 57155 + num * 26571 + num * 15086 + (num ^ 0x59CA) + (num ^ 0x5B35) + (num ^ 0x3FFD) + (num ^ 0x5A85) + num - 40224 + num + 31751 + num * 8421 == 7433598)x.add(num + 28740 + num - 64696 + num + 60470 + num - 14752 + (num ^ 0x507) + (num ^ 0x89C8) + num + 49467 + num - 33788 + num + 20606 + (num ^ 0xAF4A) + num * 19764 + num + 48342 + num * 56511 == 7989404)x.add((num ^ 0x7132) + num + 23120 + num + 22802 + num * 31533 + (num ^ 0x9977) + num - 48576 + (num ^ 0x6F7E) + num - 43265 + num + 22365 + num + 61108 + num * 2823 + num - 30343 + num + 14780 == 3504803)x.add(num * 22466 + (num ^ 0xDABF) + num - 53658 + (num ^ 0xB838) + (num ^ 0x30DF) + num * 59807 + num + 46242 + num + 3052 + (num ^ 0x62BF) + num + 30202 + num * 22698 + num + 33480 + (num ^ 0x4175) == 11003580)x.add(num * 57492 + (num ^ 0x346D) + num - 13941 + (num ^ 0xBBDC) + num * 38310 + num + 9884 + num - 45500 + num - 19233 + num + 58274 + num + 36175 + (num ^ 0x4888) + num * 49694 + (num ^ 0x2501) == 25546210)x.add(num - 23355 + num * 50164 + (num ^ 0x873A) + num + 52703 + num + 36245 + num * 46648 + (num ^ 0x12FA) + (num ^ 0xA376) + num * 27122 + (num ^ 0xA44A) + num * 15676 + num - 31863 + num + 62510 == 11333836)x.add(num * 30523 + (num ^ 0x1F36) + num + 39058 + num * 57549 + (num ^ 0xD0C0) + num * 4275 + num - 48863 + (num ^ 0xD88C) + (num ^ 0xA40) + (num ^ 0x3554) + num + 62231 + num + 19456 + num - 13195 == 13863722)
if x.check()==sat:    ans = x.model()    print(ans)解密:num=*13num=15num=199num=120num=189num=190num=234num=5num=72num=85num=53num=93num=86num=236pw=124, 2, 243, 137, 58, 172, 53, 200, 99, 91,83, 13, 171, 80, 108, 235, 179, 58, 176, 28,216, 36, 11, 80, 39, 162, 97, 58, 236, 130,123, 176, 24, 212, 56, 89, 72]flag=''for i in range(len(pw)):    flag+=chr((pw^num)%128)print(flag)flag:hgame{z3_1s_very_u5eful_1n_rever5e_engin3ering}

来源:https://www.cnblogs.com/GGbomb/archive/2023/11/17/17839587.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 【re】[HGAME 2023 week3]kunmusic -- .net程序逆向,z3库约束