查壳:

发现里边有个压缩包,弄出来看看:

再查壳看看:

啥也不是,把它扔进IDA:

没有伪代码,一个字‘找’,关键点(是否IDA能成功反编译,还是说用了java的反编译才行,是否有flag或者CTF之类的字样):

发现特殊字样,跟进:

大写String?大胆点进jadx:

成功,告诉我们什么?要大胆点,不然会浪费很多的时间:找我们的NSSCTF吧:

发现一个异或,先记下,继续

找到特殊字样的根源地,而且下面还有yes字样,证明这里是最终的判断:
分析程序能知道是将flag与key异或得到这特殊字样,那么我们反异或不就得到flag?
上脚本:

会给你报个越界的错误,那么怎么改呢?由于ASCII有效位最大位127,那么我们只用%128就好了
| Des = '棿棢棢棲棥棷棊棐棁棚棨棨棵棢棌' |
| key = 123456789 |
| flag = '' |
| for i in Des: |
| flag += chr((ord(i) ^ key) % 128) |
| print(flag) |
| |
得到‘jwwgpb_ETO}}`wY’???说明啥,key不对,我们再找找,看看有没有人调用改变key的值:

在这发现有改变了key的值,最终的脚本如下:
| Des = '棿棢棢棲棥棷棊棐棁棚棨棨棵棢棌' |
| key = 987654321 |
| flag = '' |
| for i in Des: |
| flag += chr((ord(i) ^ key) % 128) |
| print(flag) |
得到NSSCTF{apkYYDS}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?