首页
社区
课程
招聘
[免root] termux 中尝试模拟执行
发表于: 2025-1-3 00:58 2993

[免root] termux 中尝试模拟执行

2025-1-3 00:58
2993

相对于搭建ollvm平坦化的模拟执行,对于我这种懒人而言,是难以学习和使用的。
所以我想到了一种曲线方案
直接在cpu里运行汇编来找到真实的执行逻辑

但是会有几个绕不开的坎
寄存器

执行时pc的位置

因此我必须逐步的尝试并实现这些
首先实现的第一步就是load
我需要编写一个基于C的load.c将目标的汇编加载进内存中,并确保它处于一个新的线程,防止出现段错误而带着main线程陪葬。
由于是新电脑 所以安装了xshell
ddeK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6^5K9h3q4G2k6r3q4G2i4K6u0W2L8r3q4F1P5X3!0#2P5q4)9J5k6h3y4G2L8g2)9J5c8X3W2g2c8i4c8I4x3X3W2*7k6i4j5&6j5b7`.`.
随后在termux app中启动sshd 启动 ssh客户端
我的手机ip是192.168.1.17 + sshd:8022
图片描述

图片描述
这里已经有了clang环境
下一步 我们还需要安装gdb和peda-gdb
“git clone 6e6K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6D9L8$3&6Y4L8r3c8Q4x3V1k6H3k6h3c8S2i4K6u0W2k6$3W2@1 ~/peda
echo "source ~/peda/peda.py" >> ~/.gdbinit
echo "DONE! debug your program with gdb and enjoy"”
下一步还需要proot【模拟root的】(毕竟我的红魔因为懒没root)

图片描述
中 文 编 程

图片描述
最后以一种非常离谱的方式启动了
图片描述
然后最扯淡的来了
是的 我们开始模拟执行这个函数了
是的 是可以运行的!
图片描述
但是偶尔会有这种需要执行函数的
可以复制下一行的地址
图片描述
直接改PC寄存器
然后选择否 不给它异常状态
图片描述
我们就能继续走流程
以此类推
我们就可以在我们的手机上 真 模拟执行了
图片描述
虽然很扯淡
但是这个思路确实是可行的
只需要我去略微的 修改一下拿hex的py脚本和C代码
就可以组装出一个全自动的平坦化工具
更甚至的 尽管我很草台班子 但是根据这个cpu的执行过程,也可以委托gpt快速的(估计两三天是写不出来了)写一个对应的分支推测。
最后的
termux确实是个好东西
sshd也确实可以用xshell链接 用xftp去管理termux的文件
ida的server确实可以在termux中运行

并且 当termux处于root状态时 可以直接启动ida的server frida gdb 直接附加游戏或者app
顺带一提我的clang出问题了 所以我临时搭建了NDK直接编译

最后的 我十点下班到现在凌晨一点 三个小时能搓出这个东西我认为已经很快了
这只是提供给大家一个思路
这个东西其实可以封装成一个api 让py post给它模拟执行拿到流程后回到ida做出标注以及修改块即可。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 1
支持
分享
最新回复 (8)
雪    币: 10
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
感谢分享
2025-1-3 08:32
0
雪    币: 2603
活跃值: (4846)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
termux的fake root也能让frida附加进程吗
2025-1-3 08:39
0
雪    币: 38
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
默NJ termux的fake root也能让frida附加进程吗
我还有一个红米note11tpro 具备root权限
在termux中可以使用tsu进入包含termux的root模式
直接使用frida + pid + x.js进行hook
如果是非root的termux
因为一些未解锁的权限 即使使用proot等虚拟容器依然无法注入
有趣的是 ida可以在termux内进行随意的调试 并且tsu下可以对所有app进行调试
2025-1-3 10:46
1
雪    币: 301
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5
这种方案遇到一个需要库函数的就不行了 要是改进能自动补齐函数调用就好了
2025-1-7 15:51
0
雪    币: 301
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6
思路很不错
2025-1-7 15:52
0
雪    币: 38
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
7
软件君子 这种方案遇到一个需要库函数的就不行了 要是改进能自动补齐函数调用就好了
直接改pc寄存器跳过了,我对ollvm的理解不是很多,但是我认为库函数和返回结果不会影响实际上的跳转结果
2025-1-8 16:22
0
雪    币: 38
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8
更有趣的是事实上我可以直接编写termux 中执行的exec可执行程序 去dlopen别人的libxx.so,并直接加载和反调试,如果库本身有反调试行为的,我的loader也可以直接hook关闭它,并创建新的线程,去直接调用目标函数.
2025-1-8 16:23
1
雪    币: 38
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
9
默NJ termux的fake root也能让frida附加进程吗
不能了,因为proot无法真的给frida一个selinux(我忘记了技术细节),因此frida无法在免root情况下附加,但是呢,ida能附加是因为在termux的魔改libc的ptrace是可以使用的。
因此在同思路下
可以使用ptrace函数注入自己写的frida_loader 并进一步加载frida的库进入进程内,也依然可以实现对frida的调用和使用。
2025-1-14 20:22
1
游客
登录 | 注册 方可回帖
返回