
Android
android注入,hook,逆向,ndk-build
AppNinja
记录作者的技术开发分析过程
一个在程序分析领域涉猎还算广泛的程序分析师:Windows、Android、iOS、MacOS。
You must devote your attention to your work.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Snapdragon Profiler分析Android GPU
RealTime实时视图,通过时间轴显示出系统资源使用情况分析 FPS、CPU、GPU、 DSP*、 memory、 power、 散热和网络数据等指标可以从22种类别中选择超过150个不同的硬件性能计数跟踪捕获,最多抓10秒,该模式可以让kernel和system事件在时间轴上可视化,可以用来分析来自CPU、GPU和DSP的低级系统事件通过查看CPU的调度和GPU阶段数据来分析应用程序在上面的花费时间GPU Stages、Surface Render、Flash Buffer,GMem快照模原创 2023-09-27 06:48:27 · 2163 阅读 · 0 评论 -
jadx Unrecognized VM option ‘MaxRAMPercentage=70.0‘ Error: Could not create the Java Virtual
终端可能会出现jadx Unrecognized VM option 'MaxRAMPercentage=70.0' Error: Could not create the Java Virtual Machine.这样的提示。解决办法就是txt打开jadx-gui后,将"-XX:MaxRAMPercentage=70.0"修改为"-Xmx4g",重启即可。高版本的JADX遇到低版本的JDK,在打开jadx的时候,之后用as或vsc打开即可。原创 2023-08-28 20:00:01 · 755 阅读 · 0 评论 -
最全Android版本API对应表,Android1.0-Android 15.0发布时间列表详细说明
Android 15.0 (VANILLA_ICE_CREAM) 35Android 14.0 (UPSIDE_DOWN_CAKE) 34Android 13.0(T) 33Android 12.0(S) 31,32Android 11.0(R) 30Android 10.0(Q) 29原创 2023-04-02 19:15:24 · 23077 阅读 · 0 评论 -
jdb调试问题集锦
发生异常:java.io.FileNotFoundException (uncaught)"thread=Thread-2-EmulatorEngine", sun.misc.URLClassPath$JarLoader.ensureOpen(), line=634 bci=30。根据提示,可知,出错的地方是,android.app.ActivityThread.handleBindApplication(), 行=4,400。设置延迟未捕获的 java.lang.Throwable。原创 2023-03-30 11:19:03 · 1095 阅读 · 0 评论 -
UE4 Android打包问题处理集合
解决办法:在Epic 库中添加 Android SDK:UEDeployAndroid.FilterStdOutErr: Build-tool 33.0.0 is missing DX at AppData\Local\Android\Sdk\build-tools\33.0.0\dx.bat。原创 2023-03-22 16:12:52 · 1489 阅读 · 1 评论 -
flutter android 工程增加启动闪屏 flash
flutter android 工程增加启动闪屏 flash。2、修改lauch_background.xml。1、添加flash.png。原创 2022-08-17 14:14:23 · 681 阅读 · 0 评论 -
flutter安装过程问题处理
1、变量设置PUB_HOSTED_URL=https://mirrors.cloud.tencent.com/dart-pubFLUTTER_STORAGE_BASE_URL=https://mirrors.cloud.tencent.com/flutter2、Flutter 执行flutter doctor报错HTTP Host Availability决方法:1.找到flutter sdk的文件目录,,打开flutter\packages\flutter_tools\lib\sr.原创 2022-05-18 20:41:13 · 435 阅读 · 0 评论 -
Unity3D VR引擎UnityEngine流程分析,输入问题解决
Unity3D VR引擎UnityEngine流程分析解决某个VR游戏运行手柄不正常的问题,所以分析了UnityEngine引擎的工作流程。最后顺利解决问题,一个正确的分析思路还是很重要的。UnityEngine.EventSystems OnEnableUnityEngine.EventSystems UpdateModulesMonoBehaviour StartCoroutine StartCoroutineManaged2MonoBehaviour StopCoroutine S.原创 2022-04-20 20:02:03 · 3743 阅读 · 0 评论 -
Windows下最新版Android Studio .so库混淆加密效果
1、编译安装mkdir obfcd obfgit clone https://github.com/GoSSIP-SJTU/Armaririscmake -DCMAKE_BUILD_TYPE:String=Release ./Armarirismake -j42、错误提示No CMAKE_CXX_COMPILER could be found.解决办法:sudo apt-get updatesudo apt-get install -y build-essential.原创 2022-04-02 15:48:07 · 725 阅读 · 0 评论 -
使用Android ndk编译64位arm汇编代码,附录源代码
1、arm汇编源码文件 hello64.s.data/* Data segment: define our message string and calculate its length. */msg: .ascii "Hello, ARM64! Written by AppNinja.\n"len = . - msg.text/* Our application's entry point. */.globl _start_start: /* sy.原创 2022-03-15 15:46:43 · 5438 阅读 · 0 评论 -
使用Android ndk编译32位arm汇编代码,附录源代码
1、arm汇编源码文件 hello.s.data/* Data segment: define our message string and calculate its length. */msg: .ascii "Hello,Arm,mov add, cmp, nop. Writtey by Appninja.\n"len = . - msg.text/* Our application's entry point. */.globl _start_start:原创 2022-03-15 15:31:12 · 3527 阅读 · 0 评论 -
一文搞懂什么VR,什么是6Dof,欧拉角,四元数转视图矩阵
笔者刚接触VR 6Dof 概念时,如何入门毫无头绪。经过一段时间的学习也略知一二,特将网上比较好的VR原理的资料统一整理到此, 方便初学者由浅入深的了解相关知识点。《一文搞懂什么VR,什么是6Dof,欧拉角,四元数转视图矩阵》一、什么是VRVR是把一个有透镜成像功能的显示器罩在眼睛上,人向哪里看,就在显示器里显示对应方向的景物画面,从而让人感觉自己身处一个无限大的虚拟空间中。这个功能的实现由以下几部分基础结构组成:1.处理器处理器即计算的核心,用来计算和生成图像,并根据陀原创 2022-02-18 15:21:12 · 7271 阅读 · 0 评论 -
如何在任意一台VR上兼容运行其他VR设备中的应用
要实现在任意一台VR上兼容运行其他VR设备的应用,涉及技术点比较多,先写个步骤。第1步:在其他VR设备上运行起其他的应用,渲染出界面。第2步:兼容其他VR的手柄输入、6Dof数据。第3步:优化其他VR的应用与其他VR设备的接口细节。...原创 2022-02-16 16:36:15 · 776 阅读 · 0 评论 -
Android arm64位内核文件提取与ida反编译内核 rom设置
高通/dev/block/platform/soc/1d84000.ufshc/by-name # ls -la |grep bootlrwxrwxrwx 1 root root 16 1970-04-28 07:24 boot_a -> /dev/block/sde11lrwxrwxrwx 1 root root 16 1970-04-28 07:24 boot_b -> /dev/block/sde31dd if=/dev/block/sde11 of=/sdcar...原创 2022-02-10 11:54:55 · 4796 阅读 · 0 评论 -
AndroidStudio利用默认的.so库工程编译成可执行Exe
修改默认的.so库工程CMakeLists.txt#add_library( # Sets the name of the library.# DemoInput# # Sets the library as a shared library.# SHARED# # Provides a relative path to your source file(s).# DemoInput.cpp)注释掉上面的add_libra原创 2022-02-09 16:16:00 · 1161 阅读 · 0 评论 -
adb命令查看android系统用户userid
adb shell:/ $ pm list usersUsers: UserInfo{0:机主:c13} running UserInfo{10:system_clone:20000410} running UserInfo{999:MultiApp:4000418} runningadb shell# pm list usersUsers: UserInfo{0:机主:13} running...原创 2022-01-26 15:06:23 · 7504 阅读 · 0 评论 -
修改android .so的汇编指令跳过流程分支
有个需求想修改.so中的流程分支,让流程代码必跳到代码段 loc_2474A4 中方法:需要修改条件跳转指令条件。.so中的原汇编代码:文件偏移量 | 机器指令 | ARM汇编.text:0024746C 01 30 ADDS R0, #1.text:0024746E 18 BF IT NE.text:00247470 0...原创 2022-01-19 11:57:12 · 1301 阅读 · 0 评论 -
逆向过程中发现元宇宙中一个有意思的33叹号算法形状及一些个性图形
vr中的一个ipc握手算法,33是!号的ASCII。形状喜人:原创 2022-01-19 10:29:22 · 1479 阅读 · 0 评论 -
对android .so dlopen 下断点不进入、无效果问题解决
有时候下断点: libdl.so dlopen没进入,但是目标.so确加载进来了。原因:还需要在libdl.so中对android_dlopen_ext下断点。原创 2022-01-14 17:13:15 · 789 阅读 · 0 评论 -
OpenGL使用纯VBO方式渲染出三角形,非VAO
OpenGL使用纯VBO方式渲染出三角形,要设置兼容格式GLFW_OPENGL_COMPAT_PROFILE。 // 必须使用VAO渲染 //glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); // 渲染出纯VBO三角形 glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_COMPAT_PROFILE);#include <glad/g...原创 2022-01-08 19:55:24 · 1376 阅读 · 0 评论 -
SourceTree设置代理访问github.com,需要选中向Git/Mercurial配置文件中添加代理服务器信息。
SourceTree设置代理访问github.com注:选中向Git/Mercurial配置文件中添加代理服务器信息。刚开始没有选中这个复选框,每次下载很不稳定。原创 2021-12-21 17:47:32 · 2099 阅读 · 0 评论 -
非Root环境下安卓实现全屏,屏蔽下方虚拟按键:左键、右键。较新安卓系统无法屏蔽Home键。源代码例子
安卓实现全屏、霸屏,屏蔽下方虚拟按键:左键、右键。较新安卓系统无法屏蔽Home键。代码中分三部分:1、隐藏屏幕下方的虚拟按键,并且全屏。 注:这一步只是隐藏按键,不是禁用按键,用户还可以上滑出虚拟按键)用户调出下方Android虚拟按键后,分别屏蔽:2、禁止左边应用列表按键。3、禁止右边回退按键。全屏后,用户上划之后点击虚拟按键如图所示:源代码例子:package com.app.fullscreen;import androidx.appc...原创 2021-12-18 19:22:09 · 2653 阅读 · 0 评论 -
Android如何设置APP开机启动
想让一个apk开启自动运行,可以通过Android系统中的广播机制实现开机自启动。广播(Broadcast)是Android系统的四大组件之一,通过该机制可以实现不同应用程序之间的通信。实现Apk开启自启动,进行如下两步操作即可:1、添加广播接收器文件: BroadcastReceiver.java原创 2021-12-18 13:59:52 · 8035 阅读 · 0 评论 -
Android ARM 32位64位、Service 等问题集锦
1、如何查看一个文件是32位还是64位。答:使用 file 命令# file /system/bin/dalvikvm64/system/bin/dalvikvm64: ELF shared object, 64-bit LSB arm64, dynamic (/system/bin/linker64), for Android 28, BuildID=17f49e4a4ec8b7f4ace738c1146fe0a6, stripped注:file /system/bin/dalvikvm .原创 2021-12-17 16:14:43 · 1793 阅读 · 0 评论 -
安卓程序崩溃异常信息 SIGSEGV,产生的原因是因指针被截断,其中错误地址的前 32 位全部为零。
将 32 位代码移植到 64 位架构如果您的代码已经可以在桌面或 iOS 平台上运行,那么您无需针对 Android 做额外的工作。如果这是第一次针对 64 位系统构建您的代码,那么您需要解决的主要问题是指针不再适合int这样的 32 位整数类型。您将需要更新以int、unsigned或uint32_t等类型存储指针的代码。在 Unix 系统上,long对应的是指针大小,但在 Windows 上并非如此,因此您应该改用释意类型uintptr_t或intptr_t。使用ptrdiff...原创 2021-12-17 12:16:55 · 2550 阅读 · 0 评论 -
Android系统调试常用日志查看标签 System.err、zygote
System.err 系统错误:java.lang.UnsatisfiedLinkError: dlopen failed: is 64-bit instead of 32-bitzygote 启动错误:zygote java_vm_ext.cc:534] JNI DETECTED ERROR IN APPLICATION: JNI FindClass called with pending exception java.lang.ClassNotFoundException: Didn...原创 2021-12-08 18:15:10 · 1771 阅读 · 0 评论 -
VR库架构问题:java.lang.UnsatisfiedLinkError dlopen failed is 64-bit instead of 32-bit 解决办法
一个32位的VR游戏App去加载新版的系统服务,系统服务里的.so有32位的,64位的,因为设备是64位的,所以总是默认去加载base.apk!/lib/arm64-v8a/System.err提示:java.lang.UnsatisfiedLinkError dlopen failed is 64-bit instead of 32-bitdlopen失败:是64位的库,而不是32位的。暂时解决办法:为了调试顺利进行,先将64位文件夹arm64-v8a删除掉,之后系统默认加载32位文件夹ar.原创 2021-12-08 15:25:23 · 5279 阅读 · 0 评论 -
jadx与jeb对比,如图所示,选哪一个?
左边jadx,右面jeb: 选哪个一个?分析员不做选择,两个都要!简单说明一下两个:jadx优点:静态反编译,查找索引功能强大jeb优点:类IDA,可以看java回编也可以生成伪代码,还可以动态attach到目标调试! jeb的缺点就是jadx的优点,两个互补配合着用。...原创 2021-11-30 07:22:53 · 2362 阅读 · 0 评论 -
AppNinja开发手记8: Android内核溢出教程-环境搭建
AppNinja开发手记8: Android内核溢出教程-环境搭建学习心得:什么是Android内核溢出学习方向:VR、元宇宙、Android内核溢出、Android Kernel Exploithttp://blog.youkuaiyun.com/a2831942318Written by AppNinja 开发手记1、系统环境操作系统:Windows11虚拟机VirtualBox6.1:Downloads – Oracle VM VirtualBoxUbuntu18.04.6:ht.原创 2021-11-28 21:14:51 · 1598 阅读 · 0 评论 -
10个VR元宇宙调试分析利器,Android逆向工具
Android逆向分析工具下载:Android逆向文章:原创 2021-11-27 10:47:37 · 649 阅读 · 0 评论 -
AppNinja一文解决:targetSdkVersion版本过低安装失败,安装apk提示版本太低,targetsdkversion修改方法,附带打包修改工具
一、打包错误AndroidManifest.xml:1: error: No resource identifier found for attribute 'compileSdkVersionCodename' in package 'android'解决方法:在AndroidManifest.xml中删除'compileSdkVersionCodename相关的。二、安装错误adb install -r SystemActivities.apkPerforming Streamed I原创 2021-11-26 17:48:35 · 11439 阅读 · 0 评论 -
AppNinja 开发手记7:vr android注入工具inject hook EGL函数eglSwapBuffers源代码,支持arm32,arm64,注入apk和surfaceflinger
vr android注入工具inject hook EGL函数eglSwapBuffers,支持arm32,arm64(__aarch64__),注入apk、surfaceflinger原创 2021-11-26 10:29:40 · 1624 阅读 · 0 评论