深度研究报告:应用程序加固对抗对 VirtualApp 框架的生存风险与影响评估-by Gemini
深度研究报告:应用程序加固对抗对 VirtualApp 框架的生存风险与影响评估by Gemini.
1. 执行摘要VirtualApp(VA)框架作为Android生态系统中一种具有开创性的用户空间虚拟化技术,曾被视为实现应用多开、沙盒隔离及移动设备管理(MDM)的革命性方案。然而,当前该框架正面临前所未有的生存危机。本报告旨在通过详尽的技术解构、威胁情报分析及法律环境评估,全面剖析VirtualApp在对抗日益严苛的应用程序加固技术、操作系统架构限制以及恶意软件生态关联时的脆弱性。
分析显示,VirtualApp的生存空间正在被多方力量联合挤压。在技术层面,以360加固保、腾讯乐固(Legu)、梆梆安全(Bangcle)为代表的商业级加固方案,已经从早期的静态特征检测进化为基于内核系统调用(Syscall)拦截、内存完整性校验及指令流分析的深度对抗。VirtualApp所依赖的基于动态代理(Dynamic Proxy)和反射(Reflection)的HOOK机制,在面对Seccomp过滤器及内联汇编(Inline Assembly)系统调用检测时,显得愈发无力。
在操作系统层面,A ...
全球嵌入式实时操作系统深度研究报告(RT-Thread)-by Gemini
全球嵌入式实时操作系统深度研究报告:市场格局、技术评估与 RT-Thread 的崛起第一章 嵌入式计算范式的演进与实时操作系统(RTOS)的市场背景1.1 从微控制器到边缘智能:计算架构的代际变迁在过去的四十年中,嵌入式计算领域经历了一场深刻的范式转移,这种转移不仅重塑了硬件架构,更根本性地改变了软件工程的实施方式。在微控制器(MCU)发展的早期阶段,”裸机”(Bare-metal)编程是绝对的主流范式。工程师直接操作硬件寄存器,利用无限循环(Super Loop)和中断服务例程(ISR)来管理系统的逻辑。这种模式在处理简单的逻辑控制(如早期的洗衣机控制器或简单的传感器读取)时表现出极高的效率和确定性。然而,随着摩尔定律在半导体领域的持续生效,MCU 的性能呈现指数级增长,32 位架构(特别是 Arm Cortex-M 系列以及近年崛起的 RISC-V)的普及,使得嵌入式设备的计算能力不再是稀缺资源,而系统的逻辑复杂度、连接需求和人机交互(HMI)要求则成为了新的瓶颈 1。
在这一背景下,实时操作系统(RTOS)从高端工业和军工领域逐渐下沉,成为通用嵌入式开发的标配。RTOS 引入了多 ...
microG Services can't log in to Google servers
最近的google平板 , 使用MicorG登录google账户的时候,最后保存账户信息的时候提示错误:
There was a Problem Communicating with Google Servers. Try again later.
在网上搜了一下,
在 https://www.reddit.com/r/revancedapp/comments/13390dv/cant_connect_to_google_servers_in_vanced/?show=original
有讨论,恢复出厂可以解决. 我试了一下,确实是ok的.
由于不知道如何复现,就搁置了.
过了一段时间,又有一台设备出现了这个情况.
我实验了各种卸载重装MicroG, 都没有解决. 说明没有清除对地方.
问了一下GPT,回复如下:
microG 登录卡死时,最可疑的“罪魁祸首”清单结合 microG(GmsCore、GsfProxy、FakeStore 等)实现与 Google 的 Check-in / FCM / 账号链路,最常见会“卡住”的是下面这些文 ...
AOSP Tangorpro(Android14) 集成Google GMS三件套
最近在使用google 平板 Tangorpro来研究安卓Framework,因此刷成了可以自己编译的AOSP版本.
但是AOSP 开源代码没有自带Google Play应用商店, 通过查询,有通过 OpenGApp的方式来集成.
参考: https://github.com/opengapps/aosp_build
我的需求只需要集成三件套(Google服务框架、Google play商店和Google Play服务), 能从Google应用市场下载安装应用即可.
有没有更简单的集成方法呢?
第一个问题就是要下载一个跟本地设备匹配的APK版本, 这个可以从Tangorpro的原生ROM中提取出来.
可以从https://developers.google.com/android/drivers?hl=zh-cn 下载本设备对应的镜像文件.
把镜像里的三件套APK提取出来即可.
Image
路径
文件
包名
product.img
/product/priv-app/Phonesky
Phonesky.apk
com.android.v ...
Frida在dex2oat优化后hook的方法无效
调试发现,在hook Activity 的setRequestedOrientation(int requestedOrientation) 方法后, 有时候是正常的, 过一段时间之后就无效了.
经进一步定位分析,是发现经过dex2oat优化后, 应用使用base.odex来运行时,就变无效了.
那么到底这个方法有没有执行呢? 在AOSP源码里加了一行log:
123456789101112public void setRequestedOrientation(@ActivityInfo.ScreenOrientation int requestedOrientation) { Slog.v(TAG, "setRequestedOrientation " + requestedOrientation); if (requestedOrientation == mLastRequestedOrientation) { return; } if (mParent ...
修改Android内核输出syscall某些调用日志
想要使用Seccomp 来查看某个apk的syscall日志, 发现apk本身有反Seccomp机制, 设置PR_SET_NO_NEW_PRIVS 就闪退了.后续更无法使用 prctl PR_SET_SECCOMP, SECCOMP_MODE_FILTER
只好从内核层直接输入日志.
烧录内核的步骤主要参考:
https://blog.lleavesg.top/article/pixel5-kernel-build
https://github.com/zhanghecn/luckzh_android_flash_notes/blob/main/doc/note3-kernel/index.md
可以成功烧录内核. 主要的注意点就是: 解压原始boot.img的得到的boot.img-ramdisk.cpio.lz4 并将其放入android-kernel目录中. 再打包重新烧录 boot.img 和vendor_boot.img两个分区即可.
1.取消PR_SET_NO_NEW_PRIVS 设置后status状态值这个修改比较简单, ...
Android 编译 FFMPEG 7.0.2 + x264错误排查.
1.使用android-ndk-r23c来编译FFMPEG 和X264,提示X264找不到.1**ERROR: x264 not found using pkg-config**
参考Chat-gpt 的回答,需要安装pkg-config,并且export PKG_CONFIG_PATH=/xxx/x264
安装后,在命令行里手工验证是ok的.
123ubuntu:/work/ThirdParty/ffmpeg4$ export PKG_CONFIG_PATH=$(pwd)/dist/x264/arm64-v8a/lib/pkgconfig/ubuntu:/work/ThirdParty/ffmpeg4$ pkg-config --exists --print-errors x264ubuntu:/work/ThirdParty/ffmpeg4$
但是编译时仍然报错. 查看FFMPEG的configurate 日志ffbuild/config.log
123456require_pkg_config libx264 x264 std ...
Fatal signal 5 (SIGTRAP), code 1 (TRAP_BRKPT)
在华为手机鸿蒙系统4.2.0上面发现有JNI报错信息:
1234562024-08-14 18:Fatal signal 5 (SIGTRAP), code 1 (TRAP_BRKPT), fault addr 0x7bdd911c30 in tid 3011 (Thread-11), pid 2175 (t.myapplication)2024-08-14 18:Cmdline: com.myapplication2024-08-14 18:pid: 2175, tid: 3011, name: Thread-11 >>> com.myapplication <<<2024-08-14 18: #00 pc 0000000000020c30 /data/app/~~fknWHZgCIhPELEYcOIDVFg==/com.myapplication-kIlrv3njQZh8GuDC_8Qs4w==/lib/arm64/libnativelib.so!libnativelib.so (foo11111(void*, void*)+44) ...
aosp_tangorpro-ap2a-userdebug 编译错误
错误提示如下:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889[ 86% 1602/1858 13m53s remaining] Target userdata fs image: out/target/product/tangorpro/userdata.imgFAILED: out/target/product/tangorpro/userdata.img/bin/bash -c "(mkdir -p out/target/product/tangorpro/data ) && (mkdir -p out/target/product/tangorpro/obj/PACKAGING/userdata_intermediates && rm -rf out ...
Frida 查看函数返回struct 类型的方法
追查某个bug,需要查看这个函数的返回值:
12345678910111213141516171819202122232425262728293031323334353637sp<IBinder> ServiceManager::tryGetService(const std::string& name, bool startIfNotFound) { auto ctx = mAccess->getCallingContext(); sp<IBinder> out; Service* service = nullptr; if (auto it = mNameToService.find(name); it != mNameToService.end()) { service = &(it->second); if (!service->allowIsolated) { uid_t appid = multiuser_ge ...
