![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
android
lonelyakin
No Pain No Gain
展开
-
某手so函数分析之后的思考
0x1 分析算法 要解密的函数自身很简单,没有常用算法和复杂的逻辑,纯粹位移操作,ida动态调试一番 确定函数传参和返回值之后分析得知 大致分为三步 1.cpu_clock_star()初始化struct x的值 2.cpu_clock_x(struct x, string data, int dataLen) 循环取data的64个字节作为参数放入sub_1b80 3.sub_1b8原创 2015-04-08 18:38:36 · 1330 阅读 · 1 评论 -
使用apktool + idea 调试smali
1.使用apktool 反编译apkjava -jar apktool.jar -d d apkPath -o newPath2.打开AndroidManifest.xml 在application节点上添加:android:debuggable="true"3.重打包apk,重签名java -jar apktool.jar -d b newPathjava -jar signapk.jar pl原创 2015-09-13 12:07:30 · 2664 阅读 · 0 评论 -
apktool + eclipse 调试smali
1.使用apktool反编译apkapktool -d d xxx.apk -o xxxx2.修改AndroidManifest.xml 给application标签添加android:debuggable="true"在入口activity的初始化处添加a=0;// invoke-static {}, Landroid/os/Debug;->waitForDebugger()V3.重新打包原创 2015-09-13 17:45:17 · 670 阅读 · 0 评论 -
使用Wireshark实时抓包Android
1.工具下载 pc->wireshark pc->ncat (windows可以在nmap内找到,linux下直接用nc) android->nc(在busybox中,需要高级模式安装) android->tcpdumpncat放到wireshark安装目录下,需要复制ssleay32.dll libeay32.dll2.执行命令 adb shell中执行: tcpdump -n -s原创 2015-09-15 14:39:05 · 4512 阅读 · 0 评论 -
使用Android studio 开发xposed插件
1.在已经root的手机上安装xposed installer.apk 2.打开android studio 新建工程 如果不需要界面的 可以选择Add no activity 3.新建完成后,找到 app 目录下的 build.gradle 文件,将 dependencies 中的 compile fileTree(dir: 'libs', include: ['*.jar'])改为provi原创 2016-05-22 21:33:10 · 3594 阅读 · 0 评论 -
使用Android studio 开发cydiasubstrate插件
Cydia Substrate是一个代码修改平台.它可以修改任何主进程的代码,不管是用Java还是C/C++(native代码)编写的.而Xposed只支持HOOK app_process中的java函数,因此Cydia Substrate是一款强大而实用的HOOK工具.官网地址:http://www.cydiasubstrate.com/ 官方教程:http://www.cydiasubstra原创 2016-05-25 14:20:19 · 3066 阅读 · 1 评论 -
android函数调用堆栈打印方法
//打印调用堆栈 RuntimeException e = new RuntimeException("run is here"); e.fillInStackTrace(); Log.d(TAG, "xxx", e);6-23 19:15:28.546 24821-24869/? D/xposedHel原创 2016-06-24 14:19:36 · 5969 阅读 · 0 评论 -
android清除应用缓存数据
public static boolean clearAppUserData( String packageName ) { boolean clearStatus = false; DataOutputStream os = null; DataInputStream is = null; Process p = null;原创 2016-06-04 21:20:22 · 1890 阅读 · 0 评论 -
aapt 命令可应用于查看apk包名、主activity、版本等很多信息
打开cmd cd到androidSDK/build-tools下aapt dump badging xxx.apk原创 2016-07-11 18:13:12 · 411 阅读 · 0 评论 -
cm12.1源码下载编译
一、准备工作1.安装vmware122.下载ubuntu14.04 64位3.安装ubuntu 14.04 设置系统配置内存:4GB, 处理器:8, 硬盘:200GB(预先分配)二、环境搭建安装更新包编译Android源码需要一些基础库的支持,因此需要事先进行下载和配置。对于32位和64位系统来说,需要安装如下软件包:bison build-essential curl flex git g原创 2016-08-09 10:29:56 · 1900 阅读 · 0 评论 -
cmw-recovery 编译
源码所在目录 ~/android/cm/ 1.给cm目录添加权限sudo chmod -R 777 cm 2.更新环境./build/envsetup.sh 3.make要用到的工具make -j8 otatools 4.将/out/host/linux-x86/bin加入环境变量gedit ~/.bashrcexport PATH=$PATH: ~/android/cm/out/host/原创 2016-08-09 11:07:09 · 1089 阅读 · 0 评论 -
Android编译系统
一、Android编译步骤: 二、初始化编译环境--source build/envsetup.sh在build/envsetup.sh中主要完成了三件事。 添加编译目标的代码如下:for f in `/bin/ls vendor/*/vendorsetup.sh vendor/*/*/vendorsetup.sh device/*/*/vendorsetup.sh 2> /dev/nul转载 2016-08-26 10:10:03 · 312 阅读 · 0 评论 -
Android ramdisk,boot,system.img 解包和打包
一、ramdisk介绍 ramdisk通过直面意思就大概能理解意思,ram disk虚拟内存盘,将ram模拟成硬盘来使用的文件系统。对于传统的磁盘文件系统来说,这样做的好处是可以极大提高文件访问速度;但由于是ram,所以在掉电后,这部分内容不能保存。ramdisk文件系统是在系统上电后直接从磁盘一次性加载到内存,在整个运行期间都不会有写回操作,所以,任何修改都掉电后丢失。二、ramdisk.img原创 2016-08-01 12:33:14 · 6812 阅读 · 0 评论 -
android build类分析 hook静态字段
缘由: 使用xposed hook build类下 DEVICE MODEL VERSION MANUFACTURER等静态字段XposedHelpers.setStaticObjectField(android.os.Build.class, "MODEL", "null");hook 失败! <参考:http://blog.csdn.net/ccpat/article/details/44原创 2016-11-02 19:08:04 · 7704 阅读 · 5 评论 -
Android Studio jni开发
1、创建一个android工程2、配置Anroid Studio 打开File ->Settings -> Tools -> External Tools 找到 external tools 然后点击右边方框的“+”。 填写相应的内容//添加javah 命令Name:javahDescription:javahProgram:$JDKPath$\bin\javah.exeParamete原创 2016-11-04 23:57:45 · 580 阅读 · 0 评论 -
使用git将项目上传到github
1.注册github帐号2.下载windows下git工具https://git-for-windows.github.io/3.进入Github首页,点击New repository新建一个项目4.填写相应信息后点击create即可说明 Repository name: 仓库名称 Description(可选): 仓库描述介绍 Public, Private : 仓库权限(公开共享,私有或原创 2017-05-24 12:29:44 · 507 阅读 · 0 评论 -
httpclient 自己管理cookie
一、使httpclient不管理cookie: client.getParams().setCookiePolicy(CookiePolicy.IGNORE_COOKIES);二、在某个请求获得cookie时获取cookie:private static List<String> cookieList=new ArrayList<String>();if (theget.getRes原创 2015-06-29 10:36:12 · 1596 阅读 · 0 评论 -
android应用程序的安装方式与原理
四种安装方式:1.系统应用安装――开机时完成,没有安装界面 2.网络下载应用安装――通过market应用完成,没有安装界面 3.ADB工具安装――没有安装界面。 4.第三方应用安装――通过SD卡里的APK文件安装,有安装界面,由packageinstaller.apk应用处理安装及卸载过程的界面。应用安装的流程及路径 应用安装涉及到如下几个目录: system/app ———转载 2015-06-22 13:44:10 · 533 阅读 · 0 评论 -
JNI 方法
1、AndroidJNI.AllocObject 分配对象 static function AllocObject (clazz : IntPtr) : IntPtr Description描述 Allocates a new Java object without invoking any of the constructors for the object. 分配新 Java 对象而不调转载 2015-04-11 11:25:06 · 417 阅读 · 0 评论 -
android 清除其他应用数据
在调试某应用的时候,经常要清除apk初始化产生的数据,初始化会在/data/data/com.xxx.xx目录下和/sdcard/下新建很多文件,每次都要点到 设置->应用->软件名->清除数据。闲操作麻烦,想使用自动化一键清除。0x1 穷举遍历删除文件夹 开始想到的是获取su权限后枚举/data/data/com.xx.xx目录下的文件夹,逐个删除文件夹public static bool原创 2015-04-08 10:30:09 · 2209 阅读 · 3 评论 -
httpwebrequest模拟登陆 显示乱码
[原因] 在使用httpwebrequest模拟登陆实现时,通过抓取网络数据包,设置http header,”Accept-Encoding” = “gzip,deflate” ,发现在服务端返回的网页显示乱码!开始以为是编码问题,再查找和调试以后发现编码设置都没有问题。so google! [原来如此] 普通浏览器访问网页,之所以添加:”Accept-Encoding”原创 2015-04-14 09:42:03 · 1032 阅读 · 0 评论 -
Android中的按摩棒
在某些时候,程序需要启动系统振动器,比如手机静音时使用振动提示用户;再比如玩游戏时,当系统碰撞、爆炸时使用振动带给用户更逼真的体验等。总之,振动是除视频、声音之外的另一种“多媒体”,充分利用系统的振动器会带给用户更好的体验。系统获取Vibrator也是调用Context的getSystemService()方法即可,接下来就可以调用Vibrator的方法来控制手机震动了。package com.ex原创 2015-04-14 21:16:56 · 332 阅读 · 0 评论 -
android时间对话框TimePickerDialog介绍
目前网上流行着很多对“时间对话框TimePickerDialog”的讲解文章,但感觉都不是很详细。所以浣熊在这里详细对该方面的知识进行介绍,旨在帮助初学者能够快速掌握该项技术。 首先要做的是声明一个日历类的对象: private Calendar c; 然后对其进行实例化: c = Calendar.getInstance(); 实例化后便可以对该日历对象进行操作了,如原创 2015-04-14 21:43:58 · 371 阅读 · 0 评论 -
Android Socket 开发
根据之前的经验,应用软件的网络通信无非就是Socket和HTTP,其中Socket又可以用TCP和UDP,HTTP的话就衍生出很多方式,基础的HTTP GET和POST请求,然后就是WebService的SOAP。在这些方式中,Socket当然是最基础的。因此先从Socket开始。服务端就不需要过多的说明了,无论采用什么语言什么平台都可以,只要遵循基本的Socket监听模式就行。实际上Android转载 2015-04-14 09:39:09 · 249 阅读 · 0 评论 -
java des3 加密解密
import java.security.Key;import javax.crypto.Cipher;import javax.crypto.SecretKeyFactory;import javax.crypto.spec.DESedeKeySpec;import javax.crypto.spec.IvParameterSpec;import sun.misc.BASE64Decoder转载 2015-04-14 11:51:30 · 5759 阅读 · 1 评论 -
java中byte转换int时为何与0xff进行与运算
在剖析该问题前请看如下代码 例一:public static int getIntFromByte(byte[] ba){ int sum = 0; for (int i = 0 ; i <4 ; i++) { int temp =((int) ba[i] )&0xff; temp <<= i*8; sum = temp原创 2015-04-14 21:16:31 · 274 阅读 · 0 评论 -
android开机自启动的后台Service的实现
1.在Manifest.xml文件中注册广播接收器,接收开机广播2.广播接收器接收到开机广播后启动Servicepublic class BootCompletedReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { // TOD原创 2015-04-14 21:39:28 · 370 阅读 · 0 评论 -
Android缩小到通知栏,再点击通知栏启动
package com.example.notificationdemo;import android.app.Activity;import android.app.Notification;import android.app.NotificationManager;import android.app.PendingIntent;import android.content.Inte原创 2015-04-14 21:36:34 · 558 阅读 · 0 评论 -
java与android RSA加密区别
在还原某android应用算法时,使用的是java环境,各种测试结果都不对,一样的数据,每次计算结果都不一致,最后拿到android环境下测试没问题,一番搜索之后发现原来是java与android的填充不一致 java Cipher cipher = Cipher.getInstance(“RSA/ECB/PKCS1Padding”); android Cipher cipher = Cip原创 2015-04-14 09:35:41 · 617 阅读 · 0 评论 -
Android 监听WIFI
1.注册一个广播接收器,监听网络状态private void Start(){ IntentFilter filter = new IntentFilter(); filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); filter.addAction(WifiManager.WIFI_STATE_CHANGED原创 2015-04-14 21:34:11 · 319 阅读 · 0 评论 -
adb 命令用法
查看所有连接设备 adb devices获取设备状态 adb -s emulator-5554 get-state仅一台设备可用以下命令获取状态 adb -d get-state停止adb服务 adb -s emulator-5554 kill-server开启adb服务 adb -s emulator-5554 start-server将文件拷贝到手机 adb push c:\123.原创 2015-05-27 13:16:30 · 537 阅读 · 0 评论 -
JAVA字符串格式化-String.format()的使用
String类的format()方法用于创建格式化的字符串以及连接多个字符串对象。熟悉C语言的同学应该记得C语言的sprintf()方法,两者有类似之处。format()方法有两种重载形式。format(String format, Object… args) 新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串。format(Locale locale, String format,原创 2015-06-17 21:56:00 · 346 阅读 · 0 评论 -
java解析xml的几种方式
第一种:DOM。 DOM的全称是Document Object Model,也即文档对象模型。在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称DOM树),应用程序正是通过对这个对象模型的操作,来实现对XML文档数据的操作。通过DOM接口,应用程序可以在任何时候访问XML文档中的任何一部分数据,因此,这种利用DOM接口的机制也被称作随机访问机制。DO原创 2015-06-21 15:21:28 · 338 阅读 · 0 评论 -
android 动态调试 遇到的问题
windows 查看端口占用并关闭cmd下输入如下命令:netstat -ano //查看系统端口netstat -ano | findstr "8700" //查询占用进程tasklist|findstr 进程号 //查看进程名taskkill /f /t /im pid taskkill /f /t /im /javaw.exeandroid 查看端口占用并关闭adb sh原创 2017-06-30 21:24:37 · 822 阅读 · 0 评论