首页 > 编程语言 >【re】[HGAME 2023 week3]kunmusic -- .net程序逆向,z3库约束

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

时间:2023-11-17 20:23:52浏览次数:41  
标签:11 10 12 -- HGAME re add num data

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

点开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=[0]*len(data) for i in range(len(data)):     new_data[i]=data[i]^104 byte_data=bytes(new_data) file=open("gg",'wb') file.write(byte_data)     得到的gg文件我们拖进Hxd看看是什么文件

MZ开头,又是一个程序,我们再拖进dnspy看看

这里就是一堆方程求解,直接用z3库解密,然后再来一下异或就行了

z3库求解:

from z3 import* x=Solver() num=[BitVec(('num[%d]'%i),8)for i in range(13)] x.add(num[0] + 52296 + num[1] - 26211 + num[2] - 11754 + (num[3] ^ 0xA114) + num[4] * 63747 + num[5] - 52714 + num[6] - 10512 + num[7] * 12972 + num[8] + 45505 + num[9] - 21713 + num[10] - 59122 + num[11] - 12840 + (num[12] ^ 0x525F) == 12702282) x.add(num[0] - 25228 + (num[1] ^ 0x50DB) + (num[2] ^ 0x1FDE) + num[3] - 65307 + num[4] * 30701 + num[5] * 47555 + num[6] - 2557 + (num[7] ^ 0xBF9F) + num[8] - 7992 + (num[9] ^ 0xE079) + (num[10] ^ 0xE052) + num[11] + 13299 + num[12] - 50966 == 9946829) x.add(num[0] - 64801 + num[1] - 60698 + num[2] - 40853 + num[3] - 54907 + num[4] + 29882 + (num[5] ^ 0x3506) + (num[6] ^ 0x533E) + num[7] + 47366 + num[8] + 41784 + (num[9] ^ 0xD1BA) + num[10] * 58436 + num[11] * 15590 + num[12] + 58225 == 2372055) x.add(num[0] + 61538 + num[1] - 17121 + num[2] - 58124 + num[3] + 8186 + num[4] + 21253 + num[5] - 38524 + num[6] - 48323 + num[7] - 20556 + num[8] * 56056 + num[9] + 18568 + num[10] + 12995 + (num[11] ^ 0x995C) + num[12] + 25329 == 6732474) x.add(num[0] - 42567 + num[1] - 17743 + num[2] * 47827 + num[3] - 10246 + (num[4] ^ 0x3F9C) + num[5] + 39390 + num[6] * 11803 + num[7] * 60332 + (num[8] ^ 0x483B) + (num[9] ^ 0x12BB) + num[10] - 25636 + num[11] - 16780 + num[12] - 62345 == 14020739) x.add(num[0] - 10968 + num[1] - 31780 + (num[2] ^ 0x7C71) + num[3] - 61983 + num[4] * 31048 + num[5] * 20189 + num[6] + 12337 + num[7] * 25945 + (num[8] ^ 0x1B98) + num[9] - 25369 + num[10] - 54893 + num[11] * 59949 + (num[12] ^ 0x3099) == 14434062) x.add(num[0] + 16689 + num[1] - 10279 + num[2] - 32918 + num[3] - 57155 + num[4] * 26571 + num[5] * 15086 + (num[6] ^ 0x59CA) + (num[7] ^ 0x5B35) + (num[8] ^ 0x3FFD) + (num[9] ^ 0x5A85) + num[10] - 40224 + num[11] + 31751 + num[12] * 8421 == 7433598) x.add(num[0] + 28740 + num[1] - 64696 + num[2] + 60470 + num[3] - 14752 + (num[4] ^ 0x507) + (num[5] ^ 0x89C8) + num[6] + 49467 + num[7] - 33788 + num[8] + 20606 + (num[9] ^ 0xAF4A) + num[10] * 19764 + num[11] + 48342 + num[12] * 56511 == 7989404) x.add((num[0] ^ 0x7132) + num[1] + 23120 + num[2] + 22802 + num[3] * 31533 + (num[4] ^ 0x9977) + num[5] - 48576 + (num[6] ^ 0x6F7E) + num[7] - 43265 + num[8] + 22365 + num[9] + 61108 + num[10] * 2823 + num[11] - 30343 + num[12] + 14780 == 3504803) x.add(num[0] * 22466 + (num[1] ^ 0xDABF) + num[2] - 53658 + (num[3] ^ 0xB838) + (num[4] ^ 0x30DF) + num[5] * 59807 + num[6] + 46242 + num[7] + 3052 + (num[8] ^ 0x62BF) + num[9] + 30202 + num[10] * 22698 + num[11] + 33480 + (num[12] ^ 0x4175) == 11003580) x.add(num[0] * 57492 + (num[1] ^ 0x346D) + num[2] - 13941 + (num[3] ^ 0xBBDC) + num[4] * 38310 + num[5] + 9884 + num[6] - 45500 + num[7] - 19233 + num[8] + 58274 + num[9] + 36175 + (num[10] ^ 0x4888) + num[11] * 49694 + (num[12] ^ 0x2501) == 25546210) x.add(num[0] - 23355 + num[1] * 50164 + (num[2] ^ 0x873A) + num[3] + 52703 + num[4] + 36245 + num[5] * 46648 + (num[6] ^ 0x12FA) + (num[7] ^ 0xA376) + num[8] * 27122 + (num[9] ^ 0xA44A) + num[10] * 15676 + num[11] - 31863 + num[12] + 62510 == 11333836) x.add(num[0] * 30523 + (num[1] ^ 0x1F36) + num[2] + 39058 + num[3] * 57549 + (num[4] ^ 0xD0C0) + num[5] * 4275 + num[6] - 48863 + (num[7] ^ 0xD88C) + (num[8] ^ 0xA40) + (num[9] ^ 0x3554) + num[10] + 62231 + num[11] + 19456 + num[12] - 13195 == 13863722)
if x.check()==sat:     ans = x.model()     print(ans) 解密: num=[0]*13 num[10]=15 num[9]=199 num[8]=120 num[4]=189 num[6]=190 num[3]=234 num[12]=5 num[1]=72 num[2]=85 num[7]=53 num[11]=93 num[5]=86 num[0]=236 pw=[132, 47, 180, 7, 216, 45, 68, 6, 39, 246, 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[i]^num[i%13])%128) print(flag) flag:hgame{z3_1s_very_u5eful_1n_rever5e_engin3ering}

标签:11,10,12,--,HGAME,re,add,num,data
From: https://www.cnblogs.com/GGbomb/p/17839587.html

相关文章

  • 集合系列
    集合集合的分类集合可以分为Collection单列集合,Map双列集合Collection单列集合,每个元素(数据)只包含一个值Map代表双列集合,每个元素包含两个值(键值对)Collection集合的常用方法//简单确认一下Collection集合的特点ArrayList<String>list=newArrayList<>();//存取顺......
  • 基于 Angular Universal 引擎进行服务器端渲染的前端应用 State Transfer 故障排查案
    笔者之前这篇掘金文章一个SAP开发工程师的2022年终总结:四十不惑提到,我目前的团队,负责开发一款基于Angular框架的电商Storefront应用。这个Storefront是一个开源的、基于Angular和Bootstrap并为SAPCommerceCloud构建的Angular应用程序。图1:SpartacusStore......
  • 端口号错误解决 11.17
    在大数据实验二中遇到问题:端口号错误,导致无法对hdfs中文件进行读取,解决办法:输入shell命令;hdfs getconf-confKeyfs.default.name对端口号进行查看......
  • 什么是企业管理软件领域的 light-house 客户
    Lighthousecustomer,在中文环境中,我们通常将其称为“灯塔客户”。这是一种非常重要的商业术语,尤其在新产品开发和市场推广的阶段,灯塔客户的作用尤其显著。首先,我们先来理解一下Lighthousecustomer这个概念的含义。字面上理解,Lighthouse是灯塔的意思,是用来引导航行者方向的重......
  • Atcoder 中高分段 选做 与 ARC vp
    开坑,主推红题和铜牌题,来源乱七八糟,目前一部分来自学校给的。一眼秒了标绿,想了很久或是接受了提示标蓝,看了题解或者认为题很难标红。意义重大标星。很主观(然后发现其实基本上大多数题都不会,狠狠地难过了)。以后有时间可能会开始板刷ARC,现在,还是,慢慢来吧。upd-2023-10-30:和Eray......
  • 【笔记】 STL容器
    【笔记】STL容器vector vector<int>v; v.push_back(x); v.emplace(x); v.size(); v.erase(v.begin(),v.begin()+pos); v.insert(v.begin()+pos,x); lower_bound(v.begin(),v.end())-v.begin(); v.clear();bitsetbitset<8>s("00011011");......
  • AI试用:ChatGPT-画旗袍美女效果
    AI试用:ChatGPT-画旗袍美女效果Designby拓云智能强大的绘画工具,让您能够将灵感转化为真实的艺术作品。不论您是喜欢传统绘画还是数字绘画,ChatGPT都能够满足您的需求。它提供了各种绘画工具和特效,让您能够自由发挥创意,创作出独一无二的艺术作品。......
  • java-网络编程
    第十四章网络编程引入【1】网络编程:把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大、功能强的网络系统,从而使众多的计算机可以方便地互相传递信息、共享硬件、软件、数据信息等资源。设备之间在网络中进行数据的传输,发送/接收数据。  【2】通......
  • [PA2021] Od deski do deski
    [PA2021]Oddeskidodeski看似简单,实则考察的是选手的DP基本功,如果像我一样只会观察性质就做不出来这题。性质:合法的序列一定是由若干个子串按照顺序拼起来的,其中每个子串的开头和结尾是一样的。然后的想法就是设\(f_i\)表示子串\(i\)能一次消掉的方案数,然后就会一直算......
  • Vivado
    今天erp啥也没整,就整了些板子,用这个Vivado这个软件,不太会用。Vivado是一款主流的FPGA的IDE,可以实现FPGA的一整套流程,包括设计入口、综合、布置与路由以及验证/仿真工具。它主要将RTL代码综合实现生成比特流,最终可以下载到FPGA板上观察现象。此外,Vivado还采用了用于快速综合和验证......