小言_互联网的博客

实战_之简单修改smali流程(提示未注册)

291人阅读  评论(0)

样本:app.apk
输入用户名 注册码 点击注册 提示 未注册
目的 是要 提示 注册成功

1:
AndroidKiller 反编译 app.apk
搜索关键字 : 无效

Java中 字符串
一种情况是 直接在 代码中 以字符串形式 表现出来

另一种情况是 通过 资源ID 号 关联 在代码中中 通过 ID号 在资源string文件里 找到 当前 ID号的 字符串
一般来讲 程序都是 通过ID 这种方式 因为这样 便于后期维护更新

那么我们就明白了
一个是 在smali代码中 直接搜索 中文字符串的 unicode编码
这种情况 针对的是 直接在 代码中 以字符串形式 表现出来

如果没搜索到 就用另种方法
直接搜 中文字符串 这种情况 针对的是
通过 资源ID 号 关联 在代码中中 通过 ID号 在资源string文件里 找到 当前 ID号的 字符串
在资源string文件里 是以 中文形式保存的

这里我们搜 无效 unicode编码 没搜到 那么就换第二种方法
直接搜 无效
搜索到在res\values\strings.xml 里

无效用户名或注册码

name=“unsuccessed” 相当于 字段名
无效用户名或注册码 相当于 字段值

再搜 unsuccessed
发现在 public.xml 里有

这个 ID是我们要 找的
继续搜这个ID
在MainActivity$1.smali 里搜到

#if-nez v0, :cond_0
#if-eqz v0, :cond_0
goto :cond_0

.line 34
iget-object v0, p0, Lcom/droider/crackme0201/MainActivity$1;->this$0:Lcom/droider/crackme0201/MainActivity;

.line 35
const v1, 0x7f05000b

.line 34
invoke-static {v0, v1, v3}, Landroid/widget/Toast;->makeText(Landroid/content/Context;II)Landroid/widget/Toast;

move-result-object v0

.line 35
invoke-virtual {v0}, Landroid/widget/Toast;->show()V

梳理下 程序里应该是 这么执行的 通过ID 在public.xml里 找到

再通过 name=“unsuccessed” 在string.xml里找到
无效用户名或注册码

再分析下 程序执行流程
if-nez v0, :cond_0 原程序里是 如果v0不等于0 跳转到 标签 cond_0 执行 注册的流程
等于0则 执行 注册不成功的流程
我们修改这
方法一:
if-eqz v0, :cond_0 把不等于0 修改成 等于0
方法二:
goto :cond_0 不管什么情况 都直接 goto 到 cond_0 去执行


转载:https://blog.csdn.net/qq_34108752/article/details/101032009
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场