打造smali代码库辅助分析

打造smali代码库辅助分析

在分析Android应用程序的时候,我们往往会插入代码重打包apk来辅助我们分析的工作

一个比较取巧的方法就是先用java写好代码以及相关的调用之后, 然后直接扣出代码

然后可以制作成各种代码模版,放在Android Killer中使用(代码模版管理器)

Android Killer 自带3种代码模版

1. LoadLibrary

const-string v0, "so name"

invoke-static {v0}, Ljava/lang/System;->loadLibrary(Ljava/lang/String;)V

2. logcat

const-string v0, "you message"

invoke-static {v0}, Lcom/android/killer/Log;->LogStr(Ljava/lang/String;)V

这个模版实质上会在代码中插入一个包

针对于不同的数据类型给定了很多打印日志方法

所以我们在写这样的代码的时候 最好也编译一个静态类,这样调用起来方便一些

3. toast

const-string v0, "you message"

const/4 v1, 0x1

invoke-static {p0, v0, v1}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;

move-result-object v0

invoke-virtual {v0}, Landroid/widget/Toast;->show()V

个人感觉用插入toast不如插入log, 同样也可以做成一个静态类,像log那样包含在一个包里面

4. dumpStack

invoke-static {}, Ljava/lang/Thread;->dumpStack()V

5. traceview

traceview用于性能分析

http://www.cnblogs.com/bingghost/p/5823864.html

invoke-static {}, Landroid/os/Debug;->startMethodTracing()V

invoke-static {}, Landroid/os/Debug;->stopMethodTracing()V

同时需要声明权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

我们自己打造一个smali代码库,有需要的时候就像里面添加代码

github地址:

https://github.com/bingghost/SmaliLibrary

当然是先在java里面写好了,调用一下,取出来,省时又省力,在编码的时候最好是写成静态函数,同时只给一个参数

然后就把代码模版拷贝到android killer中,愉快的开始玩耍了

来自为知笔记(Wiz)

时间: 2024-07-31 21:42:17

打造smali代码库辅助分析的相关文章

开源项目成熟度分析工具-利用github api获取代码库的信息

1.github api github api是http形式的api,功能还是比较丰富的,博主因为项目的原因主要用到的是提取project信息这项功能,返回的数据是JSON格式. api页:https://developer.github.com/v3/ Options: (H) means HTTP/HTTPS only, (F) means FTP only --anyauth Pick "any" authentication method (H) -a, --append Ap

Dalvik指令分析(一) 字节码转换为smali代码

有过android应用反编译或者再打包的朋友都有使用过apktool的经验,apktool能将dex文件的 字节码转换为smali代码,这个工具是怎么做到对dex进行解析并生成smali代码的呢?这就需要对 dex文件的格式很熟悉.需要掌握dalvik指令的字节码格式,并能翻译成对应的smali代码. 我准备写一系列的文章来分析dex文件的格式.dalvik字节码的格式.以及dex to smali的方法, 基于此可以做很多的应用,比如安全扫描.应用加固等等! Dalvik指令介绍请参考官方文档

C#懒人包-我的辅助代码库

喜爱编程,尽管编程开发并非自己的主要工作,但多年来,也一直没有间断开发.既有工作单位的一些项目,也有纯粹自己的一些想法而做的程序(我的原创).在使用C#开发各类项目的过程中,把一些常用的编程的思路方法总结起来,慢慢就形成了一个辅助代码库.随着内容的完善,我自我感觉对于快速完成开发效果非常明显. 一直以来也想把这个辅助代码库发布出来,对有些情况类似的开发者也许有用,对自己同时也是个促进.但是每次当我看到园子里面的高手们推出的各种框架,顿时自惭形秽.后背冒汗,立马打消念头了.和他们相比,我的代码整理

DICOM:DICOM三大开源库对比分析之“数据加载”

背景: 上一篇博文DICOM:DICOM万能编辑工具之Sante DICOM Editor介绍了DICOM万能编辑工具,在日常使用过程中发现,"只要Sante DICOM Editor打不开的数据,基本可以判定此DICOM文件格式错误(准确率达99.9999%^_^)".在感叹Sante DICOM Editor神器牛掰的同时,想了解一下其底层是如何实现的.通过日常使用以及阅读软件帮助手册推断其底层依赖库很可能是dcmtk,就如同本人使用dcmtk.fo-dicom.dcm4che3等

MDU某产品OMCI模块代码质量现状分析

说明 本文参考MDU系列某产品OMCI模块现有代码,提取若干实例以说明目前的代码质量. 本文旨在就事论事,而非否定前人(没有前人的努力也难有后人的进步).希望以史为鉴,不破不立,最终产出高质量的代码. 一  质量现状 不考虑业务实现,现有的OMCI模块代码质量不甚理想.无论是理解上手.修改扩展和测试排障,可以用举步维艰形容.尤其是二层通道计算相关代码,堪比令史前动物无法自拔的"焦油坑". 本节将不考虑流程设计,仅就函数粒度列举目前存在的较为突出的代码质量问题. 1.1 巨型函数 通过S

DICOM:DICOM开源库多线程分析之“ThreadPoolQueue in fo-dicom”

背景: 上篇博文介绍了dcm4chee中使用的Leader/Follower线程池模型,主要目的是节省上下文切换,提高运行效率.本博文同属[DICOM开源库多线程分析]系列,着重介绍fo-dicom中使用的ThreadPoolQueue线程池. ThreadPoolQueue in fo-dicom: 先看一下ThreadPoolQueue代码中自定义的数据结构, public class ThreadPoolQueue<T> { private class WorkItem { public

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

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

高级C代码的汇编分析

在windows上,常用的函数调用方式有: Pascal方式,WINAPI(_stdcall)方式 和C方式(_cdecl) _cdecl调用规则: 1,参数从右到左入堆栈 2,在函数返回后,调用者要负责清除堆栈 所以这种调用常会生成较大的可执行文件. _stdcall又称为WINAPI调用方式,规则: 1,参数从右向左入堆栈 2,被调用的函数在返回前自行清理堆栈 所以这种调用会生成比cdecl小的代码 Pascal调用方式,主要用在WIN16函数库中,现在基本不用 规则: 1,参数从左向右入堆

用友ERP T6技术解析(六) 库龄分析

2.4 库存管理   2.4.1 库龄分析 介绍:库存账龄是在某时间节点,某种或某类存货的库存时间的加权平均值,跟库存周转率关系明显.库存周转率越高,库存账龄越低,可是二者又不是反比关系.不能简单把库存账龄看成库存周转率的一个衍生指标来对待 , 主界面 (如图2.4.1图1). 目的:一.库存成本的控制.二.存货跌价准备计提. 功能:[所有导出]将当前页的所有仓库相应的所有产品导出到Excel文档.[选择导出]将当前页选择的的产品导出到Excel文档.[查询]多条件筛选查询数据(如图2.4.1