Loading... # 问题的由来 最近看到网上一篇py代码,有个同志写出了gui图形化的小程序,来调用api,gpt问答。 刚好我还有好多的api还没用呢,云服务器上那个对接微信的老是掉,哎,没办法,凑且cv一个吧 [我用python/C++调用ChatGPT自制了一个聊天机器人 - 掘金 (juejin.cn)](https://juejin.cn/post/7201423410168512570) 好好好!一步步跟着测试竟然成功了.  当然,中间也遇到了一些问题,就是访问api是需要代理的,但是最新的urlib库是和代理冲突的,所以记得降级 [解决OpenAI API 挂了 Dai Li 还是连接不上的问题 openai.error.APIConnectionError](https://zhuanlan.zhihu.com/p/611080662) [pip install urllib3==1.25.11](https://github.com/xinebf/google-translate-for-goldendict/issues/33) # 打包程序 额,cv配制好了,每次在vs点击运行实在是太不优雅了,那就只好重学一下打包exe,记得之前会的,怎么忘干净了哈哈哈哈,太久没用! [pip install pyinstaller](https://www.zhihu.com/tardis/zm/art/162237978?source_id=1003) 注意哈 > -F 覆盖包 > > -w 不显示控制台 > > -i 后面跟.ico图标路径 在选择图标的问题上我还发现可使用gpt生成svg的骚操作:[太帅了!3分钟用ChatGPT生成一个美队的Logo图标!\_菜鸟学Python的博客-CSDN博客](https://blog.csdn.net/cainiao_python/article/details/130097534) 当然我还是去下载了一个哈哈哈!不会描述 然后就可以了,but>>>>>>>>><<<<<wtf 好多的缺陷,哎,下继续往下看吧,我都不忍自爆,哈哈哈哈哈!看这缺陷到底有多少哈。 首先是使用,体验方面。有待优化,哈,由于是使用的opneAi官方的api,所以使用者必须使用魔法哈哈哈(国外嘛,懂的都懂)。由于我这个还没做处理,所以,网络不通导致程序的直观表现就是会卡住,一直转圈,这种情况不能使用,就默默退出点击关闭使劲退出吧,先解决网络问题再来吧哈哈哈........,其实再调试的时候是可以直接的看到报错的,这也是我下一步可能要解决的问题。 # 作的过程 刚好我突然想起来,有个同志好像也写了一个Chatgpt-GUI,,,我看了看我源代码的API,亮晶晶的放在这,实在明显,我就想能不能逆一下它的,把API给获取出来。咳咳咳 但是先测试了,一下他的程序,发现不用魔法也能访问,感觉事情一下好像没有这么简单。原来他用的是国内的API:https://api.lolimi.cn/?action=doc&id=187 哎,没搞过这个接口,暂时还不知道怎么弄。为什么会这么说,看我倒叙回忆。 其实一开始我是以为他那个也一样的,所以就去学了学怎么逆 首先,在我的记忆里好像只能python逆pyc文件, 看了这篇文章后,才把以前零散碎片的知识链接起来:[CTF-Python打包成的exe文件Re逆向](https://blog.csdn.net/weixin_52369224/article/details/120874362) nb,跟着操作,下载工具:[pyinstxtractor](https://github.com/extremecoders-re/pyinstxtractor) 成功,搞出pyc,想更着第三步了,结果踩坑了,原来easypythondecompiler这个工具1.3.2支持的最高Python版本是3.4--------------[在Python反编译中出现Magic value mismatch](https://www.cnblogs.com/liweis/p/15894537.html) 看了一下那个工具的出处链接,哎,作者已经不更新了。  好吧,没事,使用网页版的:[pyc反编译工具](https://tool.lu/pyc/)这个工具好用,但是次数时间限制 当然现在好像还有些工具挺好使的:**uncompyle6**(画重点哟!现在这个应该是主流) > 在py3.8以上安装这个库好像还是不支持的,所以看下面俩文章,直接修改即可: > > [python3.10安装uncompyle6错误(已解决)\_uncompyle6不支持python39\_principle1的博客-CSDN博客](https://blog.csdn.net/principle1/article/details/122064538) > > [uncompyle6在python3.10及以上版本的使用 | Redamancy's Blog (sakura520.life)](https://sakura520.life/post/b77f.html) > >  > >  > >  > >  但是这个uncompyle6也只支持py3.8为止了,就没继续更新了,艹了!!!上面的修改方法也只是掩耳盗铃!能让其运行,但是不能反编译。 > * 由此又引出一个大佬的工具:https://blog.csdn.net/weixin_55030700/article/details/132500604 > * [MarZaKore/pycdc at v1.0 (github.com)](https://github.com/MarZaKore/pycdc/tree/v1.0) > * 上面这好像是复制的项目,原项目是:[zrax/pycdc: C++ python bytecode disassembler and decompiler (github.com)](https://github.com/zrax/pycdc) > * 这个工具逆出来的是python的字节码,试试了逆3.11暂时还出不来全部,我的3.10又被全部逆出来了 > * 只能说感谢这个大佬开源的工具和同感他的吐槽哈哈哈 搞出来了,我的py3.10的直接就全部逆出来了还有api,其实pyc在010Editer等二进制编辑器也能看到我的API 他的py3.11 只逆出部分源码,看来py3.11是又加了安全性呀。没看到API # 总结 好,在上述过程中呢,也了解了一些,py是怎么怎加安全性的,还有,如果想防止被逆可以怎么操作的经验总如下: [为了避免被反编译,会进行一些混淆,使得pyinstxtractor转换出错。如下这个文件](https://blog.51cto.com/u_15060540/3888913) (但是我实测发现,现在这个在exe后面添加垃圾数据阻止反编译的功能好像不行了,用的是py3.10,工具是pyinstxtractor2023.08,应该是他的代码优化了。但是减少一些末尾数据或者修改MEI关键字可以,可是减少了或是修改了程序就不能正常执行了。) [MrWQ/reverse\_pyinstaller: pyinstaller打包的exe逆向还原项目 (github.com)](https://github.com/MrWQ/reverse_pyinstaller) [python代码打包和逆向](https://saucer-man.com/information_security/825.html) 说起来字节码的逆向,之前好像还做过这个ctf, 好了,下次勤奋点看看还能不能在写写嘿嘿 # 最后 使用那个C++写的程序反编译,终于逆出了全部的py3.11的字节码,看到了api:https://api.lolimi.cn/?action=doc&id=187  但这是别的的免费接口,还是请勿滥用,他也是这么注明了哈哈哈! 我的私人API接口就不放出来了。 我想我的程序,首先可以改进的地方是接管异常,给个返回信息输出,才不至于卡死。然后安全方面应该在加上一些加密算法,看能不把接口隐藏,暂时用python3.12.1好像也可以,应该暂时还不能反编译出来吧,最新的,,,下次再试试,或者通过C语言实现,加一些反调试手段,或者加壳。 好了不说了,学加密算法去了OpenSSL我来啦! # 明天准备补充一个小彩蛋 实现对文件的简单加解密码操作 最后修改:2024 年 12 月 17 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 4 如果觉得我的文章对你有用,请随意赞赏