Implement Android Native side blasting source code

Try to make some memory modifications on the so side of the mobile terminal to make it go to the unreasonable logic, and here is the source code of the APP to be blasted

JAVA side:

 1 package com.example.grady.sectestone;
 2 
 3 import android.os.Handler;
 4 import android.os.Message;
 5 import android.support.v7.app.AppCompatActivity;
 6 import android.os.Bundle;
 7 import android.widget.TextView;
 8 
 9 import java.util.Timer;
10 import java.util.TimerTask;
11 
12 public class MainActivity extends AppCompatActivity {
13 
14     // Used to load the 'native-lib' library on application startup.
15     static {
16         System.loadLibrary("native-lib");
17     }
18 
19     private TextView tv;
20     private Timer timer;
21     private int count = 0;
22 
23 
24     private Handler mHandler = new Handler(){
25         @Override
26         public void handleMessage(Message msg) {
27             super.handleMessage(msg);
28             //tv.setText((String)(msg.getData().get("time")));
29             String str = stringFromJNI();
30             tv.setText(str);
31         }
32     };
33 
34     @Override
35     protected void onCreate(Bundle savedInstanceState) {
36         super.onCreate(savedInstanceState);
37         setContentView(R.layout.activity_main);
38 
39         // Example of a call to a native method
40         tv = (TextView) findViewById(R.id.sample_text);
41         tv.setText(stringFromJNI());
42 
43         timer = new Timer();
44         TimerTask timerTask = new TimerTask() {
45             @Override
46             public void run() {
47                 count++;
48                 Message msg = new Message();
49                 msg.getData().putCharSequence("time", String.valueOf(count));
50                 mHandler.sendMessage(msg);
51             }
52         };
53         timer.schedule(timerTask, 1000, 1000);
54     }
55 
56     @Override
57     protected void onDestroy() {
58         super.onDestroy();
59         timer.cancel();
60         timer = null;
61     }
62 
63     /**
64      * A native method that is implemented by the 'native-lib' native library,
65      * which is packaged with this application.
66      */
67     public native String stringFromJNI();
68 }
View Code

Native side

#include <jni.h>
#include <string>
#include <sstream>

static int count = 0;

extern "C"

JNIEXPORT jstring

JNICALL
Java_com_example_grady_sectestone_MainActivity_stringFromJNI(
        JNIEnv * env,
        jobject /* this */) {
    std::string hello;
    count++;
    std::stringstream ss;
    if (count > 30)
    {
        hello = "Grady JNI Count > 30 :count = ";
    }
    else if (count < 30 && count >= 0)
    {
        hello = "Grady JNI Check it : count = " ;
    }
    else
    {
        hello = "Grady Boom it !!!!! count < 0 : count = ";
    }

    ss << count;
    std::string countStr;
    ss >> countStr;
    std::string result = hello + countStr;


    return env->NewStringUTF(result.c_str());
}

Here, we can never enter the logic of easter egg count < 0;

Later, we will walk into the logic of easter eggs by certain means.

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324928333&siteId=291194637