第87天:APP攻防-安卓逆向篇&Smail语法&反编译签名重打包&Activity周期&Hook模块
本文发布于448天前,本文最后更新于427 天前,其中的信息可能已经过时,如有错误请留言或评论。

知识点

  1. APK逆向-数据修改-结构&格式
  2. APK逆向-逻辑修改-Smail语法
  3. APK逆向-视图修改-Activity&Xml

前置条件

  • 常见安卓逆向工具及环境:
    1. 安卓模拟器(最好root的真机)
      • 启动速度和优化率是雷电好
      • 主要还是看自己在哪个模拟器用着最方便,而且兼容性更好
      • 小迪准备了夜神和雷电(前两天刚卸载了雷电,裂开)
    2. Magisk&XP&LSP框架 HOOK环境
    3. Jadx-Gui 反编译Java代码查看器
      • 一般能自动化逆向的就是没有加壳的,加壳的只能逆向出来一部分
    4. ApkScan-PKID 查壳工具
    5. MT管理器&NP管理器 打包签名综合类
      • 推荐使用MT,NP有的时候有点bug,在打包签名的时候会失败
      • MT管理器:
        • 操作时需要登录账号,随便注册一个就行
        • 左上角点击->选择安装包提取->选择要提取的安装包->然后点击提取安装包->然后点击定位(自动跳转到提取出来的安装包位置)->点击提取出来的apk->点击查看->然后点击右上角三个点选择搜索->高级搜索->在下面的输入框中输入搜索的关键字->搜索出来后点击搜索到的文件进行查看
        • 注意:搜索时候不用修改上面的欲搜索文件名,本来是通配符*.*(也可以置空,但是除非你就是要搜索指定文件,不然不要动),不要修改,小迪直播的时候就是因为修改了这个没改回去,所以才导致搜不出来东西。
        • 小迪踩的坑,那个classes.dex我也没搞那个面具,但是还是打不开
      • NP管理器:
        • 使用方法和MT大致类似,两个配合使用,比如MT管理器有的虽然可以搜索出来,但是不能进行编辑,这时候就需要使用NP管理器进行搜索,进行编辑
    6. 开发组手&开发者组手 信息获取综合类
    7. 算法组手&XP&LSP框架模块 常见HOOK
    8. Smail语法查询 Smail逻辑修改辅助
    9. 脱壳相关:https://mp.weixin.qq.com/s/poQPuvaQPadQxRu_WGvy1A
      • 使用工具自动脱,手动脱壳的讲不了
  • 逆向流程:

➢APK逆向-数据修改-结构&格式

  • 演示APK:wuaipojie
  • 第一关

目录意义

数据格式

  • 呃呃呃,不知道是我没听到还是咋,好像没说啥?

➢APK逆向-逻辑修改-Smail语法

  • 演示APK:wuaipojie
  • 第二关
  • 该关若想一键三连,会弹窗显示请先获取十个硬币
  • 使用工具jadx-gui-1.4.7.exe分析该apk后,搜索文本,硬币,可以定位到实现该功能的代码段如下,
  • 然后在模拟器中使用NP管理器或者MT管理器搜索文本硬币,这里用的是NP,因为MT好像不能编辑这个。

判断逻辑

  • 这个就是修改条件判断,MT管理器里面好像有的搜不到,所以需要使用NP管理器,但是NP进行修改的时候是Smali语法,转换为java代码不能进行修改,所以需要修改Smali代码,这里就需要用到一个apk——Smali语法查询_1.0.0.apk,直接输入Smali语法进行查询,根据查询到的语法含义进行修改
  • 修改为自己需要的判断逻辑,小迪演示的时候是将ge改为了le,从而实现绕过。
  • 然后将新打包的apk进行安装,然后重新打开第二个,可以直接长按一键三连,不会显示先获取十个硬币

存储器值

  • 这个好像小迪没讲?
  • 他演示完修改判断逻辑之后测试了直接删除(#注释)掉if判断,发现没有成功,然后就说要学会多种方式修改就直接下一关了。
  • 后面尝试了一下多删除几行,我是直接从123行的if-ge开始删除到142行,重新打包安装后也可以直接一键三连

➢APK逆向-视图修改-Activity&Xml

  • 演示APK:wuaipojie
  • 第三关
  • 这个实际上就是前面目录意义中提到的组件Activity
  • 打开MT管理器->点击左上角三个杠->下滑找到Activity记录->点击后在弹出窗口中点击启动服务->然后重新打开测试软件wuaipojie的第三关->然后返回MT管理器->会发现捕捉到了很多Activity记录->单击即可复制类到剪贴板
    • 这里猜测选中的是com.zj.wuaipojie.ui.AdActivity
  • 然后使用NP管理器进行搜索,依旧是在APK包中的classes.dex中,单击选则Dex编辑Plus,进入后在搜索模块中直接搜索类名,搜索到后点击进入,进入后要是看不懂(因为进入后是smali语法),可以点击右上角转为java代码进行分析(也可以在jadx-gui-1.4.7.exe直接进行搜索,也可以搜索到,直接显示就是java代码)
  • 可以发现其中有个函数为loadAd,其中有个3000,联想到那个启动广告是停3秒,所以猜测就是那个广告的显示时间,因此在smali代码中的loadAd函数处进行修改,其中发现0xbb8,即为3000的十六进制表示,修改其为0x0后,重新保存打包apk进行安装,再次打开第三关后,发现确实没有弹窗了(但是小迪好像没发现,后面的东西也都不显示了,就是广告完了之后应该出现的东西)

时间机制

3.03补充,这里以下的还没有完善,暂时就写到这里,前几天开学加一些其他事情,所以没有时间继续完善了,之后要主攻考研,所以更新时间可能会拉得比较长,两三天或者四五天才会一更,感谢看我博客的迪友们,不好意思啊。


  • 正常广告要显示几秒后才会消失,我们将广告时间修改,从而使其不显示,

引用更改

 

HOOK模块

-实战案例1-淘小说-升级VIP
搜关键字-找引用ID-进入逻辑-修改返回值

-实战案例2-刷圈兔-去除广告
开发组手-布局查看-bannerViewPager-修改长宽

-实战案例3-元气壁纸-升级VIP
小黄抓包-改响应-重发固定(前端逻辑安全)
{
"code": 200,
"data": {
"id": 2220156,
"userId": "8kMP5il1",
"phoneNum": "13554365566",
"username": null,
"avatarUrl": null,
"coverUrl": null,
"gender": 0,
"vipType": 256,
"vipPastDueTime": 0,
"vipLabelLevel": 3,
"vipLabel": "元老用户",
"createTime": 1693635001297,
"updateTime": 1693635001297,
"vitalityVipPastDueTime":253392455349 ,
"accountSign": null,
"webBackground": null,
"unionId": null,
"age": 0,
"category": null,
"isVirtual": 0,
"qqUnionId": null,
"pcVipType": 256,
"pcVipPastDueTime": 253392455349,
"vitalityPcVipPastDueTime": 253392455349,
"token": "xxxxxxxxxxxxxxxx"
},
"error_msg": null
}

参考

学习内容均来自小迪安全系列课程:http://xiaodi8.com/

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇