[Android]动态加载JNI函数
本帖最后由 FraMeQ 于 2017-1-22 13:58 编辑新开了移动板块,却没有看到一篇帖子,很是尴尬,在这里小弟抛砖引玉,活跃下气氛。大牛别喷
安卓有两种加载JNI函数的方式,首先第一种是静态方法,看下是如何加载的
在这里我们创建了一个简单的CrackMe,首先附上MainActivity方法
package get1t.crackme;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import junit.framework.Test;
public class MainActivity extends AppCompatActivity {
static {
System.loadLibrary("mainactivity");
}
private TextView textView;
private EditText Edit_UserName;
private EditText Edit_Passwd;
private Button button;
private String UserName;
private String Passwd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView)findViewById(R.id.id);
Edit_UserName = (EditText)findViewById(R.id.editText);
Edit_Passwd = (EditText)findViewById(R.id.editText2);
button = (Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
UserName = Edit_UserName.getText().toString();
Passwd = Edit_Passwd.getText().toString();
if(Check(UserName,Passwd).equals("Success")){
textView.setText("Success");
}else {
textView.setText(Check(UserName,Passwd));
}
}
});
}
public static native String Check(String UserName, String Passwd);
}
调用了native层的Check方法 判断是否成功
------------------------------------------------------------------------------------------------------------------
**** Hidden Message *****
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
好了,最后说下为什么介绍这种方法:
碰到一个CrackMe 里面使用的这种方法,以前都是直接寻找Java_com_XXX很容易直接通过符号定位到关键点,
纠结了很久才知道这个方法,自己也用代码实现了一下,好了,就这样
来学习的,看看APK 好久没来了。。。。。进来学习一下呀。。。。。 看看是怎么分析逆向的 支持楼主楼主威武 虽然看不懂,回复学习 对楼主只能说,你太伟大了!!
看来楼主的深入不 感谢楼主分享了。 这才是纯正的技术文章,谢谢分享