1.?题出题源????????Դ??
2.逆向pyinstaller打包的exe软件,获取python源码(6)
3.攻防世界XCTF-REVERSE入门12题解题报告
4.抖音web逆向教程
5.JS逆向 | 面向小白之eval混淆
6.JS逆向之补环境过瑞数详解
?码逆????????Դ??
在之前的文章“ailx:逆向pyinstaller打包的exe软件,获取python源码(1)”中,向题我们已经成功逆向出了主程序。出题然而,源码用导入的题出题源游戏匹配算法源码py文件并未被逆向出来。得益于知乎网友的码逆提醒,我们发现了“PYZ-.pyz_extracted”文件夹,向题这激发了我们继续探索的出题兴趣。这个小工具依赖于四个文件,源码用而我们此次成功地还原了pyinstaller打包的题出题源exe软件的所有python源码。尽管pyinstaller操作便捷,码逆但在打包过程中,向题我们仍需注意对python源码进行加密。出题
第一步,源码用我们进入“PYZ-.pyz_extracted”文件夹,确实发现了依赖文件。第二步,我们逆向了pyc文件,成功获取到了所有python源代码。第三步,我们在pycharm中打开了这些代码,并解决了所有依赖问题。最后,第四步,我们直接运行了python代码,成功启动了软件。
逆向pyinstaller打包的exe软件,获取python源码(6)
在之前的讨论中,我们已经成功逆向了由pyinstaller打包的exe程序的主程序。然而,关于其依赖的python文件,其实获取方法相当直接。关键在于PYZ-.pyz_extracted文件夹,其中包含编译exe时转化为pyc格式的依赖文件。只要对这些pyc文件进行逆向,EXPMA指源码就能揭示出整个exe的所有python源代码,这种方法屡试不爽。然而,有知乎网友推荐使用Nuitka进行exe打包,以增加代码的防护,防止源码被轻易反编译。具体步骤如下:首先,进入PYZ-.pyz_extracted文件夹,你将发现所需的依赖文件。
接着,对这些pyc文件进行逆向处理,从而获取到全部的python源代码。
在pycharm等开发环境中,打开这些源代码,解决任何依赖关系问题。
最后,直接运行你修改后的代码,程序即可成功启动。
攻防世界XCTF-REVERSE入门题解题报告
攻防世界XCTF-REVERSE入门的题解题报告
今年计划从刷题转向实战,重点是二进制逆向、病毒分析和漏洞利用,目标是提升实战分析能力。
攻防世界XCFT刷题信息汇总如下:攻防世界XCTF黑客笔记刷题记录
第一题:考察C语言
解题报告:此题主要考验对C语言的理解,通过查找并分析代码,发现并提取出关键信息。
第二题:考察Linux可执行文件二进制搜索
解题报告:通过使用不同的工具和技术(如Bless、IDA、strings命令)来搜索隐藏在二进制文件中的flag。
第三题:考察二进制脱壳
解题报告:通过使用特定工具(如upx、bless)对有壳的二进制文件进行脱壳操作,然后搜索flag。
第四题:python-trade考察python反汇编
解题报告:利用uncompyle6工具对pyc文件进行反汇编,得到源代码后,编写解密函数提取flag。
第五题:hello-ctf考察简单的软件下站源码逆向
解题报告:通过PEtools工具检查壳的存在,运行程序,使用IDA pro查找并解析flag。
第六题:logmein考察简单逆向
解题报告:使用IDA pro解析Linux下的二进制文件,通过查找RC3密码破解flag。
第七题:game考察简单逆向
解题报告:通过游戏逻辑和IDA pro解析伪代码,最终找到flag。
第八题:getit考察动态调试
解题报告:使用GDB进行动态调试,找到flag隐藏位置,成功提取。
第九题:re1考察逆向入门
解题报告:通过查找字符串、解析伪代码等方法,逐步逼近并提取flag。
第十题:no strings attached考察动态调试
解题报告:利用动态调试技术,找到并利用关键条件(ws和s2相等)提取flag。
第十一题:csawreversing2考察动态调试
解题报告:通过执行关键函数和修改跳转,绕过程序逻辑,成功获取flag。
第十二题:maze考察迷宫行走
解题报告:解析并绘制迷宫图,通过特定路径行走逻辑,提取隐藏的flag。
至此,REVERSE入门刷题结束,发现每题都有其独特之处和解题技巧,通过不断实践和学习,可以逐步提高逆向分析能力。
抖音web逆向教程
逆向教程:理解加密参数流程
首先,逆向工程的首要步骤是分析流程,通过观察堆栈信息和源码,设置断点在XMLHttpRequest对象的构建上。在这个对象的_url中,我们注意到signature和x-bogus的存在。
目标是找到一个未加密的请求对象。在`e.nativeXMLHttpRequestSend`的上下文中,大约向前调试七步,我们会发现一个与XMLHttpRequest相关的源码在线答题方法,该方法在send处设置断点。暂停请求后,我们会发现对象的_url尚未包含加密参数。
进一步深入,进入混淆的webmssdk,这里对请求对象进行了加密处理。跳出后回到原生的send方法,这时_url已包含加密后的签名。这个过程表明,先创建请求对象,然后通过修改send方法,将其传递给webmssdk中的加密函数,加密后回到XMLHttpRequest.prototype.send执行请求。
了解了参数生成方式后,可以通过RPC模拟生成。虽然还未找到具体的加密代码,但因其加密基于操作XMLRequest对象,我们可以复现加密过程。
进行本地调用时,首先要确保理解并按照步骤操作。发送请求后,控制台将显示带有签名的链接和数据,确认加密及请求都在send方法中完成。
接下来,处理webmssdk文件,如复制代码到本地执行。可能会遇到一些报错,如未定义的Request、Headers等。通过补全这些环境变量,逐步逼近目标。然而,代码中定时器的存在会阻碍直接结果。此时,需要分析源码,jdk源码奥秘找出本地执行与浏览器环境的区别,以及byted_acrawler的初始化问题。
通过对比和调整,最终在本地环境中成功执行,req的onload中显示出加密后的URL。至此,基本的调用流程还原完成,但具体细节的还原和调试则需要读者自行尝试。
本文着重于提供基本的教程,帮助理解加密过程,但并不能保证%的成功。补全环境的过程繁琐,建议读者根据本文描述自行探索,祝好运!
JS逆向 | 面向小白之eval混淆
本文旨在介绍JS逆向中的一种技巧——eval混淆。eval函数能够将字符串解析为代码并执行,这在代码混淆中被广泛利用。下面以一个实际案例来说明如何解析eval混淆。
案例:某市房产信息平台。访问网站后,点击某个小区会跳转到一个随机网址,但页面源代码中看不到网址信息。搜索“onclick=reurl(this)”发现该函数用于在点击时触发,其中reurl函数被eval混淆。
首先尝试将eval还原为console.log,输出结果到控制台。在浏览器控制台输入reurl函数并回车,得到原始的reurl函数代码。若还原失败,可直接在控制台输入reurl函数名,观察执行结果。在控制台中输入并执行reurl函数,进一步定位问题。
在本案例中,定位到reurl函数并复制到本地js文件中。通过下断点调试,观察变量a.id的值,进一步分析函数内部逻辑。复制相关代码并稍作修改,继续下断点,按F8让程序运行至下一行,直至完成所有函数的解析。
另一个案例:某变IP。通过F检查发现需要的数据在free.html中,但IP字段被加密。搜索目标函数(此处以FFcontraceptive为例)发现eval混淆,通过还原eval函数,得到原始代码。进一步搜索并解析base解码函数,最终获得解码后的IP值。
以上案例展示了如何通过控制台调试和本地代码分析,解析eval混淆,获取隐藏信息。实践过程中,使用断点调试、鼠标悬停查看变量值等技巧,有助于更深入地理解代码逻辑。
完整代码已上传至个人GitHub,欢迎下载并自行尝试。通过实践加深理解,遇到问题时可对照代码参考。欢迎关注微信公众号“逆向新手”,获取更多学习资源。
JS逆向之补环境过瑞数详解
逆向JS编程中的“瑞数”难题通常被视为一道难以逾越的挑战,对于许多开发者而言,它是简历上令人羡慕的技能。本文将深入讲解如何通过补环境的方式巧妙地解决瑞数问题,不再局限于教程中的一般性分析。 文章分为四个部分,首先解析瑞数流程,理解其加密参数——cookie_t的生成逻辑。在分析一个具体实例,如网上房地产网站,我们发现其流程如下:初次请求page_url,返回状态,设置cookie_s;
后续请求需要cookie_s和cookie_t,其中cookie_t在第二次请求时生成;
关键在于破解cookie_t生成的逻辑,这需要对请求和响应进行详细分析。
理解了目标后,我们通过扣代码的方式,固定页面源码,确保生成的cookie_t在静态环境中保持不变。接着,我们关注eval函数的定位和VM的执行逻辑,这涉及到hook eval函数来获取加密代码。 在扣代码部分,我们处理动态变化的JS和VM代码,确保所有环境变量如时间戳和随机数都保持一致。通过映射动态变量名,我们实现了从动态代码到静态环境的转换。 补环境部分,文章引用了上文的浏览器环境补全技术,通过模拟浏览器环境来使加密JS在补全的环境中产生相同的cookie_t。这涉及到使用框架和调试技术来逐步完善环境模拟,直到与浏览器生成的cookie_t匹配。 总结来说,补环境和扣代码都是逆向工具,各有优势。扣代码需要深入理解JS语法和逻辑,而补环境则依赖于对原型链和浏览器环境的深入理解。对于新手,可以选择基于完善框架的补环境方式来快速突破瑞数,节省时间并提高效率。逆向pyinstaller打包的exe软件,获取python源码(3)
年,我开发了第三个安全运营小工具,这个工具是为安全驻场人员设计的。本来打算将其与第一个软件整合,但由于时间限制未能实现。当时过于急于求成,没有深入分析代码。然而,最近的一次威胁狩猎事件激发了我对逆向工程的兴趣,我顺便尝试了逆向pyinstaller打包的exe软件,以获取python源码。回顾过去的代码,转眼已到年。我一直从事网络安全业务,但在coding技术上却毫无进步。今年,我决心提升代码水平,争取创造出有差异性的成果。
提醒:故事还有后续,我将逆向pyinstaller打包的exe软件的所有源代码:ailx:逆向pyinstaller打包的exe软件,获取python源码(6)
态势感知体检小工具说明:
第一步:对exe程序进行反编译[1]
第二步:进入新获得的extracted文件夹
第三步:查看struct.pyc和main.pyc前4字节之间的区别
第一个软件前个字节,第二个软件只有前8个字节相同,第三个软件只有前4个字节相同,不知道为什么,但我在这里并未发现任何问题。
第四步:反编译pyc文件得到python源代码
第五步:欣赏一下反编译的代码
小程序逆向分析 (一)
李老板:奋飞呀,最近耍小程序的比较多,而且貌似js好耍一点?要不咱们也试试?
奋飞:你是老板,你说了算喽。
第一次搞小程序,得找个软柿子捏,就找个以前分析过的某段子App的小程序吧。
app下载回来就是apk包,那么小程序在哪里?小程序是一个以wxapkg为后缀的文件,在android手机的/data/data/com.tencent.mm/MicroMsg/用户id/appbrand/pkg/里面找。可是下面一堆数字命令的文件,哪个才是我们要找的某段子App的小程序呢?
两个办法:把所有的小程序都删除,就留一个,那这个文件就是了。或者把某段子App的小程序删除,然后再重装一下。看文件日期,最新的就是了。
wxapkg文件肯定没法直接分析的了,我敢打赌它一定可以反编译出js文件。从github.com/ezshine/wxa...下载他编译好的wxapkg-convertor可执行程序。把wxapkg文件拖到wxapkg-convertor的界面里面可以反编译出js源码出来。我们先试试分析一下这个websign的来历。
首先搜索一下websign字符串,很幸运,看上去就在这个js里面的i(d)函数里。
既然反编译出来了js源码,能否动态调试下,这样分析起来更方便了?答案是可以的,下载微信开发者工具,把刚才反编译的工程导入进来。记得在设置->项目设置中把“不校检合法域名...”这一项勾上。这样代码貌似可以跑起来,我们在i函数下个断点,发下它可以进来了。
我们调试的时候发现它并没有生成websign,t.h_m为空,导致后面没有生成,这个难不倒我们,从抓包结果里面找一个h_m的值,写死一下,就顺利跑出结果了。从js代码里看,i函数里面最后调用了o(n),这么明显的md5,我们来试试,在i函数里面加一个代码。首先在Mac下我们算下结果,然后再调试下这个工程,看看t1Use的值。确认过眼神,就是MD5。
搞个新玩意的时候,先找个软柿子捏,不要一下就想放个大卫星。能反编译,然后再动态调试,那么曙光就在眼前。这个样本运气好,肉眼就可以看出是md5,复杂的js算法,可以考虑PyExecJS、js2py或Node.js来跑。所有的故事都会有结局,只有生活跟你没完。TIP:本文的目的只有一个就是学习更多的逆向技巧和思路,如果有人利用本文技术去进行非法商业获取利益带来的法律责任都是操作者自己承担,和本文以及作者没关系。本文涉及到的代码项目可以去奋飞的朋友们知识星球自取,欢迎加入知识星球一起学习探讨技术。有问题可以加我wx:fenfei讨论下。无偿领取网络安全入门到进阶学习籽料可点击这个链接:瓜子:零基础学网络安全有什么建议?如何入门?——来自一位年薪W的网工倾情讲解。