Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

如何编译最新版本的 client #71

Open
jshensh opened this issue Jun 13, 2021 · 31 comments
Open

如何编译最新版本的 client #71

jshensh opened this issue Jun 13, 2021 · 31 comments

Comments

@jshensh
Copy link

jshensh commented Jun 13, 2021

多次使用 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
Copy link
Author

jshensh commented Jun 15, 2021

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

@xianglin1998
Copy link
Collaborator

xianglin1998 commented Jun 17, 2021

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
Copy link
Collaborator

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

@jshensh
Copy link
Author

jshensh commented Jun 17, 2021

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
Copy link
Collaborator

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

@jshensh
Copy link
Author

jshensh commented Jun 20, 2021

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
Copy link

Dliv3 commented Sep 17, 2021

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

@jshensh
Copy link
Author

jshensh commented Sep 17, 2021

遇到和@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
Copy link

Dliv3 commented Sep 17, 2021

遇到和@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
Copy link
Author

jshensh commented Sep 17, 2021

遇到和@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

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

@libin-ka
Copy link

遇到和@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
Copy link

Dliv3 commented Sep 18, 2021

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

Dliv3 commented Sep 18, 2021

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

@libin-ka
Copy link

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

请教如何编译libpm3rrg_cmd.so

@Dliv3
Copy link

Dliv3 commented Sep 19, 2021

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

请教如何编译libpm3rrg_cmd.so

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

@libin-ka
Copy link

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

请教如何编译libpm3rrg_cmd.so

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

水平有限不知道怎么搞

@Dliv3
Copy link

Dliv3 commented Sep 19, 2021

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

@jshensh
Copy link
Author

jshensh commented Sep 19, 2021

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

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

@jshensh
Copy link
Author

jshensh commented Sep 19, 2021

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

请教如何编译libpm3rrg_cmd.so

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

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

@jshensh
Copy link
Author

jshensh commented Sep 19, 2021

遇到和@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
Copy link

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

简约界面 闪退

@jshensh
Copy link
Author

jshensh commented Sep 19, 2021

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

@libin-ka
Copy link

termux

termux界面正常

@xianglin1998
Copy link
Collaborator

termux

termux界面正常

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

1 similar comment
@xianglin1998
Copy link
Collaborator

termux

termux界面正常

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

@Dliv3
Copy link

Dliv3 commented Sep 19, 2021

termux

termux界面正常

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

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

@xianglin1998
Copy link
Collaborator

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

@jshensh
Copy link
Author

jshensh commented Sep 19, 2021

termux

termux界面正常

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

termux

termux界面正常

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

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

是的,故意用的 16b5d81

@xianglin1998
Copy link
Collaborator

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

@libin-ka
Copy link

termux

termux界面正常

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

termux

termux界面正常

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

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

是的,故意用的 16b5d81

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

@xbebhxx3
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants