RFIDtools icon indicating copy to clipboard operation
RFIDtools copied to clipboard

如何编译最新版本的 client

Open jshensh opened this issue 3 years ago • 31 comments

多次使用 Android Studio 编译后发现 apk 中 client 版本号均为 v4.9237-1850-g4ff8c44d proxmark 3 设备中已经刷入最新版的 v4.9237-3970-g899f269a9 配合使用后发现在小米 11 以及三星 S9 上存在识别错误信号的问题,完全无法正常使用。具体表现为每一次执行 lf search 都会识别到类型为 EM4x50 的 Tag,内容随机。 因为已经确认 .gitmodules 中使用的的确是官方库 RfidResearchGroup / proxmark3,所以希望可以指导一下修改哪个文件才能编译最新版本 client,谢谢! image

jshensh avatar Jun 13 '21 20:06 jshensh

刚刚删除这边的文件编译了一份试了一下 https://github.com/RfidResearchGroup/RFIDtools/tree/master/pm3rdv4rrg/src/main/jniLibs 才发现 libpm3rrg_cmd.so 不是实时编译的,需要自己编译然后替换掉,但我没找到源码。。 @xianglin1998

jshensh avatar Jun 15 '21 07:06 jshensh

1、下载proxmark3的RRG源码,使用cmake交叉编译,然后把so改名,放到jnilibs 2、成功!

交叉编译指令示范: image 具体看Android的官方API: Android NDK & CMAKE 官方教程 https://developer.android.google.cn/ndk/guides/cmake?hl=zh_cn

xianglin1998 avatar Jun 17 '21 03:06 xianglin1998

记得ARM固件也要刷到你的客户端跟随的版本,不要只更新其中之一。

xianglin1998 avatar Jun 17 '21 03:06 xianglin1998

1、下载proxmark3的RRG源码,使用cmake交叉编译,然后把so改名,放到jnilibs 2、成功!

交叉编译指令示范: image 具体看Android的官方API: Android NDK & CMAKE 官方教程 https://developer.android.google.cn/ndk/guides/cmake?hl=zh_cn

好嘞谢谢我一会试一下

jshensh avatar Jun 17 '21 03:06 jshensh

嗯,NDK工具安装一下就行,后期我将会改写依赖,将proxmark3.exe彻底独立,释放代码依赖,完成解耦。

xianglin1998 avatar Jun 17 '21 03:06 xianglin1998

1、下载proxmark3的RRG源码,使用cmake交叉编译,然后把so改名,放到jnilibs 2、成功!

交叉编译指令示范: image 具体看Android的官方API: Android NDK & CMAKE 官方教程 https://developer.android.google.cn/ndk/guides/cmake?hl=zh_cn

它这个。。编译出来似乎是个可执行文件,不是 libpm3rrg_cmd.so 阿。还是说,这个 libpm3rrg_cmd.so 不是 jniLib 就是个可执行的二进制文件?

jshensh avatar Jun 20 '21 17:06 jshensh

遇到和@jshensh同样的问题,用rfidtools(v1.4.9)+一加8(Android11 Hydrogen OS 11.0.12.12.IN21)读低频ID卡的时候每一次执行 lf search 都会识别到类型为 EM4x50 的 Tag,读出的数据随机,但是使用RRG proxmark3 macOS命令行是可以正确读出ID卡数据的。这个问题有被修复吗?

Dliv3 avatar Sep 17 '21 03:09 Dliv3

遇到和@jshensh同样的问题,用rfidtools(v1.4.9)+一加8(Android11 Hydrogen OS 11.0.12.12.IN21)读低频ID卡的时候每一次执行 lf search 都会识别到类型为 EM4x50 的 Tag,读出的数据随机,但是使用RRG proxmark3 macOS命令行是可以正确读出ID卡数据的。这个问题有被修复吗?

我不太会编译上边那个 jniLib 换 so。。所以现在还是有问题

jshensh avatar Sep 17 '21 07:09 jshensh

遇到和@jshensh同样的问题,用rfidtools(v1.4.9)+一加8(Android11 Hydrogen OS 11.0.12.12.IN21)读低频ID卡的时候每一次执行 lf search 都会识别到类型为 EM4x50 的 Tag,读出的数据随机,但是使用RRG proxmark3 macOS命令行是可以正确读出ID卡数据的。这个问题有被修复吗?

我不太会编译上边那个 jniLib 换 so。。所以现在还是有问题

看起来@xianglin1998 已经把编译好的so放到了repo里,https://github.com/RfidResearchGroup/RFIDtools/commit/a12a2e4cee5711d1bea0ad4f983bf0fba563aec1

Dliv3 avatar Sep 17 '21 08:09 Dliv3

遇到和@jshensh同样的问题,用rfidtools(v1.4.9)+一加8(Android11 Hydrogen OS 11.0.12.12.IN21)读低频ID卡的时候每一次执行 lf search 都会识别到类型为 EM4x50 的 Tag,读出的数据随机,但是使用RRG proxmark3 macOS命令行是可以正确读出ID卡数据的。这个问题有被修复吗?

我不太会编译上边那个 jniLib 换 so。。所以现在还是有问题

看起来@xianglin1998 已经把编译好的so放到了repo里,a12a2e4

阿看到了,晚一些回去测试一下

jshensh avatar Sep 17 '21 08:09 jshensh

遇到和@jshensh的问题,用rfidtools(v1.4.9)+一加8(Android11 Hydrogen OS 11.0.12.12.IN21)读同样的ID卡的时候每一次执行lf搜索都识别到类型为EM4x50的Tag,有没有被修复的问题?

我不太会编译上边那个 jniLib 换的。。所以现在还是有问题

装了@已经向林1998把编译好的所以可以了repo里,a12a2e4

阿看到了,晚一些回去测试一下

不用测试了 还是去年的 PM3V...RRG/Iceman/master/v4.9237-1850-g4ff8c44d..........2020-10-26 10:48:29

libin-ka avatar Sep 18 '21 03:09 libin-ka

我编译了一下 https://github.com/RfidResearchGroup/proxmark3/tree/v4.13441 的libpm3rrg_cmd.so,并且测试了用 libpm3rrg_cmd.so v4.13441 + 9ae12ee99e65ceaf96219aa35f5e7aab4a80f8f0 编译的apk的lf search功能已经可以正常运行了,如果@xianglin1998 可以接受二进制文件的PR,我可以提一个PR

libpm3rrg_cmd.so_arm64-v8a.zip

libpm3rrg_cmd.so_armeabi-v7a.zip

Dliv3 avatar Sep 18 '21 14:09 Dliv3

但是apk的动态按钮功能在新版被删掉了(捂脸

Dliv3 avatar Sep 18 '21 14:09 Dliv3

但是apk的动态按钮功能在新版被删掉了(捂脸

请教如何编译libpm3rrg_cmd.so

libin-ka avatar Sep 19 '21 02:09 libin-ka

但是apk的动态按钮功能在新版被删掉了(捂脸

请教如何编译libpm3rrg_cmd.so

就是按xianglin1998提供的方法编译,编译得到的proxmark elf文件里有导出函数,把proxmark文件直接重命名成libpm3rrg_cmd.so就可以了

Dliv3 avatar Sep 19 '21 14:09 Dliv3

但是apk的动态按钮功能在新版被删掉了(捂脸

请教如何编译libpm3rrg_cmd.so

就是按xianglin1998提供的方法编译,编译得到的proxmark elf文件里有导出函数,把proxmark文件直接重命名成libpm3rrg_cmd.so就可以了

水平有限不知道怎么搞

libin-ka avatar Sep 19 '21 14:09 libin-ka

https://github.com/RfidResearchGroup/proxmark3/blob/master/client/CMakeLists.txt

Android cross-compilation: (ANDROID_ABI=arm64-v8a for a 64b version)

cmake \
   -DCMAKE_TOOLCHAIN_FILE=<path-to-your-android-ndk>/build/cmake/android.toolchain.cmake \
   -DANDROID_ABI=armeabi-v7a \
   -DANDROID_NATIVE_API_LEVEL=android-19 \
   -DSKIPBT=1 -DSKIPPYTHON=1 -DSKIPPTHREAD=1 ..

Dliv3 avatar Sep 19 '21 14:09 Dliv3

但是apk的动态按钮功能在新版被删掉了(捂脸

我 checkout 到之前的 commit 再编译试一下

jshensh avatar Sep 19 '21 14:09 jshensh

但是apk的动态按钮功能在新版被删掉了(捂脸

请教如何编译libpm3rrg_cmd.so

就是按xianglin1998提供的方法编译,编译得到的proxmark elf文件里有导出函数,把proxmark文件直接重命名成libpm3rrg_cmd.so就可以了

原来还真就是直接重命名。。假的 so 阿

jshensh avatar Sep 19 '21 14:09 jshensh

遇到和@jshensh的问题,用rfidtools(v1.4.9)+一加8(Android11 Hydrogen OS 11.0.12.12.IN21)读同样的ID卡的时候每一次执行lf搜索都识别到类型为EM4x50的Tag,有没有被修复的问题?

我不太会编译上边那个 jniLib 换的。。所以现在还是有问题

装了@已经向林1998把编译好的所以可以了repo里,a12a2e4

阿看到了,晚一些回去测试一下

不用测试了 还是去年的 PM3V...RRG/Iceman/master/v4.9237-1850-g4ff8c44d..........2020-10-26 10:48:29

Screenshot_2021-09-19-22-50-52-805_com rfidresear 用了 https://github.com/RfidResearchGroup/RFIDtools/issues/71#issuecomment-922302399 的 so 文件可以了,发一下我编译的 apk,基于 16b5d8123f9505cc79973204184801cbae63b2ec 编译的 app_main-release.zip

jshensh avatar Sep 19 '21 14:09 jshensh

但是apk的动态按钮功能在新版被删掉了(捂脸

请教如何编译libpm3rrg_cmd.so

就是按xianglin1998提供的方法编译,编译得到的proxmark elf文件里有导出函数,把proxmark文件直接重命名成libpm3rrg_cmd.so就可以了

原来还真就是直接重命名。。假的 so 阿

遇到和@jshensh的问题,用rfidtools(v1.4.9)+一加8(Android11 Hydrogen OS 11.0.12.12.IN21)读同样的ID卡的时候每一次执行lf搜索都识别到类型为EM4x50的Tag,有没有被修复的问题?

我不太会编译上边那个 jniLib 换的。。所以现在还是有问题

装了@已经向林1998把编译好的所以可以了repo里,a12a2e4

阿看到了,晚一些回去测试一下

不用测试了 还是去年的 PM3V...RRG/Iceman/master/v4.9237-1850-g4ff8c44d..........2020-10-26 10:48:29

Screenshot_2021-09-19-22-50-52-805_com rfidresear 用了 #71 (comment) 的 so 文件可以了,发一下我编译的 apk,基于 16b5d81 编译的 app_main-release.zip

简约界面 闪退

libin-ka avatar Sep 19 '21 14:09 libin-ka

但是apk的动态按钮功能在新版被删掉了(捂脸

请教如何编译libpm3rrg_cmd.so

就是按xianglin1998提供的方法编译,编译得到的proxmark elf文件里有导出函数,把proxmark文件直接重命名成libpm3rrg_cmd.so就可以了

原来还真就是直接重命名。。假的 so 阿

遇到和@jshensh的问题,用rfidtools(v1.4.9)+一加8(Android11 Hydrogen OS 11.0.12.12.IN21)读同样的ID卡的时候每一次执行lf搜索都识别到类型为EM4x50的Tag,有没有被修复的问题?

我不太会编译上边那个 jniLib 换的。。所以现在还是有问题

装了@已经向林1998把编译好的所以可以了repo里,a12a2e4

阿看到了,晚一些回去测试一下

不用测试了 还是去年的 PM3V...RRG/Iceman/master/v4.9237-1850-g4ff8c44d..........2020-10-26 10:48:29

Screenshot_2021-09-19-22-50-52-805_com rfidresear 用了 #71 (comment) 的 so 文件可以了,发一下我编译的 apk,基于 16b5d81 编译的 app_main-release.zip

简约界面 闪退

还真没试过简约。。用 termux 吧,我这正常

jshensh avatar Sep 19 '21 15:09 jshensh

termux

termux界面正常

libin-ka avatar Sep 19 '21 15:09 libin-ka

termux

termux界面正常

是不是编译没用上最新的commit,最新的我测试过PM3的简约页面不会闪退,就是暂时删除了快捷按钮,不过也有可能是奇奇怪怪的问题导致的,因为在重构阶段。

xianglin1998 avatar Sep 19 '21 15:09 xianglin1998

termux

termux界面正常

是不是编译没用上最新的commit,最新的我测试过PM3的简约页面不会闪退,就是暂时删除了快捷按钮,不过也有可能是奇奇怪怪的问题导致的,因为在重构阶段。

xianglin1998 avatar Sep 19 '21 15:09 xianglin1998

termux

termux界面正常

是不是编译没用上最新的commit,最新的我测试过PM3的简约页面不会闪退,就是暂时删除了快捷按钮,不过也有可能是奇奇怪怪的问题导致的,因为在重构阶段。

最新的commit我试了,不会闪退,快捷按钮是出于什么考虑删掉了?其实还挺好用

Dliv3 avatar Sep 19 '21 15:09 Dliv3

重构阶段的代码我建议你们先以测试心态用,或者干脆不用,回滚到重构之前的commit去改pm3的依赖,这么说吧

  1. 重构之前的commit,简约界面用的是非cmd的so,那个是真的lib,有jniload函数映射的,需要下拉proxmark3的submodule去编译这个依赖,他会自动生成lib打包进去
  2. termux界面用的是cmd的so,就是proxmark可执行文件改名的,这个不依赖AndroidStudio的自动编译打包,需要开发者自己编译为对应平台的可执行文件后,改名丢进去。
  3. 更新可执行文件应当顺便更新pm3的资源包,不然可能导致hardnested或者其他的脚本,文本,图像资源无法使用,在assets目录下。
  4. 如果需要使用RFIDTools自带的固件烧写功能键你们还需要去更新固件包资源,也是在assets目录下。

总之记住,以前的版本,简约界面必须依赖proxmark3的submodule,termux界面必须依赖开发者的手动更新,以前以及现在的版本的resource资源必须要依赖开发者自己更新。

展望未来,我想做到

  1. proxmark3资源全部由开发者手动更新,但是提供一个开源的gui小程序去实现快速编译更新的能力,其实编译更新很简单,指定NDK的路径和pm3的路径,在有cmake的情况下可以直接编译,所以打算用Python实现这个GUI。
  2. 更美观简单的UI实现,现在的UI都太丑了,所以需要提升审美,换种风格。
  3. 优化通信和稳定性管理。

xianglin1998 avatar Sep 19 '21 15:09 xianglin1998

termux

termux界面正常

是不是编译没用上最新的commit,最新的我测试过PM3的简约页面不会闪退,就是暂时删除了快捷按钮,不过也有可能是奇奇怪怪的问题导致的,因为在重构阶段。

termux

termux界面正常

是不是编译没用上最新的commit,最新的我测试过PM3的简约页面不会闪退,就是暂时删除了快捷按钮,不过也有可能是奇奇怪怪的问题导致的,因为在重构阶段。

最新的commit我试了,不会闪退,快捷按钮是出于什么考虑删掉了?其实还挺好用

是的,故意用的 16b5d8123f9505cc79973204184801cbae63b2ec

jshensh avatar Sep 19 '21 15:09 jshensh

之所以删除easybutton,因为重构页面了,所以把页面能删除的,简化的都删掉,easybutton因为想改成悬浮球类似的东西,就先隐藏掉了,后期改好了会重新开放,现在重构阶段,不会更新到google play store,因此我可以大展拳脚,先改动测试。一些删掉的,后期会恢复使用,或者彻底废弃,easybutton是前者,后期改好了会恢复使用的,如果你很需要easybutton,并且有代码功底,你可以去改改代码,先恢复使用。

xianglin1998 avatar Sep 19 '21 15:09 xianglin1998

termux

termux界面正常

是不是编译没用上最新的commit,最新的我测试过PM3的简约页面不会闪退,就是暂时删除了快捷按钮,不过也有可能是奇奇怪怪的问题导致的,因为在重构阶段。

termux

termux界面正常

是不是编译没用上最新的commit,最新的我测试过PM3的简约页面不会闪退,就是暂时删除了快捷按钮,不过也有可能是奇奇怪怪的问题导致的,因为在重构阶段。

最新的commit我试了,不会闪退,快捷按钮是出于什么考虑删掉了?其实还挺好用

是的,故意用的 16b5d81

想把libpm3rrg_cmd.so和libpm3rrg_rdv4.so都换成https://github.com/RfidResearchGroup/proxmark3/tree/v4.13441 编译报错

libin-ka avatar Sep 21 '21 04:09 libin-ka

我编译了一下 https://github.com/RfidResearchGroup/proxmark3/tree/v4.13441 的libpm3rrg_cmd.so,并且测试了用 libpm3rrg_cmd.so v4.13441 + 9ae12ee 编译的apk的lf search功能已经可以正常运行了,如果@xianglin1998 可以接受二进制文件的PR,我可以提一个PR

libpm3rrg_cmd.so_arm64-v8a.zip

libpm3rrg_cmd.so_armeabi-v7a.zip

可以用邮件给我发送apk吗

xbebhxx3 avatar Jul 13 '22 10:07 xbebhxx3