AndroidNativeEmu模拟执行计算出某电商App sign

简介: AndroidNativeEmu模拟执行计算出某电商App sign

一、目标


这几天写代码写的很爽,因为经过几天没日没夜的调试,终于成功的把某电商App的sign用 AndroidNativeEmu 跑出来了,填了无数的坑,跑出正确结果的那一刻,内牛满面呀,心里充满了对 AeonLucid 大神的敬意,请收下我的膝盖 github.com/AeonLucid/A…,从大神的介绍里面看应该是荷兰人。


其实算出结果并不重要, 填坑、调试并修改原工程 最终跑出sign的过程才是最重要的。没有人告诉我们牛顿发现万有引力定律时的思考过程,当然,牛顿可以慷慨地把他的思考结果告诉我们,但是,他那可以点石成金的“金手指”却没有教给我们。所以这里插播一个广告: 我预计会花2-3周的时间,把这次从原工程到跑出sign的过程详细到每一步的所思所想和解决方法完整的过程发布出来,绝对是全网唯一一个AndroidNativeEmu实操教程,仅会发布至 "奋飞的朋友们" 知识星球,这份教程一定会让你物超所值


请注意,要学习这个AndroidNativeEmu实例教程有两个前置条件:


1、Android编程入门,起码能写个Hello World;

2、能读懂 AndroidNativeEmu使用指南并跑通例子代码


否则强练九阴真经会走火入魔的。 (= ̄ω ̄=) 


以下是正文……


二、分析


李老板: 奋飞呀,你不是说某电商App的签名已经搞定了吗?


奋飞: 对呀,连上手机签名,就可以正常拿到数据了。

李老板从裤兜里掏出了iphone 12pro,  奋飞: ( ̄ε(# ̄) (其实iPhone连手机签名奋飞有

更稳定成熟的方案,以后的文章介绍)


奋飞只好默默的掏出了AndroidNativeEmu,跑起来,Duang......,不出意外,程序挂了


9.png


这个问题还好,把BitmapkitUtils类补上就行了

class BitmapkitUtils(metaclass=JavaClassDef, jvm_name='com/jingdong/common/utils/BitmapkitUtils',jvm_fields=[JavaFieldDef("a", "Landroid/app/Application;", True, Application())]):
    def __init__(self):
        pass
    @java_method_def(name='a', signature='([Ljava/lang/String;)Ljava/lang/String;', native=True)
    def a(self, mu,str):
        logger.info("calll BitmapKitUtils a %s" % str)
        pass
    @java_method_def(name='encodeJni', signature='([BZ)[B', native=True)
    def encodeJni(self, mu):
        pass
    @java_method_def(
        name='getSignFromJni',
        args_list=['jobject',"jstring","jstring","jstring","jstring","jstring"],
        signature='(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;',
        native=True)
    def getSignFromJni(self, mu):
        pass
    @java_method_def(name='getstring', signature='(Ljava/lang/String;)Ljava/lang/String;', native=True)
    def getstring(self, mu):
        pass


其他还有一堆坑都给填上,这里就不详述了,星球里下周发的详细教程 见。


成功算出sign



10.png


算完了,总不能复制过去吧, 这里我们参照 某右协议分析(三),通过Flask起个web Server来搞

app = Flask(__name__)
@app.route('/getSignFromJni', methods=['POST']) # 数据加密
def getSignFromJni():
    global emulator
    global lib_module
    str = request.form.get('str')
    str2 = request.form.get('str2')
    str3 = request.form.get('str3')
    str4 = request.form.get('str4')
    str5 = request.form.get('str5')
    activity_Th = ActivityThread()
    bit_Utils = BitmapkitUtils()
    result = emulator.call_symbol(lib_module, 'Java_com_jingdong_common_utils_BitmapkitUtils_getSignFromJni',emulator.java_vm.jni_env.address_ptr,0x00, activity_Th.getSystemContext(emulator), str, str2,str3, str4,str5)
    return result.toString(emulator)


好了,再接上上次我们写的send.go,这次搜索一下 “小米”

11.png


结果正常, 收工。


╮(‵▽′)╭ 每天叫醒我的不是闹钟,而是知识星球新用户加入的消息铃声 ( ̄ˇ ̄)


TIP: 本文的目的只有一个就是学习更多的逆向技巧和思路,如果有人利用本文技术去进行非法商业获取利益带来的法律责任都是操作者自己承担,和本文以及作者没关系,本文涉及到的代码项目可以去 奋飞的朋友们 知识星球自取,欢迎加入知识星球一起学习探讨技术。有问题可以加我wx: fenfei331 讨论下。


关注微信公众号“奋飞安全”,最新技术干货实时推送



11.png


相关文章
|
架构师 Java
jvm性能调优实战 - 35电商APP后台系统如何对Full GC进行深度优化
jvm性能调优实战 - 35电商APP后台系统如何对Full GC进行深度优化
276 0
|
7月前
|
搜索推荐 开发工具 UED
apptrace 三大策略,助力电商 App 在 618 突围​
随着“618”电商大促预售开启,各大平台投入百亿流量与现金争夺用户。然而,网络购物市场增量空间趋于饱和,电商App亟需突破曝光、拉新与转化瓶颈。apptrace提供三大增长策略:精准曝光通过智能广告监测优化投放;裂变拉新简化流程,助力社交传播;高效转化实现一键直达活动页面,提升用户体验与留存率。这些技术优势助力开发者和运营者在618大战中抢占先机,实现用户增长与商业价值最大化。
|
9月前
|
监控 数据可视化 数据挖掘
【开发者必看—电商篇】数据赋能电商类App转化率循序增长
通过友盟+ 数据分析工具,团队深入分析了用户行为路径、转化漏斗、停留时间及错误事件等关键数据,定位到用户体验与产品性能的问题。经过精准优化,包括简化购物流程、修复技术故障及提升稳定性,最终显著提高了用户转化率。这一案例展示了数据驱动在产品优化中的重要作用。
【开发者必看—电商篇】数据赋能电商类App转化率循序增长
|
9月前
|
监控 搜索推荐 数据挖掘
【开发者必看—电商篇】数据赋能电商App活跃度重焕新生
通过友盟+数据分析工具的综合数据分析和个性化推送功能,解决APP用户活跃度迅速下降的问题。
|
安全 前端开发 Java
Spring Boot导购电商返利App架构设计
Spring Boot导购电商返利App架构设计
|
负载均衡 监控 UED
高可用电商返利APP架构设计与实现分享
高可用电商返利APP架构设计与实现分享
|
消息中间件 缓存 Java
高性能电商返利APP架构设计与实现
高性能电商返利APP架构设计与实现
|
2月前
|
缓存 移动开发 JavaScript
如何优化UniApp开发的App的启动速度?
如何优化UniApp开发的App的启动速度?
502 139
|
2月前
|
移动开发 JavaScript weex
UniApp开发的App在启动速度方面有哪些优势和劣势?
UniApp开发的App在启动速度方面有哪些优势和劣势?
333 137