1 Le4fun 2017-09-17 14:08:06 +08:00 没太明白 Java 是要 jar 下载放项目里才可以 |
2 TakWolf 2017-09-17 14:14:02 +08:00 android.* 包需要在 Android 环境下才能运行,JavaSE 环境不行。 楼主反编译成功了,需要用 Java 标准库替换 android 的一些组件,保证代码可以运行在 javaSe 环境。 然后才能用 JPype 去调用。 |
3 Marsss OP @TakWolf 意思是,这种 android.*需要另外用 java 标注库来重新写么,那么能不能大概指点一下图片里的那两个函数是起怎么作用,该怎么用 java 标准库来实现呢? |
4 zengmingyang96 2017-09-17 19:27:29 +08:00 elapsedRealtime 函数返回的是手机自启动以来的毫秒数。 这个时间可能和加密有关 你导入 jar 包没用的,这个方法 JNI 调用的,除非你能搞到动态库 ``` /** * Returns milliseconds since boot, including time spent in sleep. * * @return elapsed milliseconds since boot. */ native public static long elapsedRealtime(); ``` |
5 zengmingyang96 2017-09-17 19:29:00 +08:00 |
6 DouO 2017-09-17 19:39:28 +08:00 `implementation 'com.google.android:android:4.1.1.4'` |
7 DouO 2017-09-17 19:40:35 +08:00 |
8 tairan2006 2017-09-17 19:41:03 +08:00 把安卓系统库替换掉=,= |
![]() | 9 jedihy 2017-09-18 07:09:37 +08:00 ``` public static App a() { return b; } ``` 单例? |
10 Marsss OP 谢谢大家的讨论,看大家的回复,我的理解是,想直接复现源码并不是靠谱,网上看了一些资料后,我考虑去琢磨一下 xposed,去 hook 相关函数打印变量,可能会稍微坑少一点。 |
![]() | 11 yzmm 2017-09-18 10:39:09 +08:00 楼主你看到的代码是被混淆之后的,所以会出现这种无聊的方法,其实就是不下让你看到真实逻辑。你在 AS 里面配置 gradle 把你反编译的 jar 加进来就可以调用了。 |
![]() | 12 vjnjc 2017-09-18 11:12:44 +08:00 我感觉一个可行的方式是: 用这部分代码嵌在你的 android 的程序里面,然后 server 用推送的方式向 android app 询问加密 string。 假如按照你现在的思路,你需要看懂他的 app,然后把相关 android 的 api 换成 javase 的 api,并且因为你是 server 程序,并没有手机启动时间。。。 |
13 bashbot 2017-09-19 17:09:59 +08:00 Android 的 SDK 中有相关的 jar,你下载 android-sdk 把 jar 加载到项目中就能找到这些包了。 APK 反编译的话,apktool 和 jd-gui 都挺好的。 你需要把加密的代码抠出来,然后把 android 相关的调用替换掉,标准 JRE 中不能运行 android 包 |