• 跟着鬼哥学so改动,二,进行篇


    图/文  听鬼哥说故事



    继续上文的内容----------------------------------


    0x1:測试文件的编写

    经过上一篇文章的基础学习,如今我们開始进行是用的部分。

    既然我们能够在so中定义String字符串了,那么我们当然也能够定义int类型的数据了。那么。我们在此定义一个getCoin方法,返回值为int类型。

    例如以下:

    JNIEXPORT jint JNICALL Java_com_ggndktest1_JniGg_getCoin

      (JNIEnv * env, jobject this)

    {

     

    int c=100;

     

    return c;

     

    }

     

    同一时候编写java代码:

     

    static public native int getCoin();

     

    这两个方法的加入,能够继续在我们上一篇文章的基础上进行补充就可以,当然,为了熟练创建ndkproject,也能够又一次创建project的。

    然后我们在shell下切换到project根文件夹:





    这样成功生成so文件。

    然后我们简单在xml定义下布局。简单的,直接在layout



     <TextView

            android:id="@+id/coin"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:text="" />



    加入一个TextView,设置idcoin。然后就能够在主类进行引用。





    这样我们执行一下程序,查看一下效果。




    0x2:任务明白


    我们如今须要做一个任务。就是改动上文程序中的金币数量。

    我们直接在project的bin文件夹下拿出来未签名的apk。分析时能够先无论签名。我们把lib/armeabi下的so文件拿出来,拖进IDA进行分析。

    0x3:挂起IDA。进行分析



    (如果,当前我们的状态是不知道程序源代码)

    通过上文执行的截图,我们能够分析到。有keyword“Current Coin ,我们在对反编译后的程序分析搜索,发现仅仅存在于so文件里,这样,我们就直接在IDA中搜索字符串去。

    快捷键 Shift + F12





    找到它的引用





    这个没啥好解释的。载入字符串而已,没啥重要信息。发现不出来金币在哪里定义了,那么我们就看下引用。





    发如今so文件里。并没有函数对此方法进行调用,那么我们就返回java中,看看java语句中是怎么对它进行的调用。其上下文都是什么东西。





    经过查看printhello方法在JniGg.smali中是定义。在MainActivity是调用。我们具体看下代码:




    贴上简单的说明,大家就能够看的清楚了。

    我们在这里发现一个关键函数。getCoin方法。通过向上追寻,发现也是在so文件里的,那么如今我们再次回到IDA中:





    Options打开General。也就是第一个选项,设置例如以下:




    然后我们能够看到:




    这个是Thumb的指令。那么我们改动,也要使用Thumb

    一个字节来定义数值。我们仅仅能用最大ff了,即255,那么在16进制编辑器打开。跳转到c04的位置,改动为FF 20,然后放回程序,签名,执行。





    好了,说明我们的改动成功。


    0x4:反思一下


    既然我们是自己写的源代码。那么我们就能够非常好的来对照思考了。这个过程留给同学们自己来思考,请花上10分钟时间,对照一下代码里面编写的方法,与在so中反汇编的代码的联系,增强一下熟悉的感觉。

    另:


    上面的apk,还有其它破解方法。即我们找到java层的调用了。那么直接改动java层调用方法的返回值,效果也一样,能够改动为无限大的数值。


    相关附件地址:


    http://pan.baidu.com/s/1i3wzetf


    文章同一时候也交由www.pd521.com 首发,转载请注明出处。




  • 相关阅读:
    layer 弹窗使用说明
    从零开始写代码 Python 8分钟实现Floyd最短路径算法
    vue项目中使用SVGICON
    jeecgbootvue3笔记(六)主子组件数据加载
    jeecgbootvue3AntDesign笔记(十四)——异步调用后端
    【转载】net core中调用webservice
    QNX 命令行总结
    C++中%作为引导符的使用总结
    流程自动化RPA,Power Automate Desktop系列 流程挖掘(Process Mining),正成为海外大厂的兵家必争之地
    乘风破浪,遇见最美Windows 11之新微软商店(Microsoft Store)生态 万兴科技旗下18款应用入驻微软商店,Wondershare Filmora斩获微软应用商店编辑精选奖
  • 原文地址:https://www.cnblogs.com/zsychanpin/p/6791777.html
Copyright © 2020-2023  润新知