首页
论坛
课程
招聘
[原创]Android逆向利器,直接将apk转换为可二次开发的Android工程,提供So hook Api,il2cpp c++脚手架
3天前 1692

[原创]Android逆向利器,直接将apk转换为可二次开发的Android工程,提供So hook Api,il2cpp c++脚手架

3天前
1692

--2020-10-19更新帖子---
整体流程已经完全ok,遇到问题请提交issue
持续优化中---

 

师傅领进门,修行看个人哈
传送门
FakerAndroid Github

简介

  • 直接将Apk文件转换为可以进行二次开发的Android项目的工具,支持so hook,对于il2cpp的游戏apk直接生成il2cpp c++脚手架
  • 将痛苦的逆向环境,转化为舒服的开发环境,告别汇编,告别二进制,还有啥好说的~~!

    特点

  • 基于AndroidStudio进行smali修改编译
  • 提供Java层代码覆盖及继承替换的脚手架
  • 提供so函数Hook Api
  • 对于il2cpp的游戏apk直接生成il2cpp c++脚手架
  • 无限的可能性和扩展性,能干啥你说了算~(比如把抖音改成快手,把快手改成抖音,做一个抖音快手版再做一个快手抖音版,好屌哦)

    运行环境

  • Java
  • il2cpp游戏Apk,非windows无法生成il2cpp c++脚手架

    使用方式

  • 下载FakerAndroid.jar
  • cmd命令行 cd <FakerAndroid.jar平级目录>
  • cmd命令行 java -jar FakerAndroid.jar fk <apkpath> (项目生成路径与apk文件平级) 或 java -jar FakerAndroid.jar fk <apkpath> -o <outdir>
  • 例:java -jar FakerAndroid.jar fk D:\apk\test.apkjava -jar FakerAndroid.jar fk D:\apk\test.apk -o D:\test

    生成的Android项目二次开发教程

    1、打开项目
  • Android studio直接打开工具生成的Android项目
  • 存在已知缺陷,res下的部分资源文件编译不过,需要手动修复,部分Manifest标签无法编译需要手动修复
    2、AndroidStudio安装FakerAndroid-Idea插件
  • 下载FakerAndroid-Idea
  • 安装教程AndroidStudio File->Settings->plugins->setting->install from disk->重新启动AndroidStudio
    3、调试运行项目
  • AndroidStudio Gradle->javaScaffoding->build->build
  • AndroidStudio->build->FakeSmali->等待smali文件构建完成
  • Run 项目(提醒:DEX缓存原因,修改smali文件后调试运行需要先卸载手机调试包,另外il2cpp game apk 第一次编译脚手架会比较慢)
    4、进阶
  • 借助javaScaffoding 使用java代码对smali 类继承
    在javaScaffoding模块创建伪类,保持伪类类签名与要继承的类的smali文件路径名称对应->AndroidStudio右侧 Gradle->javaScaffoding->build->build,在主模块(app/src/main/java)中编写自己的类对伪类进行继承
  • 借助FakeSmali 使用java代码对smali 类替换
    在主模块(app/src/main/java)编写自己的类,类签名与要替换的类的smali文件路径名称对应
  • 借助FakeCpp 使用jni对so函数进行hook替换

实例
补充实例

 

生成项目的结果目录


[公告]《使用DCI技术进行全栈调试》训练营,硬件调试器你的,《软件调试》作者张银奎亲自授课!

最后于 18小时前 被tiantianfen编辑 ,原因:
收藏
点赞3
打赏
分享
最新回复 (24)
雪    币: 45
活跃值: 活跃值 (140)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tiantianfen 活跃值 3天前
2
0
木个人顶顶帖子问问问题啥的吗?
雪    币: 7
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_kunxjlsg 活跃值 3天前
3
0
看简介感觉不错,还没用过,有没有实例?
雪    币: 182
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_foyotena 活跃值 3天前
4
0
建议放个截图,方便看效果
雪    币: 564
活跃值: 活跃值 (1143)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
supperlitt 活跃值 3天前
5
0
66666666
雪    币: 4367
活跃值: 活跃值 (130)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
misskings 活跃值 3天前
6
0
支持。先star一个。晚点有空试试看
雪    币: 271
活跃值: 活跃值 (114)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
0

解压失败,咋弄

雪    币: 45
活跃值: 活跃值 (140)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tiantianfen 活跃值 3天前
8
0
解压是基于Apktool的,试试使用apktool可以decode吗?如果不能话,应该是安装包做了某种混淆导致的,这个需要你先基于Apktool可以对apk进行decode encode
雪    币: 45
活跃值: 活跃值 (140)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tiantianfen 活跃值 3天前
9
0
HI
雪    币: 29
活跃值: 活跃值 (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
amwpecel 活跃值 3天前
10
0
FakerTransfer.translate(apkFilePath); 是咋用的呀楼主
雪    币: 45
活跃值: 活跃值 (140)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tiantianfen 活跃值 3天前
11
0
amwpecel FakerTransfer.translate(apkFilePath); 是咋用的呀楼主[em_2]
目前没有打成可以执行文件,都是基于源码运行的,Windows IntelliJ IDEA
雪    币: 5810
活跃值: 活跃值 (463)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
黑洛 活跃值 1 2天前
12
0

emm直接运行提示:Android Source Generator: [FakerAndroid] Android SDK is not specified

挺奇怪的,理论上生成不需要Android SDK吧?

------------------------------------------------------

2019/10/17 18:25

原因是自动配置了IDEA Android SDK,设置回去就能成功构建。


最后于 2天前 被黑洛编辑 ,原因:
雪    币: 45
活跃值: 活跃值 (140)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tiantianfen 活跃值 2天前
13
0
黑洛 emm直接运行提示:Android&nbsp;Source&nbsp;Generator:&nbsp;[FakerAndroid]&nbsp;Android&n ...
最好用IDEA吧 需要lombok插件,AndroidStudio会自动识别为Android项目
雪    币: 270
活跃值: 活跃值 (67)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
笑对VS人生 活跃值 2天前
14
0
z这个可以有
雪    币: 21
活跃值: 活跃值 (64)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jfztaq 活跃值 2天前
15
0
看不太懂,希望能出个视频教程
雪    币: 295
活跃值: 活跃值 (220)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yy虫子yy 活跃值 2天前
16
0
后面的截图是Android Studio?
雪    币: 5810
活跃值: 活跃值 (463)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
黑洛 活跃值 1 2天前
17
0
tiantianfen 最好用IDEA吧 需要lombok插件,AndroidStudio会自动识别为Android项目

是idea生成的AS的项目 不过我示例APP还没编译成功。

最后于 2天前 被黑洛编辑 ,原因:
雪    币: 5810
活跃值: 活跃值 (463)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
黑洛 活跃值 1 2天前
18
0

示例项目编译通过了也能跑起来,不过试了一个其他的app(非unity游戏),发现了几个问题:
1 会自动指定proguard规则为unity的。
2 引用会自动带上unity的包。
3 重写的方法同上,会带上unity中的方法重写例子。
4 新项目编译Debug版本,在寻找依赖项的时候会去寻找release文件夹下的包(原因是找不到依赖项),因为release版本尚未构建,所以项目整体构建失败。
5 切换为release版本并修复资源后,native-lib仍会构建失败,没有提示具体错误信息,和示例项目对比后,发现FakeAndroid在生成AS项目的时候并没有把JNI文件夹一起复制过来,所以会缺少库导致编译失败(CMakeList中引用了一些库),复制过来以后构建成功,同时Debug版本也能构建成功了。

但是运行崩溃了,还没看原因,不过好歹能跑一下了,下午再看看能不能让她跑起来。


总之,示例项目是能用了。
目前我也就试了一个有简单混淆没有校验的app。

最后于 2天前 被黑洛编辑 ,原因:
雪    币: 26
活跃值: 活跃值 (91)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
huluxia 活跃值 1天前
19
0
顶,不知道效果怎么样。看评论好像不是容易操作
雪    币: 726
活跃值: 活跃值 (249)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
lhxdiao 活跃值 1天前
20
0
其实可以做的Simple和easy一些,例如用dex2jar把dex改jar并引入,再修改final继承,改manifest即可。不过对于加固应用,这种方法可能不太适合。支持一个。
雪    币: 244
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
bigc2001 活跃值 1天前
21
0
严重支持,,期待更方便的版本。
雪    币: 45
活跃值: 活跃值 (140)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tiantianfen 活跃值 21小时前
22
0
bigc2001 严重支持,,期待更方便的版本。
已经提供,命令行工具
雪    币: 45
活跃值: 活跃值 (140)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tiantianfen 活跃值 21小时前
23
0

帖子引用错误,不知道哪里可以删除,留着占楼层用吧

最后于 21小时前 被tiantianfen编辑 ,原因:
雪    币: 45
活跃值: 活跃值 (140)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tiantianfen 活跃值 21小时前
24
0
黑洛 示例项目编译通过了也能跑起来,不过试了一个其他的app(非unity游戏),发现了几个问题:1 会自动指定proguard规则为unity的。2 引用会自动带上unity的包。3&a ...


tiantianfen 活跃值 0秒前
  引用  编辑  举报 23 楼  0
1、不影响开发
2、如果非unity游戏可以删除lib引用,这个是一个demo架子同时可以支撑游戏
3、没看懂
4、运行前前请先执行AndroidStudio Gradle->javaScaffoding->build->build(依赖方式是comlieOnly,仅编译不打包,伪造smali类,用于app模块 java类做继承的架子,暂时没有详细的开发教程所以留了一个空模块,希望懂的人可以意会)
5、已经修复了

最后于 20小时前 被tiantianfen编辑 ,原因:
雪    币: 5810
活跃值: 活跃值 (463)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
黑洛 活跃值 1 18小时前
25
0
tiantianfen 黑洛 示例项目编译通过了也能跑起来,不过试了一个其他的app(非unity游戏),发现了几个问题:1&nbsp;会自动指定proguard规则为unity ...
除了5其他都可以自己解决。
游客
登录 | 注册 方可回帖
返回