Cython学习
怎么最近这么多Cython的题,做起来好痛苦。而且这种题还是那种很好出,但是不好逆的。当然,也就是暂时了。但凡有佬研究清楚结构,都可以搞个反编译器出来直接秒。不过好像就连rust,go这种都没有专门的反编译器,可能就还早了。。。
这次SCTF,某出题人叫我试试他出的题,然后就被恶心到了。
我本身是不喜欢去研究那些什么结构之类的东西,因为不一样的格式太多了,每个都研究显然是不高效的,我想找到一个可能的通解去研究某些问题
因为这不是python系列的第一篇了,所以这里只说一下我想的新方法。
Cython
Cython是一个语言:完全包含python语言和部分包含C语言和魔改C语言的集合。它由python实现用于写python模块。文件后缀是pyx,它的作用在于提高python的速度,编译过程:pyx->c->pyd/so(分别为Windows,linux)
可以尝试自写一个pyx文件生成pyd后用ida打开pyd文件,发现内容和原来的内容已经截然不同,可以说根本没有辨识度,极难分析。但是可以发现pyd都调用了python.dll的函数,其中所有运算符都在其中有对应的函数。我在想是不是可以通过这个方法来得到pyd的执行流程。
Hook,启动!
frida:挂钩时间在python层hook后第一次执行hook函数。好像不能全部hook,所以只hook基本运算函数
1 | const functionsToHook = [ |
然后测试,结果失败了。QAQ因为这些函数的传参和传出都是python的值对象。所以要找个方法去解析那些对象。以及最后的比较不知道是什么函数,要知道最后的密文需要hook这个函数。
尝试先使用ida动调python,看看里面的值对象的空间是怎么样的。
评论