• 安卓逆向,frida小练习,hook java 层密码校验函数,绕过密码验证,进入下一个界面


    ###

    具体怎么使用这个frida来逆向,来hook?

    下面讲解一个案例:

    ##

    ###

    分析这个题目:

    第一步:这个是打开apk进入了这个页面,主界面有一个输入框,输入按钮,所以这个按钮应该是在apk的主界面,

    第二步,我就要进入主界面的源码,看看源码,

    第三步,既然要看源码,所以先apk反编译,拿到源代码,如果有壳,要先脱壳,才能拿到源代码,这个小app是没有加固的,

    第四步,拿到源代码之后去找application文件,看看主界面是在哪一个java文件,看看这个逻辑是什么,点击按钮是发生了什么?

    onCreate方法,这个就是进入一个页面首先执行这个方法,然后就是生成页面

    onclick方法,先拿到了输入框的密码,和他自己的密码对比,就是if里面校验成功,就是return,否则就是校验失败,

    securityCheck,这个就是检查密码是否一直,如果是真就是进入这个分支,否则就是校验失败的分支,

    ###

    我们的目的是什么,

    拿到判断的逻辑,我们让if里面的值一直都是TRUE,不让他FALSE进入另一个分支,

    这样不管是我们输入什么,都是正确的,

    所以我们要hook到这个函数,修改这个函数,

    就是这个思路,

    ###

    hook这个securitycheck的方法,强行改成TRUE,

    代码解释,因为是java应用层的hook,所以要使用java模块 ,

    怎么找这个类名,可以通过jadx,右键复制类名就可以了com.yaotong.crackme.MainActivity

    把类赋值给一个变量,

    然后这个变量再去调用方法,securityCheck

    然后重写这个方法,从写赋值这个函数,参数要看你要hook的函数是不是有参数,

    没有参数会报错的,

    这样就hook成功了,然后你输入任意的内容,就会直接打印出来i am here 就是hook成功了,

    不用管这个方法里面做了什么,我们只管输出,

    这样就绕过了

    ###

    上面讲的都是方法论, 

    这个案例比较简陋,不具有实战性,但是这个展示了frida的应用,这个是方法论,具体的应用,还需要不断实践才可以,

    ###

    上python代码

    import frida
    import sys
    
    
    def on_message(message,data):
        if message["type"] == "send":
            print("[*]{0}".format(message["payload"]))
        else:
            print(message)
    
    
    jscode = """
    Java.perform(function(){
        var TestSig = Java.use("com.yaotong.crackme.MainActivity")
        // var mystr = Java.use('java.lang.String');   这一句可以不要,
    
        TestSig.securityCheck.implementation = function(str){
            send("i am here");
            return true;
        }
    
    })
    """
    
    
    process = frida.get_usb_device().attach("自毁程序密码")
    script = process.create_script(jscode)
    script.on("message",on_message)
    print("[*] running CIF")
    script.load()
    sys.stdin.read()

    ###

    #####

  • 相关阅读:
    在其他对象上同步
    如何在一个线程环境中使用一个线程非安全的java类
    原子类
    Volatile
    Spring中的设计模式2
    Spring中的设计模式
    Struts2中的设计模式
    Struts2中的设计模式----ThreadLocal模式
    享元模式(Flyweight)
    Java类加载器的工作原理
  • 原文地址:https://www.cnblogs.com/andy0816/p/15178815.html
Copyright © 2020-2023  润新知