Android逆向技术49——Android集成Botan库
缘起是,发现这个库好久了,但是呢,一直也没在Android当中给用用,所以突然想起来,然后给搞一下,在Android当中来使用,讲实话,这个库的代码风格和逻辑写的还是蛮不错的,如果有兴趣的读者可以看一看。
环境准备
这里,我还是直接在mac上编译处理的,理论上在Linux上问题应该也不大,win上的话,读者们可能就需要自己尝试一下了。
-
NDK版本,这里采用的是25.1.893739
编译工作
这里,因为官方给出了具体的方案,这里咱们稍微改一下,改成和目标NDK一样的版本。
export AR=/Library/Android/sdk/ndk/25.1.8937393/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-a
export CXX=/Library/Android/sdk/ndk/25.1.8937393/toolchains/llvm/prebuilt/darwin-x86_64/bin/aarch64-linux-android33-clang++
./configure.py --os=android --cc=clang --cpu=arm64
make
按照上面的命令执行,还是非常顺利的,几乎没有什么问题就编译完成了。编译之后,我们会得到两个文件,一个是编译之后的头文件,另一个是编译之后的.a
文件。
集成工作
集成工作也非常的简单,如果看过我之前写的一篇集成其他的库的话,很容易就改改就能集成进去了。
移动文件到相应目录
具体结构如下所示,复制头文件和.a
文件。
修改构建文件
# ...
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-narrowing -std=c++20")
project("botandemo")
INCLUDE_DIRECTORIES(include)
add_library(libbotan
STATIC
IMPORTED)
# ...
set_target_properties(
libbotan
PROPERTIES IMPORTED_LOCATION
${CMAKE_SOURCE_DIR}/lib/arm64/libbotan.a)
target_link_libraries( # Specifies the target library.
botandemo
libbotan
# Links the target library to the log library
# included in the NDK.
${log-lib})
这里需要注意,SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-narrowing -std=c++20")
这个是必须要加的,否则的话,编译会报错,因为这个用了一些C++的特性,如果说不支持的话,这个库是用不了的。
测试成果
简单的写一个例子,有关于这个库的一些使用,也可以看下我之前写过的文章,介绍过部分的使用方法。
#include
#include
#include
#include "botan/hash.h"
#include "botan/symkey.h"
std::string md5(const std::string &message) {
auto hash = Botan::HashFunction::create("MD5");
auto result = hash->process(message);
return Botan::OctetString(result).to_string();
}
extern "C" JNIEXPORT jstring JNICALL
Java_com_littleq_botandemo_MainActivity_stringFromJNI(
JNIEnv *env,
jobject /* this */) {
std::string hello = "Hello from C++";
return env->NewStringUTF(md5(hello).c_str());
}
到这里,整个库就搞好了,非常的快速。
总结
对于这个库呢,是用纯c++写的一个密码学库,并且整个代码风格,我个人还是比较喜欢的,放到Android当中呢,就可以愉快的使用了,并且吧,这个库目前来说用的范围要比openssl要低一些,如果不熟悉,追进去分析代码,还是比较酸爽的。
参考资料
-
https://botan.randombit.net/handbook/building.html#for-android[1]
阅读全文
下载说明:
1、本站所有资源均从互联网上收集整理而来,仅供学习交流之用,因此不包含技术服务请大家谅解!
2、本站不提供任何实质性的付费和支付资源,所有需要积分下载的资源均为网站运营赞助费用或者线下劳务费用!
3、本站所有资源仅用于学习及研究使用,您必须在下载后的24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担!
4、本站站内提供的所有可下载资源,本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发),但本站不保证资源的准确性、安全性和完整性,用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug!如有链接无法下载、失效或广告,请联系客服处理!
5、本站资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您的合法权益,请立即告知本站,本站将及时予与删除并致以最深的歉意!
6、如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
7、如果您喜欢该资源,请支持官方正版资源,以得到更好的正版服务!
8、请您认真阅读上述内容,注册本站用户或下载本站资源即您同意上述内容!
原文链接:https://www.dandroid.cn/15220,转载请注明出处。
1、本站所有资源均从互联网上收集整理而来,仅供学习交流之用,因此不包含技术服务请大家谅解!
2、本站不提供任何实质性的付费和支付资源,所有需要积分下载的资源均为网站运营赞助费用或者线下劳务费用!
3、本站所有资源仅用于学习及研究使用,您必须在下载后的24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担!
4、本站站内提供的所有可下载资源,本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发),但本站不保证资源的准确性、安全性和完整性,用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug!如有链接无法下载、失效或广告,请联系客服处理!
5、本站资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您的合法权益,请立即告知本站,本站将及时予与删除并致以最深的歉意!
6、如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
7、如果您喜欢该资源,请支持官方正版资源,以得到更好的正版服务!
8、请您认真阅读上述内容,注册本站用户或下载本站资源即您同意上述内容!
原文链接:https://www.dandroid.cn/15220,转载请注明出处。
评论0