寫之前需要準(zhǔn)備以下內(nèi)容
河南網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)從2013年開始到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
android studio 已ROOT安卓設(shè)備 GG修改器
打開android studio,創(chuàng)建Native C++ Project
activity_main.xml
<?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:gravity="center" android:orientation="vertical"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="btn" /> <TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="~" /> </LinearLayout>
MainActivity.java
package com.gs.jc; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private TextView textView; private JNI jni; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); jni = new JNI(); textView = (TextView) findViewById(R.id.tv); } public void btn(View view) { textView.setText(String.valueOf(jni.searchMem())); } }
新建一個(gè)java類,以實(shí)現(xiàn)java調(diào)用對(duì)應(yīng)C代碼
package com.gs.jc; public class JNI { static { System.loadLibrary("native-lib"); } /* *定義native方法 *調(diào)用C代碼對(duì)應(yīng)的方法 */ public native int searchMem(); }
O_RDONLY只讀打開
O_WRONLY只寫打開
O_RDWR可讀可寫打開
O_SYNC以同步的方式打開文件
C++核心代碼
#include <jni.h> #include <string> #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <dirent.h> #include <unistd.h> static int fd = 0; //查找游戲進(jìn)程pid int getPID(const char *pack_name) { int id = -1, pid = -1; DIR *dir = 0; FILE *file = 0; char filename[32] = {0}; char cmdline[256] = {0}; struct dirent *entry = 0; if (pack_name == NULL) { return -1; } dir = opendir("/proc"); if (dir == NULL) { return -1; } while ((entry = readdir(dir)) != NULL) { id = atoi(entry->d_name); if (id > 0) { sprintf(filename, "/proc/%d/cmdline", id); file = fopen(filename, "r"); if (file) { fgets(cmdline, sizeof(cmdline), file); fclose(file); if (strcmp(pack_name, cmdline) == 0) { pid = id; break; } } } } closedir(dir); return pid; } //打開文件句柄 int open_proc_mem(int pid) { if (pid <= 0) return -1; char mempath[64] = {0}; int handle = -1; sprintf(mempath, "/proc/%d/mem", pid); handle = open(mempath, O_RDWR, O_SYNC); return handle; } //讀內(nèi)存 void pread64_mem(int fd, void *buff, int size, long *addr) { if (fd <= 0 || buff == NULL || size <= 0 || addr == NULL) return; pread64(fd, buff, size, (unsigned long) addr); } //寫內(nèi)存 void pwrite64_mem(int fd, const void *buff, int size, long *addr) { if (fd <= 0 || buff == NULL || size <= 0 || addr == NULL) return; pwrite64(fd, buff, size, (unsigned long) addr); } extern "C" jint Java_com_gs_jc_JNI_searchMem(JNIEnv *env, jobject thiz) { char *game = "com.tencent.tmgp.sgame"; //包名 int pid = getPID(game); //獲取進(jìn)程PID fd = open_proc_mem(pid); //打開進(jìn)程內(nèi)存 //long base = 0; long buf[1] = {666}; //需要修改內(nèi)存的值 long *addr = (long *) 0x12C0085C; //內(nèi)存地址:0x12C0085C pwrite64_mem(fd, &buf[0], 4, addr); //寫入內(nèi)存數(shù)據(jù) //pread64_mem(fd, &base, 4, addr); return pid; }
C代碼中需要自行修改的地方
char *game = “com.tencent.tmgp.sgame”; //包名 long *addr = (long *) 0x12C0085C;//內(nèi)存地址
效果圖鏈接:yuanma/men_jb51.rar
以上是簡(jiǎn)單的內(nèi)存地址修改方法,到此這篇關(guān)于android調(diào)用C語(yǔ)言實(shí)現(xiàn)內(nèi)存的讀取與修改的方法示例的文章就介紹到這了,更多相關(guān)android調(diào)用C語(yǔ)言實(shí)現(xiàn)內(nèi)存讀取修改內(nèi)容請(qǐng)搜索創(chuàng)新互聯(lián)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持創(chuàng)新互聯(lián)!
分享名稱:android調(diào)用C語(yǔ)言實(shí)現(xiàn)內(nèi)存的讀取與修改的方法示例
文章地址:http://chinadenli.net/article2/pghdoc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)、定制開發(fā)、軟件開發(fā)、搜索引擎優(yōu)化、網(wǎng)站設(shè)計(jì)公司、域名注冊(cè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)