生活随笔
收集整理的這篇文章主要介紹了
Frida HOOK微信实现骰子作弊
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
由于微信搖骰子的功能在本地進行隨機后在發送,所以存在可以hook掉判斷骰子數的方法進行修改作弊。
1.frida實現hook java層函數
1)寫個用來測試的demo,當我們點擊按鈕的時候會彈出窗口顯示數字。代碼中我是傳進的參數是4,顯示為8。
package com.example.fridatest;import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.Toast;
import android.os.Build;public class MainActivity
extends Activity {Button myButton1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.fragment_main);myButton1 =
(Button) findViewById(R.id.button1);myButton1.setOnClickListener( new ButtonClick());}class ButtonClick
implements OnClickListener {public void onClick(View v) {switch (v.getId()) {case R.id.button1:int nRet = test(4
);String strRet = nRet + ""
;Toast.makeText(MainActivity.this, strRet,Toast.LENGTH_LONG).show();break;default:break;}}}public int test(
int num){int nRet = num*2
;return nRet;}
} 2)運行結果。
2.連接手機,運行腳本。
1)啟動frida-server
2)adb forward tcp:27042 tcp:27042
3)執行腳本。
import frida
import sysscr =
"""
Java.perform(function () {
var be= Java.use("com.example.fridatest.MainActivity");
send(typeof(be));
send(typeof(be.test));
send("start")
be.test.implementation = function(){var type = arguments[0];send("start")send("type="+type);if (type == 4){return this.test(5);}else{return 5;}};
send("end")
});
"""rdev = frida.get_usb_device(20
)
session = rdev.attach(
"com.example.fridatest")
script =
session.create_script(scr)fp = open(
"D:/log.txt",
"w") def on_message(message, data):type = message[
"type"]msg =
messageif type ==
"send":msg = message[
"payload"]elif type ==
'error':msg = message[
'stack'] print(msg) script.on('message', on_message)
script.load()
sys.stdin.read() 4)再次點擊,可以看到hook成功,能獲取到傳入的參數以及修改后界面顯示成我們hook修改過后的數值。
?
3.修改微信骰子的判斷函數。
參考網上的文章定位最新版的判斷函數為com.tencent.mm.sdk.platformtools.be類的tx函數。(Randon函數)
1)編寫hook代碼修改實現作弊每次骰子都是6。
主要函數
?
scr =
"""
Java.perform(function () {
var be= Java.use("com.tencent.mm.sdk.platformtools.be");
send(typeof(be));
send(typeof(be.tx));
send("start")
be.tx.implementation = function(){var type = arguments[0];send("start")send("type="+type);return 5;
};
send("end")
});
""" ?
2)實現每次都能獲取到6的結果。
ps:試過了的手機,發現4.x版本的root的最為穩定。(紅米note,華為3c),坑爹三星系列的都不成功。
參考:http://www.voidcn.com/blog/autohacker/article/p-4979253.html
? ? ? :https://github.com/JAYAndroid/WeChatHook
?
轉載于:https://www.cnblogs.com/konf/p/5998785.html
總結
以上是生活随笔為你收集整理的Frida HOOK微信实现骰子作弊的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。