3、安卓逆向 - smali语法
大家好,我是玉少,欢迎大家来到吾爱汇编论坛来学习,论坛用户名sumith,今天给大家带来的是安卓逆向基础篇,本节课教大家smail语法1、首先我们制作一个APK,然后反编译
大家先做出这个涉及界面,两个标签,两个编辑框,一个按钮,在对他们进行属性设置
双击进入按钮被单击事件,编写代码
如果 编辑框1.内容="123" 且 编辑框2.内容="456" 则
信息框("提示","登陆成功","确定")
否则
信息框("提示","登陆失败","确定")
结束 如果
语法相信知道易语言的对于这并不陌生,就用了如果这个判断
接下来点击编译,点击后生成apk,把这个apk拖进夜神模拟器,点击打开,
随便输入用户名或者密码,会提示登陆失败,
我们正确的用户名是123,456,
我们用正确的用户名试试,登陆成功了,
下面我们开始爆破,对边用户名就可以登陆。。。。
打开android killer,把apk拖进去,
刚才提示的是登陆失败,我们搜索关键字登陆失败,没搜到,还字符串,搜到了,双击进入
我们来分析这smail语句
这里就是按钮被单击事件
.method public 按钮1$被单击()V
.locals 3
.prologue
.line 4 第四行,这个为了便于记代码行数
iget-object v0, p0, Lcom/newapp/主窗口;->编辑框1:Lcom/e4a/runtime/components/impl/android/n2/编辑框;
invoke-interface {v0}, Lcom/e4a/runtime/components/impl/android/n2/编辑框;->内容()Ljava/lang/String;
move-result-object v0 这三行就是编辑框的具体操作,我们不用管
const-string v1, "123" 定义v1=“123”.字符串型
invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0 这个判断等于不等于
if-eqz v0, :cond_0 if 如果eqz等于如果等于则跳转cond_0
iget-object v0, p0, Lcom/newapp/主窗口;->编辑框2:Lcom/e4a/runtime/components/impl/android/n2/编辑框;
invoke-interface {v0}, Lcom/e4a/runtime/components/impl/android/n2/编辑框;->内容()Ljava/lang/String;
move-result-object v0
const-string v1, "456"
invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_0 这个和上面的语句一样,若果相等就跳转。否则继续往下执行
.line 5
const-string v0, "\u63d0\u793a"
const-string v1, "\u767b\u9646\u6210\u529f" 登陆失败
const-string v2, "\u786e\u5b9a"
invoke-static {v0, v1, v2}, Lcom/e4a/runtime/对话框类;->信息框(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I 调用对话框类
.line 7
:goto_0
return-void 返回
:cond_0
const-string v0, "\u63d0\u793a"
const-string v1, "\u767b\u9646\u5931\u8d25" 成功登陆
const-string v2, "\u786e\u5b9a"
invoke-static {v0, v1, v2}, Lcom/e4a/runtime/对话框类;->信息框(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I
goto :goto_0 goto相当于jmp 无条件跳转
.end method
这是一个方法的开始与结束
大致的内容就是这样,讲的可能不对,但意思和这车不多,线面来分析思路
既然上面说是等于跳转,我们改成不等于跳转试试
eqz是等于,nez是不等于,我们改一下试试,改后,记得保存,然后编译
出现了一个问题,就是用户名和密码不能有一个正确,有一个正确则不跳,大家再想象怎么改,下节课给大家解说,谢谢观看。
不好意思,忘记加北京音乐了,大家谅解,自己加上吧。
链接:http://pan.baidu.com/s/1cr41gq 密码:rmaw
条件跳转分支:"if-eq vA, vB, :cond_**" 如果vA等于vB则跳转到:cond_**"if-ne vA, vB, :cond_**" 如果vA不等于vB则跳转到:cond_**
"if-lt vA, vB, :cond_**" 如果vA小于vB则跳转到:cond_**
"if-ge vA, vB, :cond_**" 如果vA大于等于vB则跳转到:cond_**
"if-gt vA, vB, :cond_**" 如果vA大于vB则跳转到:cond_**
"if-le vA, vB, :cond_**" 如果vA小于等于vB则跳转到:cond_**
"if-eqz vA, :cond_**" 如果vA等于0则跳转到:cond_**
"if-nez vA, :cond_**" 如果vA不等于0则跳转到:cond_**
"if-ltz vA, :cond_**" 如果vA小于0则跳转到:cond_**
"if-gez vA, :cond_**" 如果vA大于等于0则跳转到:cond_**
"if-gtz vA, :cond_**" 如果vA大于0则跳转到:cond_**
"if-lez vA, :cond_**" 如果vA小于等于0则跳转到:cond_**
顺贴某blog smali条件判断语法
叶良辰和赵总 发表于 2016-5-12 19:25
膜拜格盘大神
格盘大大也学安卓逆向啊
随便玩玩,没事做的时候 520Kelly 发表于 2016-5-12 17:30
条件跳转分支:"if-eq vA, vB, :cond_**" 如果vA等于vB则跳转到:cond_**"if-ne vA, vB, :cond_**" 如果 ...
非常详细,值得学习 这个还详细点哦。 不是很全面啊 谢谢分享谢谢分享 今天学了几课,不知道能不能坚持 。唉~{:5_123:}
这个6,学习下。