作者: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函数
核心在该native方法中
除此之外,传递的第二个string参数同样由native方法进行了相关处理
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=0; i2<byteValues.length(); i2++) {
if (byteValues.charAt(i2) =='0') {
sb.append('1');
} else {
sb.append('0');
}
}
StringrealbytesValues=sb.toString();
body参数前面通过frida hook后直接赋值看看demo效果
随后运行
跟我们前面通过frida hook所完成的the same
0x03 总结
补环境对于so的模拟执行很重要,此处我们直接调用native层函数,native层显然没有调用java层函数,所以没有大规模补环境现场。
原文始发于微信公众号(剑客古月的安全屋):android逆向攻防-某物unidbg还原&补算法
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论