smali

Changing the package name

梦想与她 提交于 2019-12-03 08:59:36
I planned to change the package name through smali(reverse) when I open up apktool.yml, I saw this forced-package-id: '127' I have tried to change it but it crash why should i do? Assuming your goal is to rename the package name of the apk, the package names used for the classes are irrelevant. The package name of the apk is mostly unrelated to the package names of any classes in the apk. And there's no reason you need to touch the package id. I would recommend unpacking the apk with apktool, and then edit the apktool.yml, setting renameManifestPackage to the new package name. Then when you

How to generate call graph from android APK?

那年仲夏 提交于 2019-12-03 08:17:27
I have downloaded a few Android applications from Google Play. I have got Smali code through reverse engineering tool apktool .I want to generate call graphs for these applications. I have seen many links on stack overflow and Google, most of the suggested tools are either for c/c++ or if they are for Java , they need source code which I don't have, of course. Is there any way to generate call graphs automatically? Thanks. apkinspector - http://code.google.com/p/apkinspector/ The goal of this project is to aide analysts and reverse engineers to visualize compiled Android packages and their

如何简单高效的学会Smali语法?

隐身守侯 提交于 2019-12-03 04:08:15
Q1:Smali是什么。 Smali是一种宽松式的Jasmin/dedexer语法. 简单来说就是我们用java写的代码编译成class打包成dex文件后使用baksmali程序逆向回来的一种语法。 Q2:为什么要学习Smali。 首先,提到smali就不得不说逆向。早在还没有android之前,各大平台和语言上就有对应的逆向一说。那么到目前为止,逆向一个apk通常是安全工程师(逆向工程师)和做破解等恶意分子因为某些利益在做(apk二次打包插入广告、破解收费应用、恶意代码植入、剽窃api等)。 技术是一把双刃剑,怎么用在人。而不在技术本身上。那么我们说为什么应用层开发者也要学smali呢?我能想到以下几点供参考。 1. 借鉴 当我们发现其他应用有一个很牛逼功能,而我们想不明白如何实现的时候。拿不到源码可以选择逆向。 2. 安全 我们写的app需要考虑安全性,但是我们可能只知道混淆和第三方加固,需要明白别人是怎么破解我们的应用。 3. 适配 当我们发现api在某些手机上被弃用,而其他应用或系统应用又能实现该功能的时候。关于这点我之前写过一篇 逆向小米做适配的文章 。 喂,差不多够了吧?还不能打动你学吗?给你升职加薪怎么样? :) 噗,坏蛋!!!,我学 我学,还不行吗? Q3:Smali难不难? 不难。也许你很早之前看过一些文章。或者也常用一些工具去打开反编译后的代码

android反编译工具

六月ゝ 毕业季﹏ 提交于 2019-12-03 04:08:03
网络抓包工具 反编译工具 apktool 2.0.2 查看修改xml、smali文件,还可以把修改后的文件打包apk 使用: apktool d test.apk #解包xml apktool b test #打包apk 下载: http://ibotpeaches.github.io/Apktool/ dex2jar-2.0 将classes.dex转换成jar 使用: d2j-dex2jar.bat ./../classes.dex #classes.dex转换成classes-dex2jar.jar java -jar apktool.jar d -d test.apk -o out #smali代码到out文件夹,-d参数反编译出来的代码后缀是java jd-gui-windows-1.4.0 查看jar文件, 看到java class文件 下载: http://jd.benow.ca/ 参考资料 使用smali语法写的HelloWorld AndroidStudio+ideasmali动态调试smali汇编 eclipse中调试smali Decoding values / XMLs... eption in thread "main" brut.androlib.err.UndefinedResObject: resource spec: android反编译

What's the best way to learn Smali (and how/when to use Dalvik VM opcodes)?

匿名 (未验证) 提交于 2019-12-03 02:03:01
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 由 翻译 强力驱动 问题: I know Java, and learned C but never used it. I do not know any form of assembly, either for a virtual machine or a real one. What's the best way to learn how to hack Smali? 回答1: UPDATE: As I promised yesterday, I added some more links to the list. Ufff. Not much documentation around! Best advice? Decompile, and read, and tweak, and see how it did, and start the cycle again and again. But you did not ask for that advice, right? ;) Now, there are a few places out there that wil lhelp a little bit: http://androidcracking.blogspot.com

Direct .java to .smali conversion. Possible?

匿名 (未验证) 提交于 2019-12-03 01:29:01
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 由 翻译 强力驱动 问题: I'm working with baksmali/smali tools. But sometimes I need to compile .java class to .smali file. So I've to first compile it with Eclipse and second disassemble the .APK to a set of .smali files. Is it possible to directly compile .java into .smali with one single tool? I couldn't find a solution myself... 回答1: "javac" or similar program can be used to convert the source code to .class. Android's "dx" is used to convert .class to Dalvik .dex. The result of that can be processed with the Smali tools. You should be able to invoke

UETool大战饿了么!

匿名 (未验证) 提交于 2019-12-03 00:18:01
本文同步自 wing的地方酒馆 本文仅供学习研究用,如有侵犯,联系作者立即删除。 饿了么最近新推出一款开源库叫做 UETool ,用来帮助设计师,程序员,测试人员来在APP上修改View的各项参数。可谓是十分好用。 BUT 他只能给自己的项目添加依赖。这样就局限了他的实力。 如果可以把它集成到其他App就好了。那么,今天的目标就是: 把UETool注入到饿了么APK内部。 先来看下效果图, 成品是UETool已经成功运行在了饿了么里面: 接下来,将一步步带领大家把UETool注入进去: 要注入一些代码进入apk,首先肯定是要先反编译咯,所以用apktool搞之: java -jar apktool_2 .3 .3 .jar d eliaome_252 .apk 然后你就会发现,呃。。apktool报错了: 可能很多小伙伴就此打住了,觉得没法解决。没事,别慌。因为是最新版apktool,这一定可以解决的。 仔细看其中有一句: Baksmaling assets/hack.dex… 很可疑,assets底下有一个hack.dex,不管是存放位置还是命名都很可疑。猜测这是一个格式错误的dex,用于防范反编译。遂,搞之。 解压删除hack.dex,顺便把签名也删掉。 再次使用apktool反编译。很好,我们想要的东西出来了: 那怎么注入呢? 很简单

分析Android APK- smali 语言简介

匿名 (未验证) 提交于 2019-12-03 00:14:01
2.1 smali 语言简介 1.smali apk文件通过apktool反编译出来的都有一个smali文件夹,里面都是以.smali结尾的文件。 smali语言是Davlik的寄存器语言,语法上和汇编语言相似,Dalvik VM与JVM的最大的区别之一就是Dalvik VM是基于寄存器的。基于寄存器的意思是,在smali里的所有操作都必须经过寄存器来进行。 2.基本数据类型 B―byte C―char D―double F―float I―int S―short V―void J―long Z―boolean 注意J、Z两个不是对应类型的首字母; 在dalvik字节码中,寄存器都是32位的,能够支持任何类型,Long和Double类型是64位的,需要2个寄存器; V 只能用于返回值类型; 3.数组和对象是引用类型 数组的表示方式是在基本类型前加上前中括号“[”,例如int数组和float数组分别表示为:[I、[F; 对象类型以L作为开头来表示,格式是Lpackage/ClassName;(用分号表示对象结束是必须的),示例: String对象在smali中为:Ljava/lang/String; Class1对象的一个boolean成员表示为:Lcom/disney/Class1;->isRunning:Z Class1对象的一个String对象成员表示为:Lcom/disney

【转】一步一步带你反编译apk,并教你修改smali和重新打包

匿名 (未验证) 提交于 2019-12-02 23:43:01
一、工具介绍: 1.apktool:aapt.exe,apktool.bat,apktool.jar;三个在同一目录结合使用,用来反编译apk,apk重新打包; 2.dex2jar:该工具作用是将classes.dex文件,反编译出源码(如果apk未加固),反编译出文件,使用jd-gui工具进行查看; 3.Auto-Sign:自动签名工具,将重新打包的apk进行签名,如果不签名,无法安装使用。 工具下载地址: https://download.csdn.net/download/sxk874890728/10443156 使用场景:项目源码丢失,只有线上apk,并且没有加固,要求修改apk接口地址,并且重新打包,再发布。 二、工具使用: 解压后工具包如图: 1.思路:使用工具dex2jar反编译,并用jd-gui工具进行查看项目结构,查看源码,并且找到接口地址类,修改接口地址; 步骤一:下载好工具,将需要反编译的APK后缀名改为.rar或则 .zip,并解压,如图: 得到其中的classes.dex文件(它就是java文件编译再通过dx工具打包而成的),将获取到的 classes.dex复制到解压出来的工具dex2jar-0.0.9.15 文件夹内, 在命令行下,进入到dex2jar.bat所在目录,输入命令: dex2jar.bat classes.dex    效果如下:

Smali插桩打日志

匿名 (未验证) 提交于 2019-12-02 22:56:40
一、smali目录下新建crack.smali,内容如下: .class public Lcrack; .super Ljava/lang/Object; .source "crack.java" .method public static log1(Ljava/lang/String;)V #打印出info 1字符串 .end method .end method .method public static J(J)V #打印出long类型的值 .locals 2 .prologue const-string v0, "crack_log_long" invoke-static {p0, p1}, Ljava/lang/String;->valueOf(J)Ljava/lang/String; move-result-object v1 invoke-static {v0, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I return-void .end method 二、使用方法(打印String): invoke-static {v1}, Lcrack;->log1(Ljava/lang/String;)V 三、有时日志太多,要写入文件分析: .class public Lcrack2;