首页
课程
问答
CTF
社区
招聘
峰会
发现
排行榜
知识库
工具下载
看雪20年
看雪商城
证书查询
登录
注册
首页
社区
课程
招聘
发现
问答
CTF
排行榜
知识库
工具下载
峰会
看雪商城
证书查询
社区
Android安全
发新帖
17
7
[原创]React Native Hermes逆向
发表于: 2024-9-24 17:22
47042
[原创]React Native Hermes逆向
一颗小草
2024-9-24 17:22
47042
最近没什么事,找了个看视频App,发现又是广告又是视频植入的,烦不胜烦,想着花点时间去个广告捣鼓捣鼓。本文只为了技术分享讨论,切勿使用技术进行非法用途。 apk拿过来先拖动到jadx查看  loadAd大概率就是加载广告的地方,点到这个类中往下滑,发现有show方法,通过修改改对应dex的smail将show改为空,改好后将smail文件夹重新编译为dex,在放到jadx中验证是否错误。  上面这个是splash,然后依次将插屏,banner都像这样修改掉。  这都是基础的修改smail,不在本文中详细描述。 React native的代码打包都都放在assets下的index.android.bundle中,正常情况会将代码压缩,混淆,但是我这个apk中的index.android.bundle打开并未显示js代码,拖到notepad++中发现  乱码显示,摸索了一下java代码发现  这里比较可疑,应该是乱码的源头,然后搜索关键字Hermes,发现这是一个对于React native的JavaScript引擎,将js代码都编译为bytecode,Hermes引擎会优化React native应用的启动速度和文件大小。  本来想使用frida大法,将assets读取文件内容,执行Js引擎时将内容直接打印出来,无奈,找了半天源码没发现好的切入点,发现一个开源的反编译工具,hbctool,官方也有hbcdump提供反编译工具,使用hbcdump执行反编译提示 ``` Error: fail to deserializing bytecode: Wrong bytecode version. Expected 96 but got 90 ``` 看上去是我的index.android.bundle样本的hbc版本是90,我下载的最新版本hbcdump为96,找到hbcdump 90的工具后执行 ``` hbcdump.exe index.android.bundle -mode=hbc -out=myout.js disassemble ``` 在当前目录将会看到  反编译的结果,但是但是,还没这么快结束。由于我的目的是需要去广告,解锁会员功能,所以修改js代码后还需要回编译,但是官方的这个工具找了半天也没发现有什么文档说明怎么编译回去。无奈切换为另外一个作者的hbctool工具 **<mark class="encrypted">f4bK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6T1L8$3&6Y4N6s2u0G2M7q4)9J5c8X3S2T1j5%4c8G2L8$3I4Q4x3V1q4Q4x3V1p5`.</mark> 这个工具在pull request中有90和94的反编译源码提供,感谢每一个开源的作者。在文章末尾我也会将我使用到的代码上传提供下载使用。  将源码下载,在pycharm中打开,添加hbc90目录,  在__init__.py中添加90版本的处理,  执行disasm将会反编译文件,执行asm将会把反编译修改的的文件夹编译回index.android.bundle 反编译后的文件夹内容  instruction.hasm便是源码,string.json是字符表,metadata.json看上去是文件的描述符和完整性验证使用的文件,没有仔细研究这个文件。 按照我的目的我应该去修改instruction.hasm,打开instruction.hasm查看。  不认识这种代码,后来搜索到相关文章有描述操作符之类的说明,现在已经忘记了。 仔细看代码,和汇编有些相似,但是看上去比汇编简单很多,都是左边一个指令右边操作数,例如 ``` LoadConstTrue Reg8:22 将一个8位的寄存器22设置为true Mov Reg8:22, Reg8:25 将25寄存器的值赋值給寄存器22 LoadConstString Reg8:39, UInt16:16781 加载一个字符到39寄存器,字符id为16781,查看string.json可以找到这个字符的值。 { "id": 16781, "isUTF16": false, "value": "contain" } LoadConstTrue Reg8:4 将寄存器4设为true LoadConstFalse Reg8:4 将寄存器4设为false ``` 接下来只要找到Vip字样相关的地方,修改为true,将反编译后的文件夹重新编译为index.android.bundle,替换assets下面的index.android.bundle,使用apktool重新打包就完成了。
登录后可查看完整内容
传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!!
最后于
2024-9-27 13:36 被一颗小草编辑 ,原因:
#逆向分析
上传的附件:
hbc90.zip
(25.37kb,128次下载)
收藏
・
17
点赞
・
7
打赏
分享
分享到微信
分享到QQ
分享到微博
赞赏记录
参与人
雪币
留言
时间
PLEBFE
为你点赞!
2025-2-19 05:57
mb_rqtugypo
这个讨论对我很有帮助,谢谢!
2025-1-22 18:47
暴走的莎莉酱
感谢你的积极参与,期待更多精彩内容!
2024-11-16 01:29
软件君子
为你点赞!
2024-11-9 15:41
mb_wpitiize
+1
这个讨论对我很有帮助,谢谢!
2024-9-27 18:29
养只猫不好么
非常支持你的观点!
2024-9-26 13:18
逆天而行
感谢你分享这么好的资源!
2024-9-25 18:48
查看更多
赞赏
×
1 雪花
5 雪花
10 雪花
20 雪花
50 雪花
80 雪花
100 雪花
150 雪花
200 雪花
支付方式:
微信支付
赞赏留言:
快捷留言
感谢分享~
精品文章~
原创内容~
精彩转帖~
助人为乐~
感谢分享~
最新回复
(
14
)
bluegatar
雪 币:
6
活跃值:
(5959)
能力值:
( LV2,RANK:10 )
在线值:
发帖
4
回帖
242
粉丝
6
关注
私信
bluegatar
2
楼
js现在都native化了啊,真的烦
2024-9-26 00:09
0
养只猫不好么
雪 币:
1643
活跃值:
(4626)
能力值:
( LV2,RANK:10 )
在线值:
发帖
0
回帖
99
粉丝
1
关注
私信
养只猫不好么
3
楼
感谢分享
2024-9-26 13:18
0
一颗小草
雪 币:
711
活跃值:
(416)
能力值:
( LV2,RANK:10 )
在线值:
发帖
1
回帖
14
粉丝
10
关注
私信
一颗小草
4
楼
bluegatar
js现在都native化了啊,真的烦
还好,就是不知道这个格式的时候看着有点蒙,看过了之后就简单了
2024-9-27 13:35
0
溅厷
雪 币:
1010
活跃值:
(386)
能力值:
( LV2,RANK:10 )
在线值:
发帖
0
回帖
6
粉丝
0
关注
私信
溅厷
5
楼
支持一下 ,这个程序应该还算小,之前逆到了一个生成的strings都几十兆的应用,给我人看麻了
2024-9-27 16:51
0
暴走的莎莉酱
雪 币:
22
能力值:
( LV1,RANK:0 )
在线值:
发帖
0
回帖
4
粉丝
1
关注
私信
暴走的莎莉酱
6
楼
佬 90的工具有链接吗
2024-11-16 01:29
0
一颗小草
雪 币:
711
活跃值:
(416)
能力值:
( LV2,RANK:10 )
在线值:
发帖
1
回帖
14
粉丝
10
关注
私信
一颗小草
7
楼
暴走的莎莉酱
佬 90的工具有链接吗
看我文章中有写github地址,在项目中的pull request有90和94
2024-11-26 17:20
0
mb_rqtugypo
雪 币:
228
能力值:
( LV1,RANK:0 )
在线值:
发帖
0
回帖
1
粉丝
0
关注
私信
mb_rqtugypo
8
楼
你好 请教一下 为什么我的hbcdump.exe 不能反编译为js 我复制了你文中的指令 执行提示只能输入一个参数 应该如何操作才能变成js
2025-1-22 18:39
0
hhhaiai
雪 币:
2814
活跃值:
(1761)
能力值:
( LV2,RANK:10 )
在线值:
发帖
5
回帖
163
粉丝
2
关注
私信
hhhaiai
9
楼
666666
2025-1-24 13:06
0
mb_vqggfrzt
雪 币:
0
能力值:
( LV1,RANK:0 )
在线值:
发帖
0
回帖
5
粉丝
0
关注
私信
mb_vqggfrzt
10
楼
老哥hbcdump.exe 90版本可以提供一下嘛
2025-3-1 16:15
0
misskings
雪 币:
345
活跃值:
(10306)
能力值:
( LV9,RANK:240 )
在线值:
发帖
57
回帖
283
粉丝
569
关注
私信
misskings
4
11
楼
羡慕不用改metadata。那个校验麻烦的很
2025-3-11 17:07
0
iBa0
雪 币:
1901
活跃值:
(5948)
能力值:
( LV4,RANK:40 )
在线值:
发帖
6
回帖
493
粉丝
37
关注
私信
iBa0
12
楼
牛逼
2025-3-12 10:19
0
哇哈哈919
雪 币:
3120
活跃值:
(2159)
能力值:
( LV3,RANK:20 )
在线值:
发帖
8
回帖
20
粉丝
2
关注
私信
哇哈哈919
13
楼
大哥,hbcdump.exe 90 这个90的版本在哪里找到的呀,求分享,官网最新的是96 次新的是 89版本
2025-4-30 11:15
0
K4NG
雪 币:
533
活跃值:
(2548)
能力值:
( LV2,RANK:10 )
在线值:
发帖
3
回帖
175
粉丝
1
关注
私信
K4NG
14
楼
突然从人群中钻出来一个 hbcdump.exe
2025-6-9 18:28
0
掀起你的头盖骨
雪 币:
18
能力值:
( LV1,RANK:0 )
在线值:
发帖
0
回帖
6
粉丝
0
关注
私信
掀起你的头盖骨
15
楼
index.android.bundle没看到这个文件啊,倒是看到了common.bundle之类的文件
2025-12-10 16:23
0
游客
登录
|
注册
方可回帖
回帖
表情
雪币赚取及消费
高级回复
返回
一颗小草
1
发帖
14
回帖
10
RANK
关注
私信
他的文章
[原创]React Native Hermes逆向
47042
关于我们
联系我们
企业服务
看雪公众号
专注于PC、移动、智能设备安全研究及逆向工程的开发者社区
谁下载
×
babalove
瞧红尘
gtict
暮年之鼓
K4NG
NewMai
花情
卑鄙游侠
wx_小小制琴师
wx_私人账号定制
北门观雪
蜕无痕
lrzhao
看那是什么
iyue_t
_Miracles_
暴走的莎莉酱
wx_wyx
哇哈哈919
Tanuyoki0
mb_iwftxini
wen55444
爬虫不看学历
mb_xysjchnr
千屈
mb_oowzftna
mb_kyhjsytd
mb_4nrpVMxJ
Yuusha
GeQ1an
mb_vqggfrzt
mb_cdbbdfjl
一颗小草
mb_lmjlnzrh
mb_rqtugypo
往鉴
mb_sfpskrwt
hasoe
带带弟弟吧
mb_yyvcbkli
zhao3261
mb_cfgzxvbs
xle
mb_rfeucrmf
星辰北天
mb_hfpmtthz
npc0vo
mb_llrygall
mb_sjlmuxry
git_19676stevejubx
mb_mtuvizwh
mb_vxvwzxyr
mb_ztqcemce
mb_ietftmbl
mb_ppcxvqgb
mb_rooofjxx
mb_mywnpifi
mb_gzwuwqgj
mb_gctsxqon
mb_eayoutwf
git_36451hqdmnet
mb_tqcqnpsc
MENTAL
git_86741axiliya2568
mb_kujsrqqv
吃瓜侠
mb_lthgjpwj
看原图
赞赏
×
雪币:
+
留言:
快捷留言
为你点赞!
返回
顶部