【加密解密】Android App so动态库调试分析

调试so手机需要root权限,同时开启调试模式。

1、上传android_server到/data/local/tmp

adb push android_server /data/local/tmp

2、root权限执行./android_server,结果如下

[email protected]:/data/local/tmp # ./android_server
./android_server
IDA Android 32-bit remote debug server(ST) v1.17. Hex-Rays (c) 2004-2013
Listening on port #23946...
=========================================================
[1] Accepting connection from 127.0.0.1...
[1] Closing connection from 127.0.0.1...
=========================================================
[2] Accepting connection from 127.0.0.1...
[2] Closing connection from 127.0.0.1...

3、执行adb forward tcp:23946 tcp:23946,目的是使得计算机与手机之间进行通信,使用tcp 23946

4、启动ida,选择Remote ARM Linux/android debugger

然后选择菜单debugger->process option->在hostname处输入127.0.0.1地址,然后选择菜单debugger->attach a process选择要附加的进程即可。

5、F2或鼠标右键在需要跟踪的so代码中设置断点,跟踪分析即可。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-09-29 08:33:28

【加密解密】Android App so动态库调试分析的相关文章

开源 Android App 增量更新库 版本升级

开源 Android App 增量更新库 版本升级 经过几天的重构,我将之前写的一个Android 应用增量更新的示例程序重构为了一个开源库,现在已经push 到 GitHub 上,欢迎大家Watch.Star.Fork. 包含以下内容: 服务器端生成差异包的工程:AppUpdate 客户端使用的开源apk合并库:ApkPatchLibrary 引用ApkPatchLibrary,实现增量更新的ApkPatchLibraryDemo 旧版本的微博Android客户端,以及服务端生成的新旧微博差分

Android native层动态库注射

1.简介 本文讲解在Android native层,root权限下,注射动态库到目标进程,从而hook目标进程中动态库的函数的实现方式.文中的源码全部来源于网络,我只是稍微加以整理. 环境:Android4.2 源码下编译,模拟器中运行. 2.代码构成 包含三个模块的代码: 1.inject程序:把动态库libhookhelper注射到目标进程 2.libhookhelper:动态库代码.此部分代码用于修改目标进程中目标函数所在的got表的信息,从而替换掉目标函数.理解这部分需要一点点elf格式

关于Linux静态库和动态库的分析

关于Linux静态库和动态库的分析 关于Linux静态库和动态库的分析 1.什么是库 在windows平台和linux平台下都大量存在着库. 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 由于windows和linux的本质不同,因此二者库的二进制是不兼容的. 本文仅限于介绍linux下的库. 2.库的种类 linux下的库有两种:静态库和共享库(动态库). 二者的不同点在于代码被载入的时刻不同. 静态库的代码在编译过程中已经被载入可执行程序,因此体积较大. 共享库的代

VS之动态库调试

程序开发中,经常会使用到动态库,动态库不能直接运行,需要依赖其他程序调用,那么我们该如何调试我们的动态库呢?本文通过一个简单的例子说明. 使用工具:VS2008 使用语言:C++ 开发步骤: 1.调用动态库的应用程序 1.1新建对话框应用程序 1.2设计动态库接口 该接口用于在加载动态库时显示动态库的一些基本信息 DllTestAppDlg.h struct tDLL_INFORMATION { LPCTSTR sDLLName; LPCTSTR sFuncDescr; LPCTSTR sAut

Android Studio 添加动态库os文件的方法

错误 02-28 20:14:13.904 18116-18116/? E/AdFireWallNative﹕ AdFrieWall JNI_OnLoad 02-28 20:14:13.904 18116-18116/? E/AdFireWallNative﹕ AdFireWall JNI_OnLoad done. 02-28 20:14:13.555 743-1064/? E/﹕ Could not open /sys/devices/system/cpu/cpufreq/hotplug/cp

静态库和动态库的分析

本质上来说库是一种可执行代码的二进制形式. linux下的库有两种:静态库和共享库(动态库) 静态库在程序编译时会被连接到目标代码中:程序运行时将不再需要该静态库,因此体积较大. 优点:程序运行时将不再需要该静态库 缺点:可执行文件的体积较大. 相同的库可能会需要被多次加载. 静态库: libxxxxx.a 动态库:动态库在程序编译时并不会被连接到目标代码中, 优点: 在程序运行时动态库才会被载入内存,因此代码体积较小. 缺点: 因此在程序运行时还需要动态库存在. 静态库的制作:将功能函数编译成

android.app.Fragment$InstantiationException的原因分析

1. Fragment$InstantiationException的原因分析 在编写Fragment类的代码时候,Android Lint有时会提示如下error: Avoid not-default constructors in fragments: use a default constructor plus Fragment$setArguments(Bundle) instead From the Fragment documentation: Every fragment must

【移动安全】Android App Smail代码动态跟踪调试方法

1.反编译可调试模式的smail代码 D:\software\android\ApkTool\dump\apktool>java -jar apktool.jar d -d b11842d4126d 72df16c1c1870c819c37.apk -o out I: Using Apktool 2.0.0-RC3 on b11842d4126d72df16c1c1870c819c37.apk I: Loading resource table... I: Decoding AndroidMan

android app调试没问题,但打包签名的apk,运行时出现闪退怎么办?

在用Eclipse编写Android app时,有时调试时没有问题,但一经打包签名,运行就出现闪退,还报错说找不到某某类.一开始以为是混淆导致的,后来我没有混淆竟然也还是这个问题.无奈只得网上寻找解决方案,最终还是有人解决了的,方法也很简单,只需按照下面几步来就可以了: 1.找到Project -> Build Automatically,取消它关闭自动编译2.然后Clean一下3.最后在手动Build一下 然后你再打包签名,这样就可以正常运行了.