美文网首页
FRIDA实践

FRIDA实践

作者: 吃饱了就送 | 来源:发表于2021-06-08 11:32 被阅读0次

    环境搭建

    安装frida

    python3.9 -m pip install frida
    

    安装frida-tools

    pip3 -m pip install frida-tools
    

    下载运行在目标机上的frida-sever端,下载时要选择对应的版本下载,例如我的机器是模拟器,架构位x86_64,就选择ffrida-server-14.2.18-android-x86_64下载,然后解压,把解压的文件通过ADB命令push到手机的/data/local/tmp目录下,同时通过chmod命令给文件夹赋予权限。
    做完以上几步后,新开一个命令行输入命令frida-ps -U查看手机进程,如果出现以下结果,则frida安装成功。

    frida-ps -U查看手机进程

    hook java层

    public class MainActivity extends AppCompatActivity {
    
        private TextView textView;
        private String hallo = "Hello World!!!!";
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            //xposed_init
            textView = (TextView) findViewById(R.id.tv_text);
            textView.setText(hallo);
    
            textView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    textView.setText(testFrida());
                }
            });
        }
    
        public String testFrida(){
            return textView.getText().equals(hallo)? "change str" : hallo;
        }
    }
    

    Python代码

    import frida  #导入frida模块
    import sys    #导入sys模块
    
    jscode = """  #从此处开始定义用来Hook的javascript代码
        Java.perform(function(){  
            var MainActivity = Java.use('com.example.testfrida.MainActivity'); //获得MainActivity类
            MainActivity.testFrida.implementation = function(){ //Hook testFrida函数,用js自己实现
                send('Statr! Hook!'); //发送信息,用于回调python中的函数
                return 'Change String!' //劫持返回值,修改为我们想要返回的字符串
            }
        });
    """
    
    def on_message(message,data): #js中执行send函数后要回调的函数
        print(message)
    
    process = frida.get_remote_device().attach('com.example.testfrida') #得到设备并劫持进程com.example.testfrida(该开始用get_usb_device函数用来获取设备,但是一直报错找不到设备,改用get_remote_device函数即可解决这个问题)
    script = process.create_script(jscode) #创建js脚本
    script.on('message',on_message) #加载回调函数,也就是js中执行send函数规定要执行的python函数
    script.load() #加载脚本
    sys.stdin.read()
    

    现在python脚本编写完毕,我们来执行该脚本,首先手机端执行frida,然后通过命令adb forward tcp:27043 tcp:27043和adb forward tcp:27042 tcp:27042来转发这两个端口,接着在手机上运行该应用程序,在命令行中执行脚本(python3.9 test_frida.py),最后点击应用的按钮,即可看到字符串已经被替换成我们要替换的了!!!

    参考:https://www.52pojie.cn/thread-1128884-1-1.html

    相关文章

      网友评论

          本文标题:FRIDA实践

          本文链接:https://www.haomeiwen.com/subject/gngcrltx.html