某直装外挂卡密校验逆向分析

这篇具有很好参考价值的文章主要介绍了某直装外挂卡密校验逆向分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

最近分析了一款外挂软件的卡密校验,过程挺有趣的,故记录下来。

正文

该软件的界面如下图:

某直装外挂卡密校验逆向分析

登录卡密是该界面的一个按钮,首先是获取该界面的类名,如下:

某直装外挂卡密校验逆向分析

该界面所在的类是com.app.batman.MainActivity,获取到该界面所在的类之后,下一步的目标是定位到发送请求的方法,这一次我的定位方法不同于以往,以前我的定位方法是搜索字符串或者hook关键函数打印调用栈,这一次我所采用的方法是trace,那么什么是trace呢?hook了大量的函数就是trace,使用的脚本是r0trace(项目地址)。我trace了MainActivity类下的所有的函数,从而定位到SignUp这个关键函数,如下图:

某直装外挂卡密校验逆向分析

在jadx中反编译的代码如下:

某直装外挂卡密校验逆向分析

该方法是一个native方法,所以要找到注册该函数的so文件,首先我们假设它是动态注册的,因此可以使用frida hook RegistNatives,这里使用yang神的脚本(项目地址),运行结果如下:

某直装外挂卡密校验逆向分析

发现找不到SignUp函数,那么该函数大概率是静态注册的,那么静态注册的方法该如何定位so文件呢?可以使用frida-trace,还需要注意,静态注册的函数命名是有规则的:Java_ + 包名 + 类名 + 方法名,并且".“都替换成”_",运行结果如下:

某直装外挂卡密校验逆向分析

可以看到,静态注册该函数的so文件是ban,命名很奇怪,在jadx中找到该so文件的加载位置,如下:

某直装外挂卡密校验逆向分析

ban文件是经过System.load进行动态加载的,一般都是把该文件进行加密,然后在动态加载是进行解密,先把cache目录下的ban文件放在IDA中看一眼,如下:

某直装外挂卡密校验逆向分析

我采取的对抗手段是dump出内存中的ban文件,因为程序已经运行起来了,这时候内存中的ban文件是已经解密了的,frida dump脚本如下:

function dumpso(so_name){
    var libso = Process.findModuleByName(so_name);
    if (libso == null) {
        return -1;
    }
    Memory.protect(ptr(libso.base), libso.size, 'rwx');
    var libso_buffer = ptr(libso.base).readByteArray(libso.size);
    libso.buffer = libso_buffer;
    var f = new File("/data/data/com.tencent.tmgp.pubgmhd/cache/ban.so","wb")
    f.write(libso.buffer)
    f.flush()
    f.close()
    console.log("success dump ban.so")
    console.log("ban.so base address --> " + libso.base)
}
function main(){
    dumpso("ban")
}
setImmediate(main)

某直装外挂卡密校验逆向分析

但这个时候的so是不能分析的,还需要修复一下,修复工具使用的是elf-dump-fix(项目地址),把修复后的so文件放进IDA中进行反编译,SignUp的伪代码如下:

某直装外挂卡密校验逆向分析

发现已经能够正常识别了,下面就是找到发送请求的逻辑,关键代码如下:

某直装外挂卡密校验逆向分析

上面图中标注的很清楚了,核心逻辑就是判断响应体中的内容的长度是否为32,如果长度为32位,则卡密校验成功,否则卡密校验失败。卡密校验成功之后调用了MainActivity类下面的TOAC方法,下面看看该函数的逻辑:

某直装外挂卡密校验逆向分析

代码很简单,就是开启了一个服务,那么有没有什么办法看到服务开启后的效果呢?很简单,使用frida进行主动调用就行了,脚本代码及运行效果如下:

某直装外挂卡密校验逆向分析

某直装外挂卡密校验逆向分析

在主动调用了TOAC方法之后,外挂的功能模板就弹出来了。那么我们只要修改登录卡密之后的逻辑,让其不论校验成功还是校验失败都调用TOAC方法,这样也就绕过了卡密的校验,具体的过程不再展示。

修改并重打包之后,功能一切正常,但在点开绘制初始化开关之后软件直接闪退了,因此可以判断该软件有签名校验。那么我判断的依据是什么呢?很简单,就是之前我使用frida进行主动调用过卡密校验的时候软件并没有闪退,开关也能正常打开,但是在重打包之后打开开关就闪退。

下面开始绕过签名校验,首先尝试在jadx中搜索signatures,如下:

某直装外挂卡密校验逆向分析

直接根据包名进行过滤,在java层中并没有我们想要的结果,那么在ban这个so文件里面进行搜索,如下:

某直装外挂卡密校验逆向分析

可以看到,程序调用了android.content.pm.Signature类下的hashcode方法获取了签名的hash值,并且拿该值与一个特定的值进行比较,如果不相等则直接退出程序,因此这里就是签名校验的关键点。

既然找到了程序校验签名的逻辑,那么我们该如何绕过呢?起初我想的是直接修改so文件,把exit的调用直接nop掉,但是别忘了这个so文件是从内存中dump出来的,其原本的状态是加密的,所以是没办法直接进行修改。那么就可以写xposed模块,去hook hashcode这个方法,让其返回那个正确的hash值,这样也能绕过检验。但是考虑到使用Xposed的环境要求比较苛刻,需要手机进行root,因此我也抛弃了这个方案。

其实即使不root也是能够去hook的,这个方案也被许多知名的软件应用了,比如太极、VirtualXposed、应用转生等等,这也就是我采用的方案,我使用的AOP框架是epic(项目地址),核心代码如下:

某直装外挂卡密校验逆向分析

然后把编译好的dex文件添加进软件中,并主动调用这段代码也就实现了非root下的hook。

重打包后程序正常运行,至此逆向分析结束。文章来源地址https://www.toymoban.com/news/detail-451010.html

到了这里,关于某直装外挂卡密校验逆向分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python 实现卡密生成(卡密生成器)

    最近我在做一个基于 openCv2 的脚本,顺手写了一个卡密生成器,也给自己保存一下代码。 代码部分 接下来是下载连接,因为比较小就用某云盘了,知道的它下载一直很慢,其实也不算小Python打包出来的东西还是挺大的,压缩包里有一个ui文件不要删,那个是动态加载进的Qt文

    2024年02月21日
    浏览(36)
  • 【算法设计与分析】分治法(最近点对问题)

    目录 实验目的 实验内容与结果 蛮力法求解 分治法求解 实验总结 (1)掌握分治法思想。 (2)学会最近点对问题求解方法。 算法过程: 遍历n个点与剩余n-1个点之间的距离,在计算点对距离时不断更新最短距离的值,遍历完所有点对后即可求得最短点对距离。 伪代码: 复

    2024年02月08日
    浏览(35)
  • 分治法解二维的最近对问题,算法分析与代码实现,蛮力法与分治法解决二维的最近对问题的区别

    🎊【数据结构与算法】专题正在持续更新中,各种数据结构的创建原理与运用✨,经典算法的解析✨都在这儿,欢迎大家前往订阅本专题,获取更多详细信息哦🎏🎏🎏 🪔本系列专栏 -  数据结构与算法_勾栏听曲_0 🍻欢迎大家  🏹  点赞👍  评论📨  收藏⭐️ 📌个人主

    2024年02月04日
    浏览(29)
  • 75.网游逆向分析与插件开发-背包的获取-背包结构与指针的逆向分析

    内容参考于:易道云信息技术研究院VIP课 上一个内容:物品名称与物品编号的映射关系分析-CSDN博客 通过上一个内容已经可以通过物品的id得到一个名字,知道了它的算法,它的算法自己封装好了,我们直接用就好,接下来要用到物品的指针了,所以接下来分析物品的指针怎

    2024年01月21日
    浏览(28)
  • 文章同步--飞鹤官方商城加密逆向分析(小程序)、蝉管家滑块加密参数逆向分析

    飞鹤官方商城加密逆向分析(小程序)       蝉管家滑块加密参数逆向分析      

    2024年02月12日
    浏览(206)
  • 61.网游逆向分析与插件开发-游戏增加自动化助手接口-游戏红字公告功能的逆向分析

    内容来源于: 易道云信息技术研究院VIP课 上一节内容:游戏公告功能的逆向分析与测试-CSDN博客 码云地址(master分支):https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号:63e04cc40f649d10ba2f4fa313ca65cc78f46516 代码下载地址,在 SRO_EX 目录下,文件名为:SRO_Ex-游戏红字公告功能的逆

    2024年01月23日
    浏览(35)
  • 教你部署chatgpt商业版源码,支持卡密开通国内使用

    ChatGPT 镜像网站的实现原理是将 ChatGPT 的源代码并将其部署在服务器上。在部署过程中,需要先将 ChatGPT 的代码上传至宝塔控制面板,部署完成后,用户可以通过访问网址直接使用 ChatGPT 进行聊天。 后台管理界面如下图所示: 这里提供了一个完整的源码: 完整源码下载 下面

    2024年02月02日
    浏览(77)
  • 9.网络游戏逆向分析与漏洞攻防-游戏网络架构逆向分析-接管游戏连接服务器的操作

    内容参考于:易道云信息技术研究院VIP课 上一个内容:游戏底层功能对接类GameProc的实现 码云地址(master 分支):https://gitee.com/dye_your_fingers/titan 码云版本号:44c54d30370d3621c1e9ec3d7fa1e2a028e773e9 代码下载地址,在 titan 目录下,文件名为:titan-接管游戏连接服务器的操作.zip 链接

    2024年03月08日
    浏览(35)
  • 最近台风肆虐,让我们用Python获取天气数据,分析一下台风到底要去哪!

    最近台风肆虐,已进入我国24小时警戒线!台风“卡努”到底要去哪儿? 作为一个Python程序员,虽然我帮不上忙,但是时时关注一下还是可以的,顺便祈祷一下台风往东边某个小日子过得不错的小岛吹。 于是我花了一分钟,用Python写了一个获取天气数据的代码,然后进行数据

    2024年02月14日
    浏览(33)
  • 【验证码逆向专栏】某验深知 V2 业务风控逆向分析

    本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲

    2023年04月13日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包