android逆向攻防-某物unidbg还原&补算法

admin 2025年2月18日20:53:50评论12 views字数 1196阅读3分59秒阅读模式

作者:yueji0j1anke

首发于公号:剑客古月的安全屋

字数:610

阅读时间:    5min

声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。合法渗透,本文章内容纯属虚构,如遇巧合,纯属意外

目录

  • 前言

  • 流程分析

  • 实战

  • 总结

0x00 前言

这里就不给大家详细分析某物的算法分析了,比较隐私,本期就针对app进行算法还原,重要的其实还是思路。

本期是unidbg补环境第一期,所以比较基础,后面整理完还有几期比较有难度的,再陆续发出。

0x01 流程分析

具体native算法是在so文件 libJNIEncrypt.so中实现,我们需要加载其得到module对象

DalvikModuledm=vm.loadLibrary(newFile("unidbg-android/src/test/resources/example_binaries/libJNIEncrypt.so"), false); 
dm.callJNI_OnLoad(emulator); // 手动执行JNI_OnLoad函数 
android逆向攻防-某物unidbg还原&补算法

核心在该native方法中

除此之外,传递的第二个string参数同样由native方法进行了相关处理

android逆向攻防-某物unidbg还原&补算法

0x02 实战

首先拿到具体的cls

DvmClassbytesBuilder=vm.resolveClass("com/duapp/aesjni/AESEncrypt");
Stringmethod1="getByteValues()Ljava/lang/String;";
Stringmethod2="encodeByte([BLjava/lang/String;)Ljava/lang/String;";

str参数直接补即可

StringbyteValues=bytevalue.getValue();
StringBuildersb=newStringBuilder(byteValues.length());
for (inti2=0i2<byteValues.length(); i2++) {
if (byteValues.charAt(i2=='0') {
sb.append('1');
            } else {
sb.append('0');
            }
        }

StringrealbytesValues=sb.toString();

body参数前面通过frida hook后直接赋值看看demo效果

android逆向攻防-某物unidbg还原&补算法

随后运行

android逆向攻防-某物unidbg还原&补算法

跟我们前面通过frida hook所完成的the same

android逆向攻防-某物unidbg还原&补算法

0x03 总结

补环境对于so的模拟执行很重要,此处我们直接调用native层函数,native层显然没有调用java层函数,所以没有大规模补环境现场。

原文始发于微信公众号(剑客古月的安全屋):android逆向攻防-某物unidbg还原&补算法

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年2月18日20:53:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   android逆向攻防-某物unidbg还原&补算法https://cn-sec.com/archives/3753234.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息