上一篇 《教我兄弟学Android逆向04 动态调试smali代码 》 我带你动态调试了smali代码 课后作业你也做了三遍 基本上是对动态调试有所了解了 课下自己再找几个小例子多练习几遍 知识学到手了 以后面试官面试你的时候问你 你会动态调试smali代码吗?那个时候你就可以用这个表情教我兄弟学Android逆向05 在smali代码中插入Log看着面试官了(无奈 找QQ表情斜眼笑没找到 只能用这个相似但很贱贱的小表情替代了 但是不是我想要的效果 这里建议吾爱破解论坛可以添加个斜眼笑的表情 为什么?因为/xyx)   那么今天给你带来的这堂课是在smali代码中插入Log的教程 那么你问了以前经常听别人提及到Log那么别人口中的Log到底是什么 ?

给你个眼神
教我兄弟学Android逆向05 在smali代码中插入Log  下面开始上课 好好听课啊

要么学!要么不学!学和不学之间没有中间值 不学就放弃,学就要去认真的学!    --致选择


一 编写JAVA程序并在smali代码中插入Log


1 打开自己的AndroidStudio 在MainActivity里面写一段switch case语句


<ignore_js_op>

6.通过上面的练习你学会了在smali代码中插入Log 但是通常在实战中只会插入一句话Log是远远不够的 很多情况下插入Log是为了打印出程序中某个变量的值  听完我这句话后 你不耐烦的说道 兄弟你别卖关子了 赶快讲怎么通过在smali代码中插入Log打印出变量的值 我还等着吃饭呢 好吧 为了兄弟的肚子不受饿 下面我加快点进度

二 打印变量的值

1 这里我编写了一个Demo 从下面的代码中可以出我在onCreate方法中执行了三个函数 函数名分别是fun1 fun2和fun3 并且在下面加入一条Log 目的是为了打印出函数fun1的返回值 因为Log.i的两个参数都必须是String类型  所以这里把int类型的fun1这个函数通过String.valueOf函数转换成String类型

[Java] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public class MainActivity extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        fun1();
        fun2();
        fun3();
        Log.i("这个值是",String.valueOf(fun1()));
 
    }
    public int fun1()
    {
        int value = Test.value;
        return value;
    }
    public int fun2()
    {
        int value2 = Test.value2;
        return value2;
    }
    public String fun3()
    {
        String str = Test.str;
        String str2 = Test.str2;
        int value3 = Test.value3;
        return str2;
    }
 
}



2 下面我给本节课定三个要完成的任务 我将会带着你从从第一个任务开始做 由于下面的内容很重要 所以你可要认真听课了  

任务一
添加Log打印出fun2,fun3的值 (其实就是函数的返回值)
任务二
添加Log打印出fun3里面String类型str的值
任务三
添加Log打印出fun3里面int类型value3的值

任务一 添加Log打印出fun2,fun3的值

1. 这里分析一下程序 你看下上面贴的代码中onCreate方法中有一句Log是打印fun1的值的 如果在java代码中如果要打印出fun2的值 是不是只要把String.valueOf(fun1)中的fun1改成fun2 是不是就可以打印出来fun2的值 那么smali代码也一样 我只要找到打印fun1的这条log反编译成的smali代码 把里面的fun1改成fun2 是不是任务一就完成一半了?

这里我把打印fun1的这条log的smali代码复制了下来  然后在这条Log下面粘贴了一遍 把粘贴后smali代码中的fun1改成了fun2 修改完成后 保存->编译->卸载->安装->运行 查看Android Monitor 可以看到这里已经把fun2的值打印出来了


<ignore_js_op>教我兄弟学Android逆向06 用AndroidStudio编写第一个so

相关文章: