成熟的App会Hook自己

简介: 成熟的App会Hook自己

一、目标


李老板: 奋飞呀,我都是自己了,还不是想怎么玩就怎么玩,还用Hook这么麻烦吗?


奋飞:男人要对自己狠一点。


我有一个 libtest.so,我调用它后,它会使用 android_log_print 输出一些信息,我想让它输出的内容加点私货。动手吧。

  • so hook
  • Dobby


二、步骤

先把so调用起来61.png


把so放在cpp的同级目录 jniLibs下面。 然后跑起来,输出:

2021-06-11 09:45:11.185 17916-18002/com.fenfei.dobbydemo D/mytest: call directly. 1
2021-06-11 09:45:11.185 17916-18002/com.fenfei.dobbydemo D/mytest: call from global ptr. 1
2021-06-11 09:45:11.185 17916-18002/com.fenfei.dobbydemo D/mytest: call from local ptr. 1
2021-06-11 09:45:11.185 17916-18002/com.fenfei.dobbydemo D/mytest: call from local ptr2. 1 (definitely failed when compiled with -O0)


我们的目标就是在这些输出里面加点私货。


Dobby


github.com/jmpews/Dobb… 是一个多平台的Hook库,反正很牛就对了。


git clone下来。

62.png


整个文件夹放到 CMakeLists.txtnative-lib.cpp 同级目录下面。


然后编辑 CMakeLists.txt 文件

# 这里指定静态链接,生成一个so;默认为 ON,生成两个so
set(GENERATE_SHARED OFF)
# 指定 dobby 库目录
set(DOBBY_SOURCE_DIR Dobby)
add_subdirectory(${DOBBY_SOURCE_DIR} dobby.out)
#end
......
# target_link_libraries 部分增加 dobby
target_link_libraries( # Specifies the target library.
                       native-lib
                       dobby
                       # Links the target library to the log library
                       # included in the NDK.
                       ${log-lib} )


然后加上Hook代码

#include <android/log.h>
#include "Dobby/include/dobby.h"
static int (*orig_log_print)(int prio, const char* tag, const char* fmt, ...);
static int my_libtest_log_print(int prio, const char* tag, const char* fmt, ...)
{
    va_list ap;
    char buf[1024];
    int r;
    snprintf(buf, sizeof(buf), "[%s] %s", (NULL == tag ? "" : tag), (NULL == fmt ? "" : fmt));
    va_start(ap, fmt);
    r = __android_log_vprint(prio, "Dobby_libtest", buf, ap);
    va_end(ap);
    return r;
}
__attribute__((constructor)) static void ctor() {
    DobbyHook((void *) DobbySymbolResolver(NULL, "__android_log_print"), (void *) my_libtest_log_print,(void **) &orig_log_print);
}


跑起来,体验一下。

2021-06-11 10:23:12.175 30447-30493/com.fenfei.dobbydemo D/Dobby_libtest: [mytest] call directly. 1
2021-06-11 10:23:12.175 30447-30493/com.fenfei.dobbydemo D/Dobby_libtest: [mytest] call from global ptr. 1
2021-06-11 10:23:12.175 30447-30493/com.fenfei.dobbydemo D/Dobby_libtest: [mytest] call from local ptr. 1
2021-06-11 10:23:12.175 30447-30493/com.fenfei.dobbydemo D/Dobby_libtest: [mytest] call from local ptr2. 1 (definitely failed when compiled with -O0)


私货整进去了, mytest:  整成了  Dobby_libtest: [mytest]


三、总结


Hook是经久不衰的话题,除了Hook别人,Hook自己也是很有意义的。

64.png

有的东西吧,外行人看起来很厉害,但是我们内行人看起来吧,那真xxx不是一般的厉害


TIP: 本文的目的只有一个就是学习更多的逆向技巧和思路,如果有人利用本文技术去进行非法商业获取利益带来的法律责任都是操作者自己承担,和本文以及作者没关系,本文涉及到的代码项目可以去 奋飞的朋友们 知识星球自取,欢迎加入知识星球一起学习探讨技术。有问题可以加我wx: fenfei331 讨论下。


关注微信公众号:  奋飞安全,最新技术干货实时推送


相关文章
|
JavaScript 数据安全/隐私保护 Python
Crack App | 某搜索 App 中关于 x 信文章检索功能的加密参数分析(Frida Hook 篇)
Crack App | 某搜索 App 中关于 x 信文章检索功能的加密参数分析(Frida Hook 篇)
128 0
|
JavaScript 数据安全/隐私保护
hook逆向autojs离线Dex加密的app(七)
hook逆向autojs离线Dex加密的app(七)
455 0
|
数据安全/隐私保护
hook逆向autojs离线Dex加密的app(六)
hook逆向autojs离线Dex加密的app(六)
297 0
|
数据安全/隐私保护
hook逆向autojs离线Dex加密的app(五)
hook逆向autojs离线Dex加密的app(五)
461 0
|
数据安全/隐私保护
hook逆向autojs离线Dex加密的app(四)
hook逆向autojs离线Dex加密的app(四)
331 0
|
数据安全/隐私保护
hook逆向autojs离线Dex加密的app(三)
hook逆向autojs离线Dex加密的app(三)
539 0
|
数据安全/隐私保护
hook逆向autojs离线Dex加密的app(二)
hook逆向autojs离线Dex加密的app(二)
759 0
hook逆向autojs离线Dex加密的app(二)
|
算法 安全 Java
某电商App Sign签名算法解析 内部类的Hook
某电商App Sign签名算法解析 内部类的Hook
某电商App Sign签名算法解析 内部类的Hook
|
移动开发
H5 跳转到app或者应用商店 vue3 hook写法
H5 跳转到app或者应用商店 vue3 hook写法
492 0
|
JavaScript Linux Android开发
H5 Web App 的性能测试平台 : 使用 Frida 实现 AOP 拦截 hook Android 原生应用的方法
H5 Web App 的性能测试平台 : 使用 Frida 实现 AOP 拦截 hook Android 原生应用的方法 在做 App 上的 WebView 容器中的 H5 Web App 的性能测试平台的时候,用到了这个 Frida MIS (6).png 简单记录下。
1570 0

热门文章

最新文章

  • 1
    MNN-LLM App:在手机上离线运行大模型,阿里巴巴开源基于 MNN-LLM 框架开发的手机 AI 助手应用
  • 2
    【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 3
    原生鸿蒙版小艺APP接入DeepSeek-R1,为HarmonyOS应用开发注入新活力
  • 4
    【Azure App Service】基于Linux创建的App Service是否可以主动升级内置的Nginx版本呢?
  • 5
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 6
    【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
  • 7
    【Azure Function】Function App出现System.IO.FileNotFoundException异常
  • 8
    【Azure Logic App】使用MySQL 新增行触发器遇见错误 :“Unknown column 'created_at' in 'order clause'”
  • 9
    阿里云APP备案流程图以及备案所需材料整理,跟着教程一步步操作
  • 10
    【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
  • 1
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    34
  • 2
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    29
  • 3
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    23
  • 4
    【Azure Function】Function App门户上的Test/Run返回错误:Failed to fetch
    31
  • 5
    陪玩APP推送配置:陪玩系统手机锁屏收不到推送?可能是这些原因!解决方案来了!
    34
  • 6
    小游戏源码开发之可跨app软件对接是如何设计和开发的
    33
  • 7
    原生鸿蒙版小艺APP接入DeepSeek-R1,为HarmonyOS应用开发注入新活力
    135
  • 8
    PiliPala:开源项目真香,B站用户狂喜!这个开源APP竟能自定义主题+去广告?PiliPala隐藏功能大揭秘
    60
  • 9
    语音app系统软件源码开发搭建新手启蒙篇
    44
  • 10
    MNN-LLM App:在手机上离线运行大模型,阿里巴巴开源基于 MNN-LLM 框架开发的手机 AI 助手应用
    884