a8416aa 发表于 2023-2-3 17:48

Frida 如何 修改函数内部的立即数

frida hook 修改函数参数很好理解, 就相当于覆盖了函数重写了,

但是有一种场景, 比如


void run() {

【一大堆代码】

if( x < 10) {
【零一大堆代码】
}
【还是一大堆代码】
}



就是如何修改函数体内部的这个10, 重新实现整个函数是不现实的, 太多代码了

a8416aa 发表于 2023-2-3 17:51

比如这里,我想修改43200, 如何用frida 实现呢

    public final void m44359M(GjCGMRecord cgmRecord) {
      final int i;
      final int m20459d = cgmRecord.m20459d();
      float m20455j = cgmRecord.m20455j();
      long m20461b = cgmRecord.m20461b();
      int m20456i = cgmRecord.m20456i();
      float m20453l = cgmRecord.m20453l();
      int m20457g = cgmRecord.m20457g();
      this.f25057r = m20457g;
      String m24331T = UserInfoUtils.m24331T();
      final C5521BloodGlucoseEntity m44351U = m44351U(m24331T, this.f25043d, this.f25042c, m20457g, m20455j, m20453l, m20456i, m20459d, (System.currentTimeMillis() - ((m20459d + m20457g) * 60000)) + 60000, m20461b);
      if (m20459d <= 43200 && !this.f25048i) {
            AppDatabase.m44319F().m15043z(new RunnableC5507d(m44351U, m24331T, m20459d));
            if (m20459d != 43200) {
                i = m20457g;
                if (i <= 1 && m20459d % 5 == 0 && this.f25044e != null && ObjectUtils.m12160x(this.f25043d) && ObjectUtils.m12160x(this.f25052m)) {
                  this.f25040a.m24067r(this.f25043d, this.f25052m, this.f25044e.getAlgorithmVersion());
                }
                if (!this.f25041b && this.f25050k != null && !this.f25048i) {
                  ThreadUtils.m58920s0(new Runnable() { // from class: c23
                        @Override // java.lang.Runnable
                        public final void run() {
                            LocalBleService.this.m44353S(m44351U, m20459d, i);
                        }
                  });
                }
                if (this.f25041b) {
                  return;
                }
                this.f25048i = true;
                return;
            }
      }
      i = m20457g;
      if (!this.f25041b) {
            ThreadUtils.m58920s0(new Runnable() { // from class: c23
                @Override // java.lang.Runnable
                public final void run() {
                  LocalBleService.this.m44353S(m44351U, m20459d, i);
                }
            });
      }
      if (this.f25041b) {
      }
    }

闷骚小贱男 发表于 2023-2-3 18:49

不用frida ,不过貌似不能这样操作吧?
除非重写m44359M函数?

直接改smali会更简单点,{:1_908:}但是可能有一堆的签名验证等问题

a8416aa 发表于 2023-2-3 19:36

闷骚小贱男 发表于 2023-2-3 18:49
不用frida ,不过貌似不能这样操作吧?
除非重写m44359M函数?



对, 我想找一种侵入性小的方法,frida应该是首选

5ctw 发表于 2023-2-3 19:57

一直再找这个问题的答案,蹲大佬
另外,你可以改一下smali代码,然后用frida绕签名这些看看

a8416aa 发表于 2023-2-3 20:24

5ctw 发表于 2023-2-3 19:57
一直再找这个问题的答案,蹲大佬
另外,你可以改一下smali代码,然后用frida绕签名这些看看

是的,虽然这样可以改,但是别人的app一旦升级了,又得全部重做

jwzyjwzy 发表于 2023-2-3 20:30

frida 可以逐代码hook的好像叫stalker

a8416aa 发表于 2023-2-3 22:00

jwzyjwzy 发表于 2023-2-3 20:30
frida 可以逐代码hook的好像叫stalker

学习一下

qq20048888 发表于 2023-2-3 22:24

改一下smali代码,把版本号也改了。就不怕升级了吧

a8416aa 发表于 2023-2-3 22:25

qq20048888 发表于 2023-2-3 22:24
改一下smali代码,把版本号也改了。就不怕升级了吧

:lol 是这样可以,但是人家升级了功能也升级了,哈哈哈
页: [1] 2
查看完整版本: Frida 如何 修改函数内部的立即数