Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
Android HOOK¹¤¾ßCydia SubstrateʹÓÃÏê½â
 
×÷Õߣºnothingl3 À´×ÔÓÚ£ºCSDN ·¢²¼ÓÚ 2015-10-13
  2361  次浏览      28
 

Substrate¼¸¸öÖØÒªAPI½éÉÜ

MS.hookClassLoad

º¯ÊýÔ­ÐÍ£ºvoid hookClassLoad(String name, MS.ClassLoadHook hook);

¸Ã·½·¨ÊµÏÖÔÚÖ¸¶¨µÄÀà±»¼ÓÔØµÄʱºò·¢³ö֪ͨ¡£ÒòΪһ¸öÀà¿ÉÒÔÔÚÈκÎʱºò±»¼ÓÔØ£¬ËùÒÔSubstrateÌṩÁËÒ»¸ö·½·¨ÓÃÀ´¼ì²âÓû§¸ÐÐËȤµÄÀàºÎʱ±»¼ÓÔØ¡£

MS.hookMethod

¸ÃAPIÔÊÐí¿ª·¢ÕßÌṩһ¸ö»Øµ÷º¯ÊýÌæ»»Ô­À´µÄ·½·¨£¬Õâ¸ö»Øµ÷º¯ÊýÊÇÒ»¸öʵÏÖÁËMS.MethodHook½Ó¿ÚµÄ¶ÔÏó£¬ÊÇÒ»¸öµäÐ͵ÄÄäÃûÄÚ²¿Àà¡£Ëü°üº¬Ò»¸öinvokedº¯Êý¡£

º¯ÊýÔ­ÐÍ£º

void hookMethod(Class _class, Member member, MS.MethodHook hook, MS.MethodPointer old); 
void hookMethod(Class _class, Member member, MS.MethodAlteration alteration);

²ÎÊýÃèÊö

£¨Ò»£©

£¨¶þ£©

½¨Ò鿪·¢ÕßʹÓõڶþÖÖ·½Ê½£¬ÕâÖÖ·½Ê½Ê¹ÓÃÆðÀ´¼òµ¥²¢ÇÒºÜÉÙ³ö´í£¬²»ÐèÒªÒ»¸öµ¥¶ÀµÄMS.MethodPointerÀàʵÀý¡£

ʹÓ÷½·¨

ÏÂÃæÒÔ¹ÙÍøµÄÒ»¸öʵÀýÀ´ËµÃ÷cydia substrateµÄʹÓ÷½·¨¡£¸ÃʵÀýÊÇʵÏÖ½«¶à¸ö½Ó¿Ú×é¼þÑÕÉ«ÐÞ¸ÄΪ×ÏÂÞÀ¼É«¡£

ÐèÒª°²×°£ºhttp://www.cydiasubstrate.com/download/com.saurik.substrate.apk

²½ÖèÒ»£º´´½¨Ò»¸ö¿ÕµÄAndroid¹¤³Ì¡£ÓÉÓÚ´´½¨µÄ¹¤³Ì½«ÒÔ²å¼þµÄÐÎʽ±»¼ÓÔØ£¬ËùÒÔ²»ÐèÒªactivity¡£½«SDKÖеÄsubstrate-api.jar¸´ÖƵ½project/libsÎļþ¼ÐÖС£

²½Öè¶þ£ºÅäÖÃManifestÎļþ

£¨1£©ÐèÒªÖ¸¶¨È¨ÏÞ£ºcydia.permission.SUBSTRATE

£¨2£©Ìí¼Ómeta±êÇ©£¬nameΪcydia.permission.SUBSTRATE£¬valueΪÏÂÒ»²½Öд´½¨µÄÀàÃû.Main

<manifest xmlns:android="http://schemas.android.com/apk/res/android"> 
<application>
<meta-data android:name="com.saurik.substrate.main"
android:value=".Main"/>
</application>
<uses-permission android:name="cydia.permission.SUBSTRATE"/>
</manifest>

²½Öè¶þ£º´´½¨Ò»¸öÀ࣬ÀàÃûΪMain¡£ÀàÖаüº¬Ò»¸östatic·½·¨initialize£¬µ±²å¼þ±»¼ÓÔØµÄʱºò£¬¸Ã·½·¨ÖеĴúÂë¾Í»áÔËÐУ¬Íê³ÉһЩ±ØÒªµÄ³õʼ»¯¹¤×÷¡£

import com.saurik.substrate.MS; 

public class Main {
static void initialize() {
// ... code to run when extension is loaded
}
}

²½ÖèÈý£ºÎªÁËʵÏÖHOOK£¬´ïµ½ÐÞ¸ÄÄ¿±êÀàÖеĴúÂëµÄÄ¿µÄ£¬ÎÒÃÇÐèÒªµÃµ½Ä¿±êÀàµÄÒ»¸öʵÀý£¬ÈçʾÀýÖеÄresources¡£

public class Main { 
static void initialize() {
MS.hookClassLoad("android.content.res.Resources", new MS.ClassLoadHook() {
public void classLoaded(Class<?> resources) {
// ... code to modify the class when loaded
}
});
}
}

²½ÖèËÄ£ºÍ¨¹ýMS.MethodHookʵÀýʵÏÖÔ­´úÂëµÄÐ޸ġ£

ΪÁ˵÷ÓÃÔ­À´´úÂëÖеķ½·¨£¬ÎÒÃÇÐèÒª´´½¨Ò»¸öMS.MethodPointerÀàµÄʵÀý£¬Ëü¿ÉÒÔÔÚÈκÎʱºòÔËÐÐÔ­À´µÄ´úÂë¡£

ÔÚÕâÀïÎÒÃÇͨ¹ý¶ÔÔ­´úÂëÖÐresources¶ÔÏóԭʼ´úÂëµÄµ÷ÓúÍÐ޸쬽«ËùÓÐÂÌÉ«Ð޸ijÉÁË×ÏÂÞÀ¼É«¡£

public void classLoaded(Class<?> resources) { 
Method getColor;
try {
getColor = resources.getMethod("getColor", Integer.TYPE);
} catch (NoSuchMethodException e) {
getColor = null;
}

if (getColor != null) {
final MS.MethodPointer old = new MS.MethodPointer();

MS.hookMethod(resources, getColor, new MS.MethodHook() {
public Object invoked(Object resources, Object... args)
throws Throwable
{
int color = (Integer) old.invoke(resources, args);
return color & ~0x0000ff00 | 0x00ff0000;
}
}, old);
}
}

°²×°ÔËÐУ¬ÖØÆôϵͳºó·¢Ïֺܶà×ÖÌåÑÕÉ«¶¼±äÁË¡£ÈçÏÂͼËùʾ£º

ʾÀýÖÐMS.hookMethodµÄ´úÂë¿ÉÒԸijɣº

MS.hookMethod(resources, getColor, new MS.MethodAlteration<Resources, Integer>() { 
public Integer invoked(Resources resources, Object... args)
throws Throwable
{
int color = invoke(resources, args);
return color & ~0x0000ff00 | 0x00ffee00;
}
});

¶ÌÐÅ¼à¿ØÊµÀý

ÔÚÏÂÃæµÄÀý×ÓÖÐÎÒÃÇʵÏÖÁ˶ÌÐżàÌý¹¦ÄÜ£¬½«¶ÌÐÅ·¢ËÍÈË¡¢½ÓÊÕÈËÒÔ¼°¶ÌÐÅÄÚÈÝ´òÓ¡³öÀ´£º

1 import java.lang.reflect.Method; 
2 import android.app.PendingIntent;
3 import android.util.Log;
4 import com.saurik.substrate.MS;
5
6
7 public class Main {
8
9 static void initialize() {
10
11 MS.hookClassLoad("android.telephony.SmsManager", new MS.ClassLoadHook() {
12
13
14 @Override
15
16 public void classLoaded(Class<?> SmsManager) {
17
18 //code to modify the class when loaded
19
20 Method sendTextMessage;
21
22 try {
23
24 sendTextMessage = SmsManager.getMethod("sendTextMessage",
25
new Class[]{String.class,String.class,String.class,PendingIntent.class,PendingIntent.class});
27
28
29 } catch (NoSuchMethodException e) {
30
31 sendTextMessage = null;
32
33 }
34
35 MS.hookMethod(SmsManager, sendTextMessage, new MS.MethodAlteration() {
36
37 public Object invoked(Object _this,Object... _args) throws Throwable{
38
39 Log.i("SMSHOOK","SEND_SMS");
40
41 Log.i("SMSHOOK","destination:"+_args[0]);
42
43 Log.i("SMSHOOK","source:"+_args[1]);
44
45 Log.i("SMSHOOK","text:"+_args[2]);
46
47 return invoke(_this, _args);
48
49 }
50
51 });
52
53
54 }
55
56 });
57
58 }
59
60 }

ÔËÐкóµÄ½á¹ûΪ£º

ps: Á¬½Óhttp://mobile.51cto.com/aprogram-454091.htm

×î½üд±ÏÒµÂÛÎÄ£¬ºÃ³¤Ê±¼äû¸üÐÂÁË£¬Ò²ÓÐһЩ֮ǰµÄ²©¿Íû¸üС£

   
2361 ´Îä¯ÀÀ       28
 
Ïà¹ØÎÄÕÂ

ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶ËUI²âÊÔ·ÖÎö
iPhoneÏûÏ¢ÍÆËÍ»úÖÆÊµÏÖÓë̽ÌÖ
AndroidÊÖ»ú¿ª·¢£¨Ò»£©
 
Ïà¹ØÎĵµ

Android_UI¹Ù·½Éè¼Æ½Ì³Ì
ÊÖ»ú¿ª·¢Æ½Ì¨½éÉÜ
androidÅÄÕÕ¼°ÉÏ´«¹¦ÄÜ
Android½²ÒåÖÇÄÜÊÖ»ú¿ª·¢
Ïà¹Ø¿Î³Ì

Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò
Androidϵͳ¿ª·¢
AndroidÓ¦Óÿª·¢
ÊÖ»úÈí¼þ²âÊÔ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

androidÈË»ú½çÃæÖ¸ÄÏ
AndroidÊÖ»ú¿ª·¢£¨Ò»£©
AndroidÊÖ»ú¿ª·¢£¨¶þ£©
AndroidÊÖ»ú¿ª·¢£¨Èý£©
AndroidÊÖ»ú¿ª·¢£¨ËÄ£©
iPhoneÏûÏ¢ÍÆËÍ»úÖÆÊµÏÖ̽ÌÖ
ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶ËUI²âÊÔ·ÖÎö
ÊÖ»úÈí¼þ×Ô¶¯»¯²âÊÔÑо¿±¨¸æ

Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò
AndroidÓ¦Óÿª·¢
Androidϵͳ¿ª·¢
ÊÖ»úÈí¼þ²âÊÔ
ǶÈëʽÈí¼þ²âÊÔ
AndroidÈí¡¢Ó²¡¢ÔÆÕûºÏ

ÁìÏÈIT¹«Ë¾ android¿ª·¢Æ½Ì¨×î¼Ñʵ¼ù
±±¾© Android¿ª·¢¼¼Êõ½ø½×
ijÐÂÄÜÔ´ÁìÓòÆóÒµ Android¿ª·¢¼¼Êõ
ijº½Ì칫˾ Android¡¢IOSÓ¦ÓÃÈí¼þ¿ª·¢
°¢¶û¿¨ÌØ LinuxÄÚºËÇý¶¯
°¬Ä¬Éú ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ
Î÷ÃÅ×Ó Ç¶Èëʽ¼Ü¹¹Éè¼Æ