我们来看看要破解的apk打开后是个什么样的界面并且有什么功能,这个是我自己编写的一个简易程序,下面我会放出源码。
在这里我们可以看见这个app是一个输入密码然后输入正确下面就会出现登录成功的提示,否则下面就会有登录失败的提示,在这里我们要求让这个软件无论密码正确还是不正确都让它提示登录成功。
扫描二维码关注公众号,回复:
9143257 查看本文章
下面我们先用ApkIDE这个工具打开这个apk
我们来于都这个smali发现有一个if的判断跳转语句,如下图
这里的意思是如果v2等于v0跳转到:con_0执行,要不然继续往下执行不进行跳转,然后我们在右边搜索登陆成功,这里记住要转换成Unicode码再进行搜索。
这里我们可以看见:cond_0后面执行的是登陆成功的代码,所以我们要让它进行无条件的跳转到:cond_0执行,那么这里在if判断语句的前面让它直接跳转到:cond_0的位置执行。
1.在if eq v0, v2, :cond_0的上面加上代码goto :cond_0就可以直接跳转到:cond_0处执行。
2.还有就是把if eq v0, v2, :cond_0改成if ne v0, v2, :cond_0
3.我们还可以把Toast显示内容修改了,把登陆失败修改成登陆成功,这里记住要把字符转换为Unicode码,最后实现效果。
最后保存后编译生成apk。
下面是这个程序的源代码:
布局源代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<TextView
android:layout_width="match_parent"
android:layout_height="200dp"
android:id="@+id/TextView"
android:textSize="55dp"
/>
<EditText
android:id="@+id/editText"
android:layout_width="300dp"
android:layout_height="70dp"
android:layout_marginLeft="45dp"
android:layout_marginTop="40dp"
/>
<Button
android:id="@+id/Button"
android:layout_width="110dp"
android:layout_height="60dp"
android:layout_gravity="center"
android:layout_marginTop="40dp"
/>
</LinearLayout>
java源代码
package com.example.zhangrenjie.test;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
private TextView tv;
private EditText et;
private Button bt;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
TextView tv = (TextView) findViewById(R.id.TextView);
final EditText et = (EditText) findViewById(R.id.editText);
Button bt = (Button) findViewById(R.id.Button);
tv.setText("请输入正确的密码,否则无法成功进入程序");
bt.setText("确定登陆");
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String str = et.getText().toString();
int num;
num=Integer.valueOf(str);
if (num != 123456789) {
Toast.makeText(getApplicationContext(), "登陆失败",Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(getApplicationContext(), "登陆成功",Toast.LENGTH_SHORT).show();
}
}
});
}
}
后面还要更加精彩的文章哦