RfidResearchGroup/RFIDtools

如何编译最新版本的 client

jshensh opened this issue · 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

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

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

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

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

好嘞谢谢我一会试一下

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

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 就是个可执行的二进制文件?

Dliv3 commented

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

遇到和@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。。所以现在还是有问题

Dliv3 commented

遇到和@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同样的问题,用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的问题,用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

Dliv3 commented

我编译了一下 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

Dliv3 commented

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

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

请教如何编译libpm3rrg_cmd.so

Dliv3 commented

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

请教如何编译libpm3rrg_cmd.so

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

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

请教如何编译libpm3rrg_cmd.so

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

水平有限不知道怎么搞

Dliv3 commented

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 ..

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

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

但是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

但是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

简约界面 闪退

但是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 吧,我这正常

termux

termux界面正常

termux

termux界面正常

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

termux

termux界面正常

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

Dliv3 commented

termux

termux界面正常

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

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

重构阶段的代码我建议你们先以测试心态用,或者干脆不用,回滚到重构之前的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. 优化通信和稳定性管理。

termux

termux界面正常

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

termux

termux界面正常

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

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

是的,故意用的 16b5d81

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

termux

termux界面正常

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

termux

termux界面正常

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

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

是的,故意用的 16b5d81

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

我编译了一下 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吗