idaPro如何分析app解密lua脚本

通过前面idaPro调试或hook,我们可以获取到xxtea解密key,对于sign我们可以直接打开原文件:

idaPro如何分析app解密lua脚本

可以看到sign值:byds。所以,我们可以同过xxtea解密工具(可从GitHub上下源码自己编译)试着解密:

idaPro如何分析app解密lua脚本

以index.luac为例,我们看index.luac解密前后变化:

idaPro如何分析app解密lua脚本

我们看到经过xxtea解密后的lua脚本仍然不是明文!我们之前根据cocos2d框架源码及大神apk反编结果确定就是用的xxtea加密,而且app的lua脚本也有签名值,这也印证了就是xxtea加密方式,但是我们解密出来的结果仍然不是明文,这说明我们解密可能不完全,到底是不是还得再回到idapro一探究竟。

用idapro打开libgame.so,在export窗口中搜索byds,找到byds_d函数,双击进去:

idaPro如何分析app解密lua脚本

直接F5会显示反编代码:

idaPro如何分析app解密lua脚本

这没有什么特别的,和我们框架源码中的代码是等效的。如果是解密未完成的话,应该会再调用此函数的上一级继续解密过程,我们jump xrefs跟踪一下此函数调用:

idaPro如何分析app解密lua脚本

出来两个,其中一个是got表,肯定不是,我们双击第一个:

idaPro如何分析app解密lua脚本

只是一个包装函数,我们继续跟踪:

idaPro如何分析app解密lua脚本

双击进去:

idaPro如何分析app解密lua脚本

我们看到这个函数名称和源码中调用xxtea_decrypt是一样的,我们一开始也将这个函数列入突破口了。现在可以很清晰的看到脚本经过byds_d解密之后,又进行了一次uncompress解压,到现在应该基本清晰了,lua脚本应该是经过压缩又进行加密,所以要想还原,应该是先xxtea解密,再解压缩。我们可以从GitHub上找个解压zlib的脚本,对解密后的文本再一次解压:

idaPro如何分析app解密lua脚本

然后再看index.lua:

idaPro如何分析app解密lua脚本

可以看到现在已经变成明文了。

关于idaPro如何分析app解密lua脚本问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

文章标题:idaPro如何分析app解密lua脚本,发布者:亿速云,转载请注明出处:https://worktile.com/kb/p/28242

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年9月21日 下午10:49
下一篇 2022年9月21日 下午10:51

相关推荐

  • mysql substring()函数如何用

    在mysql中,substring()函数用于截取字符串,可以从字符串从特定位置开始返回一个给定长度的子字符串,语法为“SUBSTRING(字符串,n)”,参数“n”的值需要是一个整数,用于指定子串的起始字符,可以为负值。若参数“n”为负值,则子串的位置起始于字符串结尾的第n个字符,即倒数第n个字符…

    2022年9月26日
    31200
  • 远程代码执行漏洞实例分析

    0x01 认识 mongo-express mongo-express是一个MongoDB的Admin Web管理界面,使用NodeJS、Express、Bootstrap3编写而成。目前mongo-express应该是Github上Star最多的MongoDB admin管理界面。部署方便,使用简…

    2022年9月26日
    15800
  • 如何解决1045无法登录mysql服务器

    解决方法:1、找到“my.ini”系统配置文件,把“skip-grant-tables”放在“port=****”下面;2、如果放在C盘里,那么需要编辑权限,并保存修改;3、打开MySQL数据库之前先重启服务,打开cmd命令提示符,直接输入mysql,回车打开MySQL数据库即可。 本教程操作环境:…

    2022年9月6日
    21400
  • App崩溃的6个常见原因是什么

    人们讨厌应用程序崩溃,尤其是是程序减速或卡死几秒钟这样的现象。根据Dimensional Research的一项调查,61%的用户希望程序在4秒内启动,而49%的用户希望在2秒内响应输入。 如果应用发生崩溃,冻结或报错等现象,53%的用户会将APP卸载。 无论您的对象是消费者还是企业,崩溃问题会令他…

    2022年9月2日
    83600
  • windows证照之星怎么排版一寸

    证照之星排版一寸的方法 1、 打开证照之星 软件,点击主界面左上侧的“系统设置”,选择“打印排版设置”。 2、打开“打印排版设置”之后,点击打印设置对话框的‘新建’按钮。 3、点击“新建”之后,就会出现打印选项的选择栏,如果是用自己的打印机进行打印就选择“本机打印”, 如果需要去外面打印社进行打印的…

    2022年9月26日
    7100
  • 网络安全审计工具Nmap如何使用

    一.软件下载 https://nmap.org/download.html 二.扫描IP nmap 192.168.1.10 #扫描单IP nmap 192.168.1.10-100 #扫描IP段 nmap 192.168.1.10 192.168.1.11 #扫描单独的多IP nmap 192.1…

    2022年9月2日
    8100
  • MySQL慢查询日志怎么设置

    一、概述 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值(long_query_time,单位:秒)的SQL语句。默认情况下,MySQL不启动慢查询日志。本文简单介绍如何开启慢查询日志,如何用mysqldumpslow分析慢查询。 二、慢查询日志设置 …

    2022年9月15日
    24300
  • SpringBoot项目中怎么实现MySQL读写分离

    1、MySQL主从复制 但我们仔细观察我们会发现,当我们的项目都是用的单体数据库时,那么就可能会存在如下问题: 读和写所有压力都由一台数据库承担, 压力大 数据库服务器磁盘损坏则 数据丢失 ,单点故障 为了解决上述提到的两个问题,我们可以准备两 (多) 台MySQL,一台主( Master )服务器…

    2022年9月15日
    11100
  • SpringBoot依赖管理的特性是什么

    1.父依赖parent介绍 pom文件中含有父依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</arti…

    2022年9月21日
    5700
  • php类中的rewind方法如何用

    在php中,rewind()函数方法用于将文件指针的位置倒回文件的开头,若指针的位置倒回成功,则该函数返回的结果是true,如果指针的位置倒回不成功,则该函数的返回结果是false,语法为“rewind(规定已打开的文件)”。 本文操作环境:Windows10系统、PHP8.1版、Dell G3电脑…

    2022年6月27日
    9500
联系我们
站长微信
站长微信
分享本页
返回顶部