关于数字加固app过签的相关问题
在我目前的知识储备中 如果一个app仅仅是重新签名打包后闪退 那么它肯定是有签名校验的 而相关的签名校验 要么是在java层中 要么是在so层中 或者是服务器校验 而在so层中的签名校验 我找到了一处 并且对其进行了修改 但是仍然无法解决重签名后的闪退 我查找了相关资料 最后得出 可能是因为360加固的原因 必须要过360签名校验才行 但是以我目前的知识来说 360明明是加固 为啥还会对app做签名校验 签名校验难道不是软件作者加固后再对其进行签名吗 如果是这样 那么我过掉了作者的签名不就行了 难不成是因为360对其进行加固后就已经对软件进行了一次签名?然后作者再对其进行一次签名?如果是这样 那么该如何去过掉360的签名校验?恳请大佬为小弟解答 万分感激!!!{:301_975:} 林伊轩 发表于 2024-9-2 09:19看logcat是哪里崩了
09-02 01:13:21.407 16973 16973 E LoadedApk: Unable to instantiate appComponentFactory
09-02 01:13:21.407 16973 16973 E LoadedApk: java.lang.ClassNotFoundException: Didn't find class "androidx.core.app.CoreComponentFactory" on path: DexPathList[,nativeLibraryDirectories=]
09-02 01:13:21.407 16973 16973 E LoadedApk: at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
09-02 01:13:21.407 16973 16973 E LoadedApk: at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
09-02 01:13:21.407 16973 16973 E LoadedApk: at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
09-02 01:13:21.407 16973 16973 E LoadedApk: at android.app.LoadedApk.createAppFactory(LoadedApk.java:226)
09-02 01:13:21.407 16973 16973 E LoadedApk: at android.app.LoadedApk.createOrUpdateClassLoaderLocked(LoadedApk.java:731)
09-02 01:13:21.407 16973 16973 E LoadedApk: at android.app.LoadedApk.getClassLoader(LoadedApk.java:810)
09-02 01:13:21.407 16973 16973 E LoadedApk: at android.app.LoadedApk.getResources(LoadedApk.java:1032)
09-02 01:13:21.407 16973 16973 E LoadedApk: at android.app.ContextImpl.createAppContext(ContextImpl.java:2345)
09-02 01:13:21.407 16973 16973 E LoadedApk: at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5907)
09-02 01:13:21.407 16973 16973 E LoadedApk: at android.app.ActivityThread.access$1100(ActivityThread.java:207)
09-02 01:13:21.407 16973 16973 E LoadedApk: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1663)
09-02 01:13:21.407 16973 16973 E LoadedApk: at android.os.Handler.dispatchMessage(Handler.java:106)
09-02 01:13:21.407 16973 16973 E LoadedApk: at android.os.Looper.loop(Looper.java:193)
09-02 01:13:21.407 16973 16973 E LoadedApk: at android.app.ActivityThread.main(ActivityThread.java:6840)
09-02 01:13:21.407 16973 16973 E LoadedApk: at java.lang.reflect.Method.invoke(Native Method)
09-02 01:13:21.407 16973 16973 E LoadedApk: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
09-02 01:13:21.407 16973 16973 E LoadedApk: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:860)
09-02 01:13:21.486 16973 16973 F libc : Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0 in tid 16973 (st.fakelocation), pid 16973 (st.fakelocation)
09-02 01:13:21.493 16993 16993 E cutils-trace: Error opening trace file: No such file or directory (2)
09-02 01:13:21.503 16994 16994 F DEBUG : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
09-02 01:13:21.503 16994 16994 F DEBUG : Build fingerprint: 'samsung/star2qltezh/star2qltechn:9/PQ3B.190801.06281543/G9650ZHU2ARC6:user/release-keys'
09-02 01:13:21.503 16994 16994 F DEBUG : Revision: '0'
09-02 01:13:21.503 16994 16994 F DEBUG : ABI: 'x86'
09-02 01:13:21.503 16994 16994 F DEBUG : pid: 16973, tid: 16973, name: st.fakelocation>>> com.lerist.fakelocation <<<
09-02 01:13:21.503 16994 16994 F DEBUG : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0
09-02 01:13:21.503 16994 16994 F DEBUG : Cause: null pointer dereference
09-02 01:13:21.503 16994 16994 F DEBUG : eax 00000000ebx d46f0c1cecx f3399200edx f338302c
09-02 01:13:21.503 16994 16994 F DEBUG : edi f3d3819cesi 00000000
09-02 01:13:21.503 16994 16994 F DEBUG : ebp 00000000esp ffffa360eip d4663f81
09-02 01:13:21.503 16994 16994 F DEBUG :
09-02 01:13:21.503 16994 16994 F DEBUG : backtrace:
09-02 01:13:21.503 16994 16994 F DEBUG : #00 pc 000aaf81
09-02 01:13:21.59616341634 E /system/bin/tombstoned: Tombstone written to: /data/tombstones/tombstone_41
09-02 01:13:21.67315721572 E lowmemorykiller: Error opening /proc/16973/oom_score_adj; errno=2
09-02 01:13:21.70924562584 E EGL_adreno: tid 2584: eglSurfaceAttrib(1350): error 0x3009 (EGL_BAD_MATCH)
09-02 01:13:21.82917574570 E eglCodecCommon: glUtilsParamSize: unknow param 0x00008c29
09-02 01:13:21.86117574570 E EGL_adreno: tid 4570: eglSurfaceAttrib(1350): error 0x3009 (EGL_BAD_MATCH)
这个日志大概率就是因为360加固的原因 签名校验不正确 导致无法找到正确的类
fakelocation? 打包后闪退,不一定是签名校验,也有可能是拖的dex里面有问题,启动抛异常了 laoser 发表于 2024-9-2 00:32
fakelocation?
是的 就是这个 {:301_999:} 不负韶华 发表于 2024-9-2 08:38
打包后闪退,不一定是签名校验,也有可能是拖的dex里面有问题,启动抛异常了
我是不做任何修改 只是给apk重新签名 打开后闪退{:301_999:} 看logcat是哪里崩了 关注一下,也会遇到同样问题,学习中 我记得好像360加固后,并未签名,由加固者签名,所以签名仍然验证的的作者的签名,这样相对就保险,要去加固或修改必须过签名,过了签名还得脱,等同双保障…… 他有VMP,免费版的360壳是onCreate,你会看到某些类的onCreate的修饰符有native,他的解释器不再走art里面的解释器,而是走壳自定义的解释器,你脱壳换入口后或者改签名后,他就要么找不到自定义的解释器,要么不执行解释。而onCreate又是activity生命周期中的第一个阶段,不执行自然会闪退报错。 如果能定位到闪退的地方,或者疑似闪退的地方,才比较好说明里面是用了什么检测逻辑。大概率是对签名做了校验,如果是在java层做的就修改下smali,so做的就frida hook掉相关指令