dcc icon indicating copy to clipboard operation
dcc copied to clipboard

帮忙看下,我直接运行dcc.py文件,报错

Open gtict112 opened this issue 6 years ago • 44 comments

nc <= well_known_classes.cpp jni/nc/Dex2C.cpp: In function 'int64_t d2c_double_to_long(double)': jni/nc/Dex2C.cpp:75:42: error: 'INT64_MAX' was not declared in this scope } else if (val > static_cast(INT64_MAX)) { ^ jni/nc/Dex2C.cpp:77:42: error: 'INT64_MIN' was not declared in this scope } else if (val < static_cast(INT64_MIN)) { ^ jni/nc/Dex2C.cpp: In function 'int64_t d2c_float_to_long(float)': jni/nc/Dex2C.cpp:89:41: error: 'INT64_MAX' was not declared in this scope } else if (val > static_cast(INT64_MAX)) { ^ jni/nc/Dex2C.cpp:91:41: error: 'INT64_MIN' was not declared in this scope } else if (val < static_cast(INT64_MIN)) { ^ jni/nc/Dex2C.cpp: In function 'int32_t d2c_double_to_int(double)': jni/nc/Dex2C.cpp:103:41: error: 'INT32_MAX' was not declared in this scope } else if (val > static_cast(INT32_MAX)) { ^ jni/nc/Dex2C.cpp:105:41: error: 'INT32_MIN' was not declared in this scope } else if (val < static_cast(INT32_MIN)) { ^ jni/nc/Dex2C.cpp: In function 'int32_t d2c_float_to_int(float)': jni/nc/Dex2C.cpp:117:41: error: 'INT32_MAX' was not declared in this scope } else if (val > static_cast(INT32_MAX)) { ^ jni/nc/Dex2C.cpp:119:41: error: 'INT32_MIN' was not declared in this scope } else if (val < static_cast(INT32_MIN)) { ^ make: *** [obj/local/armeabi-v7a/objs/nc/nc/Dex2C.o] Error 1

gtict112 avatar Nov 16 '19 03:11 gtict112

ndk版本是多少,用最新的试试.

amimo avatar Nov 16 '19 03:11 amimo

用是19.2.5345600版本,电脑是mac系统的

gtict112 avatar Nov 16 '19 03:11 gtict112

我都是在ubuntu下测试的,mac我没有测试过.你先网上看看" 'INT64_MAX' was not declared in this scope" 这种错误怎么解决的,有可能是哪个头文件没有include进来.我晚上看看.

amimo avatar Nov 16 '19 03:11 amimo

换了ndk20版本,没有上面的问题了。现在有个 [ERROR ] dcc: Compile app-releasenode222.apk failed! Traceback (most recent call last): File "dcc.py", line 441, in dcc_main(infile, filtercfg, outapk, do_compile, project_dir, source_archive) File "dcc.py", line 395, in dcc_main copy_compiled_libs(project_dir, decompiled_dir) File "dcc.py", line 242, in copy_compiled_libs raise Exception("ABI %s is not supported!" % abi) Exception: ABI arm64-v8a is not supported! 这个问题怎么处理

gtict112 avatar Nov 16 '19 06:11 gtict112

vi project/jni/Application.mk

把第4行打开,第5行注释掉. 看来我这个提示做得很搓啊,之前有人问过,应该做成自动编译原包支持的abi的.

amimo avatar Nov 16 '19 06:11 amimo

[ERROR ] dcc: Compile app-releasenode222.apk failed! Traceback (most recent call last): File "dcc.py", line 441, in dcc_main(infile, filtercfg, outapk, do_compile, project_dir, source_archive) File "dcc.py", line 395, in dcc_main copy_compiled_libs(project_dir, decompiled_dir) File "dcc.py", line 242, in copy_compiled_libs raise Exception("ABI %s is not supported!" % abi) Exception: ABI x86 is not supported! 打开第四行了,还是错误,,应该是没判断libs目录存不存在,我这个app本身没有lib目录的

gtict112 avatar Nov 16 '19 07:11 gtict112

把第四行改成这样.加上x86

APP_ABI := armeabi-v7a arm64-v8a x86

amimo avatar Nov 16 '19 07:11 amimo

可以了。APP_ABI := armeabi-v7a arm64-v8a x86 x86_64,,看看能不能跑先不知道啥原因,我的apktool路径都要全路径。

------------------ 原始邮件 ------------------ 发件人: "amimo"<[email protected]>; 发送时间: 2019年11月16日(星期六) 下午3:10 收件人: "amimo/dcc"<[email protected]>; 抄送: "helloworld"<[email protected]>; "Author"<[email protected]>; 主题: Re: [amimo/dcc] 帮忙看下,我直接运行dcc.py文件,报错 (#11)

把第四行改成这样.加上x86 APP_ABI := armeabi-v7a arm64-v8a x86
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.

gtict112 avatar Nov 16 '19 08:11 gtict112

1-16 15:05:05.252 25510-25510/? E/AndroidRuntime: FATAL EXCEPTION: main Process: com.lfgam.xinji, PID: 25510 java.lang.UnsatisfiedLinkError: No implementation found for void com.lfgam.xinji.ActiveCodeActivity.onCreate(android.os.Bundle) (tried Java_com_lfgam_xinji_ActiveCodeActivity_onCreate and Java_com_lfgam_xinji_ActiveCodeActivity_onCreate__Landroid_os_Bundle_2) 安装报错。

gtict112 avatar Nov 16 '19 08:11 gtict112

需要插入加载libnc.so代码,参考这个回复

amimo avatar Nov 16 '19 08:11 amimo

还是不太明白,是要原工程加入 try { System.loadLibrary("nc"); } catch (UnsatisfiedLinkError e) { e.printStackTrace(); }这代码,,还是处理过后的app加入smali 代码加载nc库文件

gtict112 avatar Nov 16 '19 08:11 gtict112

加载库有两种改法. 1.有工程源码,改源码,就用这个try catch 2.没有java源码,改smali.参考我回复的smali.

amimo avatar Nov 16 '19 08:11 amimo

按照第二种方法处理了一下 1:先把预先准备的好app,反编译加上nc代码 2:再重新打包成新包, 3:python3 dcc.py test2.apk -o out.apk 处理下生成out.apk,再生成签名安装, 可以安装成功并运行,nc库也在进去带app内存当中(b3b67000-b3b68000 rw-p 00029000 fe:00 999738 /data/app/com.gam.xinji-1/lib/arm/libnc.so)。 但是我反编译out.apk。。java代码并没有处理,还是原来带代码代码。不知道哪里问题了

gtict112 avatar Nov 16 '19 10:11 gtict112

你看这个方法的代码是不是已经隐藏了 "Java_com_lfgam_xinji_ActiveCodeActivity_onCreate". 如果你要隐藏所有方法,把filter.txt文件最后一行打开.

amimo avatar Nov 16 '19 10:11 amimo

1:没有开启最后一行,ActiveCodeActivity  这个类 public native void onCreate(Bundle bundle);已经隐藏了。其它没有类没有隐藏

2:开启最后一行.*; ,出现如下错误,但可以运行编译

Traceback (most recent call last):

  File "dcc.py", line 347, in compile_dex

    code = compiler.get_source_method(m)

  File "/Users/kwing/PycharmProjects/dcc/dex2c/compiler.py", line 557, in get_source_method

    irmethod = z.process()

  File "/Users/kwing/PycharmProjects/dcc/dex2c/compiler.py", line 170, in process

    self.build()

  File "/Users/kwing/PycharmProjects/dcc/dex2c/compiler.py", line 208, in build

    self.verify_phi_operand_type()

  File "/Users/kwing/PycharmProjects/dcc/dex2c/compiler.py", line 245, in verify_phi_operand_type

    raise Exception("inconsistency phi operand type %s %s %s" % (phi, same_type, op_type))

Exception: inconsistency phi operand type v7_7 I Ljava/lang/String;

[WARNING ] dcc: compile method failed:Lcom/lfgam/xinji/utils/AppInfoUtils;getCpuName()Ljava/lang/String; (inconsistency phi operand type v0_4 I Ljava/lang/String;)

Traceback (most recent call last):

  File "dcc.py", line 347, in compile_dex

    code = compiler.get_source_method(m)

  File "/Users/kwing/PycharmProjects/dcc/dex2c/compiler.py", line 557, in get_source_method

    irmethod = z.process()

  File "/Users/kwing/PycharmProjects/dcc/dex2c/compiler.py", line 170, in process

    self.build()

  File "/Users/kwing/PycharmProjects/dcc/dex2c/compiler.py", line 208, in build

    self.verify_phi_operand_type()

  File "/Users/kwing/PycharmProjects/dcc/dex2c/compiler.py", line 245, in verify_phi_operand_type

    raise Exception("inconsistency phi operand type %s %s %s" % (phi, same_type, op_type))

Exception: inconsistency phi operand type v0_4 I Ljava/lang/String;

[WARNING ] dcc: compile method failed:Lokhttp3/Headers;of([Ljava/lang/String;)Lokhttp3/Headers; (unkonw type vResult_1)

Traceback (most recent call last):

  File "dcc.py", line 347, in compile_dex

    code = compiler.get_source_method(m)

  File "/Users/kwing/PycharmProjects/dcc/dex2c/compiler.py", line 557, in get_source_method

    irmethod = z.process()

  File "/Users/kwing/PycharmProjects/dcc/dex2c/compiler.py", line 170, in process

    self.build()

  File "/Users/kwing/PycharmProjects/dcc/dex2c/compiler.py", line 207, in build

    self.verify_operand_type()

  File "/Users/kwing/PycharmProjects/dcc/dex2c/compiler.py", line 229, in verify_operand_type

    raise Exception('unkonw type %s' % var)

Exception: unkonw type vResult_1

3:有什么办法可以去掉一些类不nation化,,比如系统类不nation化,举个例子看看?

------------------ 原始邮件 ------------------ 发件人: "amimo"<[email protected]>; 发送时间: 2019年11月16日(星期六) 晚上6:17 收件人: "amimo/dcc"<[email protected]>; 抄送: "helloworld"<[email protected]>; "Author"<[email protected]>; 主题: Re: [amimo/dcc] 帮忙看下,我直接运行dcc.py文件,报错 (#11)

你看这个方法的代码是不是已经隐藏了 "Java_com_lfgam_xinji_ActiveCodeActivity_onCreate". 如果你要隐藏所有方法,把filter.txt文件最后一行打开.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.

gtict112 avatar Nov 16 '19 10:11 gtict112

这是我在类型推导失败或者我检测到类型推导不正确抛的异常,程序应该还是能正常运行. 支持正则过滤需要编译和禁止编译的方法.filter.txt里面有,你看我处理demo和onCreate的写法.

amimo avatar Nov 16 '19 10:11 amimo

ok,确实是可以编译,filter.txt文件我再试试怎么规划。编译时间真的要很长,,谢谢啦

------------------ 原始邮件 ------------------ 发件人: "amimo"<[email protected]>; 发送时间: 2019年11月16日(星期六) 晚上6:40 收件人: "amimo/dcc"<[email protected]>; 抄送: "helloworld"<[email protected]>; "Author"<[email protected]>; 主题: Re: [amimo/dcc] 帮忙看下,我直接运行dcc.py文件,报错 (#11)

这是我在类型推导失败或者我检测到类型推导不正确抛的异常,程序应该还是能正常运行. 支持正则过滤需要编译和禁止编译的方法.filter.txt里面有,你看我处理demo和onCreate的写法.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.

gtict112 avatar Nov 16 '19 10:11 gtict112

No implementation found for void de.robv.android.xposed.mods.tutorial.AutoHook.loadPrefs() filter.txt文件里面加入了.loadPrefs(. 规则,提示报错

反编译出来确实存在private native void loadPrefs();
public JApplication() { System.loadLibrary("nc"); } 这个代码是放在application继承类里面 app运行也没有加载进去nc库,是什么情况

gtict112 avatar Nov 16 '19 14:11 gtict112

加载的时机可能还是晚了。你在JApplication的静态代码块加载试试。 不行再把完整的错误栈发一下。

amimo avatar Nov 16 '19 15:11 amimo

我这个是xposed插件 入口是auto这个类 public AutoHook() { System.loadLibrary("nc"); } Failed to load class de.robv.android.xposed.mods.tutorial.AutoHook java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.lfgam.xinji-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]] couldn't find "libnc.so" at java.lang.Runtime.loadLibrary(Runtime.java:367) at java.lang.System.loadLibrary(System.java:1076) at de.robv.android.xposed.mods.tutorial.AutoHook.(AutoHook.java:81) at java.lang.Class.newInstance(Native Method) at de.robv.android.xposed.XposedInit.loadModule(XposedInit.java:546)

gtict112 avatar Nov 18 '19 02:11 gtict112

很久很久以前,我玩xposed的时候是这样加载native库的,不知道xposed的api现在变什么样了,你可以参考下. 我是在IXposedHookLoadPackage.handleLoadPackage使用下面的代码加载的

java.lang.System.load("/data/data/" + 插件包名 + "/lib/" + "libnc.so");

amimo avatar Nov 18 '19 02:11 amimo

放在handleLoadPackage 下面也是找不到路径,不知道是不是系统版本问题,还在摸索中

gtict112 avatar Nov 20 '19 10:11 gtict112

确定so已经解压出来,并且加载路径是对的? 7+可能会有namespace的问题.

amimo avatar Nov 20 '19 10:11 amimo

确定路径是对的,,现在我系统是6.0. 插件没处理先都是运行正常的,,处理后就是说找不到nc路径

gtict112 avatar Nov 20 '19 10:11 gtict112

Log看看,我之前在4.4上是可以加载native库的.

amimo avatar Nov 20 '19 10:11 amimo

public void handleLoadPackage(LoadPackageParam loadPackageParam) throws Throwable {
    String str;
    Exception e;
    Throwable th;
    LoadPackageParam loadPackageParam2 = loadPackageParam;
    System.loadLibrary("/data/app/com.lfgam.xinji-1/lib/libnc.so");

这个是现在改成data/app目录下的代码。 报错 dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.lfgam.xinji-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]] couldn't find "lib/data/app/com.lfgam.xinji-1/lib/libnc.so.so" at java.lang.Runtime.loadLibrary(Runtime.java:367) at java.lang.System.loadLibrary(System.java:1076) at de.robv.android.xposed.mods.tutorial.AutoHook.handleLoadPackage(AutoHook.java) at de.robv.android.xposed.IXposedHookLoadPackage$Wrapper.handleLoadPackage(IXposedHookLoadPackage.java:34) at de.robv.android.xposed.callbacks.XC_LoadPackage.call(XC_LoadPackage.java:61) at de.robv.android.xposed.callbacks.XCallback.callAll(XCallback.java:106) at de.robv.android.xposed.XposedInit$2.beforeHookedMethod(XposedInit.java:134) 改成data/app目录下参考下https://bbs.pediy.com/thread-251171.htm,,难道要改成callemethed这样

如果改成data/data/com.lfgam.xinji/lib/libnc.so目录,就会报错找不到data/data/下的文件

gtict112 avatar Nov 20 '19 10:11 gtict112

大佬,用这个api, java.lang.System.load,你这个路径下次安装就会变的.用我的那个写法,单用户下路径是固定的.

amimo avatar Nov 20 '19 10:11 amimo

1:现在 改成 public AutoHook() { System.load("/data/data/com.lfgam.xinji/lib/libnc.so"); }还是报错,多了armeabi-v7a java.lang.UnsatisfiedLinkError: dlopen failed: library "/data/data/com.lfgam.xinji/armeabi-v7a/lib/libnc.so" not found at java.lang.Runtime.load(Runtime.java:332) at java.lang.System.load(System.java:1069) at com.example.hrst.xposedtest.Test.handleLoadPackage(Test.java:188) at de.robv.android.xposed.IXposedHookLoadPackage$Wrapper.handleLoadPackage(IXposedHookLoadPackage.java:34) at de.robv.android.xposed.callbacks.XC_LoadPackage.call(XC_LoadPackage.java:61) 在我手机里面多路径没有armeabiv7a的 /data/data/com.lfgam.xinji/lib root@shamu:/data/data/com.lfgam.xinji/lib #

gtict112 avatar Nov 20 '19 13:11 gtict112

apk里面就没有这个so库吧。 你先手动复制一个libnc.so到lib下面,然后用绝对路径加载。

amimo avatar Nov 20 '19 13:11 amimo

1:libnc.so这个文件都有,每个abi版本nc文件都有,安装后应该arm/libnc.so这目录的 2:/data/data/com.lfgam.xinji/lib/这目录是我写死的,libnc.so这确实也有,,但报错是另外一个目录

gtict112 avatar Nov 20 '19 13:11 gtict112