Android逆向分析案例——某酒店APP的登陆请求分析

为了练练手,增长逆向分析的知识,本次博客打算分析一下某酒店APP的登陆请求。

这次的逆向分析还是以网络请求为例,通过分析其登陆请求数据的加解密原理,将请求数据从密文转换成明文,顺便把返回的结果也转成明文。

好了,既然明确了需求,那么准备开始分析了,分析的步骤还是很简单:反编译-->找关键代码-->分析请求代码加解密原理-->验证密文到明文准确性


第一步,反编译:

这一步中,一般来说我们可以结合smali文件和jd-gui查看器来分析,所以APKTool和dex2jar都可以用上。

因为APKTool和dex2jar的反编译都有在前面的博客里介绍过,所以在此就不详细说明了,不明的可以回去看。


第二步,找关键代码:

找关键代码的方法有很多,我主要用到两种方法,一是,利用wireshark抓包的关键字符串,结合sublime text工具在smali文件夹中使用“find in folder”功能找到关键字符串所在位置,然后再顺藤摸瓜;二是直接通过jd-gui查看其代码,并找到登陆界面的点击事件,并定位到其关键代码。

首先讲第一种方法:

先抓包(打开wireshark监控,然后按下登陆按钮进行登陆),并查看其TCP流,找出其关键字符串


可以看到图中红色方框中的关键词"APPSIGN","sign","data"等,其中data的数据是我们想要知道的,但现在是密文。

接下来,我们利用找到的关键词,利用sublime text工具的find in folder功能在smali文件夹中查找该关键词出现的地方。


通过关键词可以找到了一个HttpUtils的类,再看看其smali里的表达式,可以看到com/loopj/android/http包,该包实际上就是第三方框架AsyncHttpClient的东西。

到这,我们基本上就可以定位到关键代码位置了。

那么,第二种方法又是怎样的呢?

实际上第二种方法并不建议,这种方法就是直接找,因为fragment,Activity这些类是无法被混淆的,所以我们可以直接在jd-gui上浏览一下目录,找到其关键的地方,比如我们现在找登陆界面,那么可以根据登陆的英文login去找,如下图


可以看到在com.htinns.UI.fragment.My包下可以找到了LoginFragment,没错,这就是登陆页面,在文件数量很大的情况不建议用这种方法,费时。

在LoginFragment的代码中可以看到有多个HttpUtils类的静态方法被调用,基本上已经确定HttpUtils确实是登陆请求的一个工具类了。


第三步,分析加解密原理,实际上这跟第二步是紧密联系的,因为要一边顺藤摸瓜,一边推断其加解密的原理,一步步地接近真相~

根据上面找到的关键代码,我们可以在HttpUtils中找到一个静态方法a(Context, RequestInfo),该方法中的参数RequestInfo实例是包含了账号密码的,就是该实例的字段c,所以我们可以根据RequestInfo.c这个内容去顺藤摸瓜,找到其加密的位置。


可以看到,图中红色方框中的分别是加密的key和调用加密函数的入口a函数,那么我们继续顺着这个a函数找:

  public static k a(Context paramContext, JSONObject paramJSONObject, String paramString)
  {
    k localk = new k();
    if (paramJSONObject == null);
    try
    {
      paramJSONOb
  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
某flutter-app逆向分析是指对于一个使用flutter框架开发的应用进行逆向工程分析。逆向工程是通过分析应用的代码、二进制文件等来了解其内部实现细节。 首先,我们需要获取该应用的安装包文件(APK或IPA文件),然后进行解包操作,将其转换为可读取的文件目录结构。 接下来,我们可以使用一些工具来提取应用的资源文件、代码文件等。对于flutter-app来说,可以提取出dart文件,这是flutter的主要代码文件,其中包含了应用的逻辑实现。 通过阅读dart文件,我们可以了解应用的代码结构、数据模型、界面设计等。可以分析应用的逻辑实现方法,包括各种函数、类、方法的调用关系。 同时,还可以通过分析相关配置文件、资源文件等来了解应用的各种设置、资源加载方式等。 在逆向过程中,还可以使用一些调试工具来进一步了解应用的运行机制。例如,hook工具可以拦截应用的函数调用,并捕获输入输出数据,用于进一步分析逆向分析的目的可以有很多,比如了解应用的工作原理、发现潜在的漏洞或安全问题、提供参考用于自己的开发等。 需要注意的是,逆向分析需要遵守法律规定。未经授权的逆向分析可能侵犯他人的知识产权,涉及到隐私等方面的问题。因此,在进行逆向分析之前,应该了解并遵守当地相关法律法规,避免产生法律纠纷。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值