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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
¸É»õ£¡Ò»ÎÄÁ˽ⰲ׿APPÄæÏò·ÖÎöÓë±£»¤»úÖÆ
 
×÷ÕߣºÒ×¶ÜÒµÎñ·ç¿Ø¹Ù
  3531  次浏览      27
2020-9-2 
 
±à¼­ÍƼö:
½éÉÜÁË Android App³£¼û±£»¤·½·¨¼°Æä¶ÔÓ¦µÄÄæÏò·ÖÎö·½·¨£¬ÒÔ¼°·ÖÎöÁ˳£¼ûµÄ¼Ó¹Ì·½°¸Ô­ÀíÓë¶Ô¿¹·½·¨¡£
±¾ÎÄÀ´×ÔÓÚÍøÒ×Ò×¶Ü£¬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼­¡¢ÍƼö¡£

°²×¿APP°²È«°üº¬ºÜ¶àÄÚÈÝ£¬±¾´Î·ÖÏíÁË»ìÏý´úÂë¡¢ÕûÌåDex¼Ó¹Ì¡¢²ð·Ö Dex ¼Ó¹Ì¡¢ÐéÄâ»ú¼Ó¹ÌµÈ·½Ãæ¡£ÊÂʵÉÏ£¬ÕâЩÄÚÈÝÒ²ÊǹúÄÚ½ü¼¸ÄêAndroid App°²È«±£»¤µÄÒ»ÖÖÖ÷ÒªÇ÷ÊÆ¡£

Ò»¡¢»ìÏý´úÂë

Java´úÂëÊǷdz£ÈÝÒ×·´±àÒëµÄ£¬×÷ΪһÖÖ¿çÆ½Ì¨µÄ¡¢½âÊÍÐÍÓïÑÔ£¬Java Ô´´úÂë±»±àÒë³ÉÖм䡰×Ö½ÚÂ롱´æ´¢ÓÚclassÎļþÖС£ÓÉÓÚ¿çÆ½Ì¨µÄÐèÒª£¬ÕâЩ×Ö½ÚÂë´øÓÐÐí¶àµÄÓïÒåÐÅÏ¢£¬ºÜÈÝÒ×±»·´±àÒë³ÉJavaÔ´´úÂ롣ΪÁ˺ܺõر£»¤JavaÔ´´úÂ룬¿ª·¢ÕßÍùÍù»á¶Ô±àÒëºÃµÄclassÎļþ½øÐлìÏý´¦Àí¡£

»ìÏý¾ÍÊǶԷ¢²¼³öÈ¥µÄ³ÌÐò½øÐÐÖØÐÂ×éÖ¯ºÍ´¦Àí£¬Ê¹µÃ´¦ÀíºóµÄ´úÂëÓë´¦Àíǰ´úÂëÍê³ÉÏàͬµÄ¹¦ÄÜ£¬¶ø»ìÏýºóµÄ´úÂëºÜÄѱ»·´±àÒ룬¼´Ê¹·´±àÒë³É¹¦Ò²ºÜÄѵóö³ÌÐòµÄÕæÕýÓïÒå¡£ProGuard¾ÍÊÇÒ»¸ö»ìÏý´úÂëµÄ¿ªÔ´ÏîÄ¿£¬Äܹ»¶Ô×Ö½ÚÂë½øÐлìÏý¡¢Ëõ¼õÌå»ý¡¢ÓÅ»¯µÈ´¦Àí¡£

Proguard´¦ÀíÁ÷³ÌͼÈçÏÂËùʾ£¬°üº¬Ñ¹Ëõ¡¢ÓÅ»¯¡¢»ìÏý¡¢Ô¤¼ìËĸöÖ÷Òª»·½Ú£º

ѹËõ£¨Shrink£©£º¼ì²â²¢ÒƳý´úÂëÖÐÎÞÓõÄÀà¡¢×ֶΡ¢·½·¨ºÍÌØÐÔ£¨Attribute£©£»

ÓÅ»¯£¨Optimize£©£º¶Ô×Ö½ÚÂë½øÐÐÓÅ»¯£¬ÒƳýÎÞÓõÄÖ¸Áî¡£ÓÅ»¯´úÂ룬·ÇÈë¿Ú½ÚµãÀà»á¼ÓÉÏprivate/static/final£¬Ã»ÓÐÓõ½µÄ²ÎÊý»á±»É¾³ý£¬Ò»Ð©·½·¨¿ÉÄÜ»á±ä³ÉÄÚÁª´úÂ룻

»ìÏý£¨Obfuscate£©£ºÊ¹ÓÃa¡¢b¡¢c¡¢dÕâÑù¼ò¶Ì¶øÎÞÒâÒåµÄÃû³Æ£¬¶ÔÀà¡¢×ֶκͷ½·¨½øÐÐÖØÃüÃû£»

Ô¤¼ì£¨Preveirfy£©£ºÔÚJavaƽ̨É϶Դ¦ÀíºóµÄ´úÂë½øÐÐÔ¤¼ì£¬È·±£¼ÓÔØµÄclassÎļþÊÇ¿ÉÖ´Ðеġ£

ÔÚ·ÖÏíÖУ¬ÖÓÑÇÆ½Õ¹Ê¾ÁËÀûÓÃProguard£¬¶ÔDex2jar½øÐз´±àÒë´¦ÀíºóµÄApkЧ¹ûʾÀý£º

Proguard ´¦Àíǰ

Proguard´¦Àíºó

Proguard»ìÏýÆ÷²»½öÄܹ»±£»¤´úÂ룬¶øÇÒÄܹ»¾«¼ò±àÒëºóµÄ³ÌÐò´óС£¬¼õÉÙÄÚ´æÕ¼Óá£

»ìÏý´úÂëÄæÏò·ÖÎö

Èç¹ûÏëÒª·´±àÒë»ìÏý´úÂ룬ÖÓÑÇÆ½·ÖÏíÁËÒ»¸ö¹úÍâµÄ¹¤¾ßDEGUADR£¬ËüÄܹ»Í¨¹ýͳ¼ÆµÄ·½Ê½À´½â»ìÏý¡£ËäÈ»Õâ¸ö¹¤¾ßµÄÕýÈ·ÂÊ´ï²»µ½100%£¬µ«ÊÇÄÜÔÚÒ»¶¨³Ì¶ÈÉϰïÖú·´±àÒë´úÂë¡£

ʹÓÃDEGUADR½â»ìÏýµÄʾÀý£º

com.xxxxx.common.util.CryptoUtilÍøÕ¾Ò²ÌṩÁËÒ»ÖÖ·´±àÒë·þÎñ£¬ÈçÏÂËùʾ£º

java.lang.String a(byte[]) -> encodeToString

java.lang.String a(byte[],boolean,java.lang.String) -> a

byte[] a(byte[],byte[]) -> encrypt

byte[] b(byte[]) -> getKey

byte[] b(byte[],byte[]) -> decrypt

byte[] d(java.lang.String) -> getKey

java.lang.String a(byte,char[]) -> a

java.lang.String a(java.io.File) -> getHash

java.lang.String a(java.lang.String) -> c

java.lang.String b(java.lang.String) -> encode

¶þ¡¢ÕûÌåDex¼Ó¹Ì

ΪÁ˼ÓÇ¿Android±£»¤Ç¿¶È£¬Ëæ×Ű²È«¼¼ÊõµÄ·¢Õ¹£¬ÓÖ³öÏÖÁËÐÂÐ͵ġ°¼Ó¹Ì¼¼Êõ¡±¡£DEX¼Ó¹ÌÊǶÔDEXÎļþ½øÐмӿǷÀ»¤£¬·ÀÖ¹±»¾²Ì¬·´±àÒ빤¾ßÆÆ½â¶øÐ¹Â¶Ô´Â룬×î¸Õ¿ªÊ¼³öÏÖµÄÊÇÕûÌå¼Ó¹Ì¼¼Êõ·½°¸¡£

ÕûÌå¼Ó¹Ì¼¼ÊõµÄÔ­ÀíÈçÉÏËùʾ£¬°üÀ¨Ìæ»»application/classes.dex¡¢½âÃÜ/¶¯Ì¬¼ÓÔØÔ­classes.dex¡¢µ÷ÓÃÔ­applicationÏà¹Ø·½·¨¡¢½«Ô­application¶ÔÏó/Ãû³ÆÉèÖõ½ÏµÍ³ÄÚ²¿Ïà¹Ø±äÁ¿ËÄ´ó»·½Ú¡£ÆäÖÐ×îΪ¹Ø¼üµÄÒ»²½¾ÍÊǽâÃÜ/¶¯Ì¬¼ÓÔØÔ­classes.dex£¬Í¨¹ý¼ÓÃܱàÒëºÃµÄ×îÖÕdexÔ´ÂëÎļþ£¬È»ºóÔÚÒ»¸öÐÂÏîÄ¿ÖÐÓÃÐÂÏîÄ¿µÄapplicationÆô¶¯À´½âÃÜÔ­ÏîÄ¿´úÂë²¢¼ÓÔØµ½ÄÚ´æÖУ¬Ôٰѵ±Ç°½ø³ÌÌæ»»Îª½âÃܺóµÄ´úÂ룬Äܹ»ºÜºÃµØÒþ²ØÔ´Âë²¢·ÀÖ¹Ö±½ÓÐԵķ´±àÒë¡£

ÕûÌåDex¼Ó¹ÌÄæÏò·ÖÎö

ÕûÌåDex¼Ó¹ÌÄæÏò·ÖÎöÓÐÁ½ÖÖ³£Óõķ½·¨¡£ÆäÒ»ÊÇÔÚÄÚ´æÖб©Á¦ËÑË÷ dex\n035£¬ÔÙ dump¡£ÒÔÏÂÊÇÔÚ32λϵͳÖеÄЧ¹ûʾÀý£º

ÁíÒ»ÖÖ·½·¨¾ÍÊÇͨ¹ýHook dvmDexFileOpenPartial(void* addr, int len, DvmDex**)¡£

Èý¡¢²ð·ÖDex¼Ó¹Ì

Ëæ×ÅÒµÎñ¹æÄ£·¢Õ¹µ½Ò»¶¨³Ì¶È£¬²»¶ÏµØ¼ÓÈëй¦ÄÜ¡¢Ìí¼ÓеÄÀà¿â£¬´úÂëÔÚ¼±¾çÅòÕ͵Äͬʱ£¬ÏàÓ¦µÄapk°üµÄ´óСҲ¼±¾çÔö¼Ó£¬ÄÇô¼òµ¥µÄÕûÌå¼Ó¹Ì·½°¸¾Í²»ÄܺܺõØÂú×㰲ȫÐèÇó£¬ÔÚÕûÌå¼Ó¹Ì·½°¸Ö®ÍâÓÖ³öÏÖÁ˲ð·Ö¼Ó¹ÌµÄ¼¼Êõ·½°¸¡£

µ«ÊÇÈçÉÏËùʾ£¬dexÎļþÔÚ¼Ó¹Ìʱ£¬Õë¶ÔÖмäȱʧµÄÒ»²¿·ÖÊý¾Ý»áÒÔ½âÃܺóµÄÊý¾ÝÀ´Ìæ»»£¬ÓеÄʱºòÕâÖÖ²ð·ÖÌæ»»Ò²»áµ¼ÖÂÊý¾Ý²»×¼È·¡£ÄÇôµ½µ×Ó¦¸Ã²ð·ÖʲôÑùµÄÊý¾ÝÄØ£¿¾ÍÐèÒªÁ˽âÒ»ÏÂdexÎļþµÄÊý¾Ý½á¹¹¡£

DexÎļþ½á¹¹¼«Îª¸´ÔÓ£¬ÒÔÏÂͼʾѡȡÁËÆäÖнÏÎªÖØÒªµÄÄÚÈÝ¡£ÊÂʵÉÏ£¬dexÎļþÊÇÒ»¸öÒÔclassΪºËÐÄ×é×°ÆðÀ´µÄÎļþ£¬ÆäÖÐ×îÖØÒªµÄÊÇclassdataºÍclasscodeÁ½²¿·Ö£¬ÓÐÆäÌØ¶¨µÄ½Ó¿ÚºÍÖ¸ÁîÊý¾Ý£¬Ñ¡È¡ÕâÁ½²¿·ÖÀ´²ð·ÖµÄ»°£¬¼´Ê¹²ð·Ö³öÀ´Ò²²»»áй¶classÊý¾ÝºÍ×Ö½ÚÂëÊý¾Ý£¬·´±àÒë³öÀ´Ò²²»ÍêÕû£¬°²È«ÐԽϸߡ£

²ð·ÖDex¼Ó¹ÌÄæÏò·ÖÎö

¶ÔÓÚdex²ð·Ö¼Ó¹ÌµÄÄæÏò·ÖÎö£¬ÈçÏÂËùʾ£¬¿ÉÒÔÓÃclassdataÌæ»»´Ó¶ø×é×°³ÉеÄdexÎļþ£¬ËäÈ»ºÍÔ­À´µÄdexÎļþ²»»áÍêȫһÖ£¬µ«Ò²ÔÚÒ»¶¨³Ì¶ÈÉϸ´Ô­Á˱»²ð·ÖÊý¾ÝµÄÑù×Ó¡£

µ«Òª×¢ÒâµÄÊÇ£¬ÕâÖÖ·½·¨½öÊÊÓÃÓÚ±»²ð·Ö³öÈ¥µÄÊý¾Ý±äÐÎÒ»´ÎÐÔÍê³É£¬Ò²¾ÍÊÇ˵£¬ÔÚÓÐÆäËû±£»¤Ë¼Â·µÄÇé¿öϾ¡Á¿±ÜÃâʹÓ㬶øÇÒ¼´Ê¹ÓÐÐèÒªÒ²¾¡Á¿Ñ¡ÔÚÓõ½Õâ¸öÀàµÄʱºò²ÅÈ¥»Ö¸´¡£

´ËÍ⻹ÓÐÒ»¸ö¸üµ×²ãһЩµÄ¹¤¾ßdexhunter£¬Õâ¸ö¹¤¾ß½ÏΪǰÎÀ£¬µ«Í¬Ê±Ò²ÓÐһЩ¾ÖÏÞÐÔ£¬Æ©È粿·ÖÖ¸ÁîÊý¾Ý»á±»ÓÅ»¯£¬ÐγɵĴúÂë½çÃæ²»ÊǺÜÃÀ¹ÛµÈµÈ¡£

ËÄ¡¢ÐéÄâ»ú¼Ó¹Ì

ÐéÄâ»ú¼Ó¹ÌÒ²ÊôÓÚdex²ð·Ö¼Ó¹ÌµÄÒ»ÖÖ£¬ËüÊǶÔ×Ö½Ú×öÁËһЩ±ä»¯´¦Àí¡£ÈçÏÂËùʾ£¬ÕâÊÇÒ»¸öÕý³£°²×¿ÏµÍ³ÖеĴúÂ룬ÔÚÆäÖнøÐÐÁËÐéÄâ»ú¼Ó¹Ì²Ù×÷£º

ÒÔadd-int v0, v1, v2¡¢sub-int v0, v1, v2¡¢mul-int v0, v1, v2ÕâÈýÌõÖ¸Áî½øÐÐÌæ»»£¬È»ºó½øÐмӹ̱àÒ룬ÕâÑù×Ó²Ù×÷ºó£¬¼´Ê¹°ÑÌæ»»ºóµÄÊý¾Ý»Ö¸´ÁË£¬Ò²²»»á

ÐéÄâ»ú¼Ó¹ÌÄæÏò·ÖÎö¡ªHOOK JNI ½Ó¿Ú

ÕâÖÖ·½Ê½ÏµÄÄæÏò·ÖÎö£¬Ò»·½Ãæ¿ÉÒÔͨ¹ýHOOK JNI ½Ó¿ÚÀ´ÊµÏÖ£¬ËüÓÐÁ½ÖÖʵÏÖ·½Ê½¡£

ÆäÒ»ÊÇÀà³ÉÔ±/¾²Ì¬±äÁ¿²Ù×÷Ïà¹Ø½Ó¿Ú£¬±ÈÈ磺

GetStaticDoubleField SetStaticDoubleField GetDoubleField SetDoubleField ¡­

(byte, object, int, long¡­)

Æä¶þÊÇ·´Éäµ÷ÓÃÀà·½·¨£¬±ÈÈ磺

CallVoidMethodA CallBooleanMethodA CallShortMethodA CallObjectMethodA ¡­

CallStaticVoidMethodA CallStaticBooleanMethodA CallStaticShortMethodA CallStaticObjectMethodA ¡­

(byte, int, long, double ¡­)

CallObjectMethodA(JNIEnv * env, jobject object, jmethoID method, ¡­)

ͨ¹ýHOOK JNI ½Ó¿ÚʵÏÖÐéÄâ»ú¼Ó¹ÌÄæÏò·ÖÎö

ͨ¹ýHOOK JNI ½Ó¿Ú²»ÓÃÄæÏòµ×²ã£¬¾Í¿ÉÒÔÁ˽âAPP´óÖµĵ÷ÓÃÁ÷³Ì¡£µ«ÊǶÔÓÚ¸´Ôӵĵ÷Óùý³Ì£¬»òÕßÐéÄ⻯·½·¨ÊýÁ¿½Ï¶àµÄÇé¿ö£¬ÕâÖÖÄæÏò·ÖÎöÊֶο´ÆðÀ´»á±È½Ï»ìÂÒ£»¶ÔÓÚ²»ÐèÒª·µÉäµ½Java²ãÖ´ÐеÄÖ¸ÁÈçËãÊõ¡¢Âß¼­ÔËËãµÈ£¬ÔòÎÞ·¨¼à¿Øµ½¡£

ÐéÄâ»ú¼Ó¹ÌÄæÏò·ÖÎö¡ª·ÖÎöÖ¸Áî²Ù×÷ÂëÓ³Éä

ÁíÒ»·½Ã棬Ҳ¿ÉÒÔͨ¹ý·ÖÎöÖ¸Áî²Ù×÷ÂëÓ³ÉäÀ´ÄæÏò·ÖÎö¡£ÔÚͬһ¼Ó¹Ì°æ±¾£¬»òÕßÓ³Éä¹ØÏµÏàͬµÄÇé¿öÏ£¬¿ÉÒÔ²ÉÈ¡ÒÔÏÂËùʾµÄ·½·¨£º

µ«ÔÚʵ¼ÊÇé¿öÖУ¬Ã¿´Î¼Ó¹ÌʱµÄÓ³Éä¹ØÏµ¶¼ÊÇËæ»ú±ä»¯µÄ£¬ÈçÏÂËùʾ£¬ÕâÖÖÇé¿öϾÍÎÞ·¨Ö±½Ó½¨Á¢Ó³Éä¹ØÏµ¡£

²»ÒÀÀµÓÚ²Ù×÷ÂëµÄÓ³Éä¹ØÏµÖ»ÓëÐéÄâ»ú½á¹¹Óйأ¬ËùÒÔÐèÒª¸ù¾ÝÆ«ÒÆ¹ØÏµ½¨Á¢Ó³Éä¹ØÏµ£¬´Ó¶ø½øÐÐÄæÏò·ÖÎö¡£

ÒÔÉϾÍÊǴ˴Ρ¶°²×¿APPÄæÏòÓë±£»¤¡·Ö÷ÌâµÄÈ«²¿·ÖÏíÄÚÈÝ¡£

   
3531 ´Îä¯ÀÀ       27
 
Ïà¹ØÎÄÕÂ

iOSÓ¦Óð²È«¿ª·¢£¬Äã²»ÖªµÀµÄÄÇЩÊÂÊõ
Web°²È«Ö®SQL×¢Èë¹¥»÷
ÒÆ¶¯APP°²È«ÔÚÉøÍ¸²âÊÔÖеÄÓ¦ÓÃ
´ÓGoogle±¸·Ý»¥ÁªÍø¿´¡°Êý¾Ý°²È«¡±
 
Ïà¹ØÎĵµ

web°²È«Éè¼ÆÓë·À»¤
»¥ÁªÍøº£Á¿ÄÚÈݰ²È«´¦Àí¼¼Êõ
ºÚ¿Í¹¥»÷Óë·À·¶¼¼Êõ
WEBºÚºÐ°²È«¼ì²â
 
Ïà¹Ø¿Î³Ì

WEBÍøÕ¾ÓëÓ¦Óð²È«Ô­ÀíÓëʵ¼ù
webÓ¦Óð²È«¼Ü¹¹Éè¼Æ
´´½¨°²È«µÄJ2EE WebÓ¦ÓôúÂë
ÐÅÏ¢°²È«ÎÊÌâÓë·À·¶
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]
 
×îÐÂÎÄÕÂ
ÎïÁªÍø°²È«¸ÅÊö
Ê·ÉÏ×îÏêϸµÄÇø¿éÁ´¼¼Êõ¼Ü¹¹·ÖÎö
Ò»ÎĶÁ¶®Çø¿éÁ´ÕûÌå¼Ü¹¹¼°Ó¦Óð¸Àý
Çø¿éÁ´¼¼Êõ¼Ü¹¹
°²È«¼Ü¹¹ÆÀÉóʵս
×îпγÌ
WebÓ¦Óð²È«¼Ü¹¹¡¢ÈëÇÖ¼ì²âÓë·À»¤
ÎïÁªÍø¹Ø¼ü¼¼Êõ¡¢°²È«Óë±ßÔµ¼ÆËã
Çø¿éÁ´°²È«¼¼Êõʵ¼ùÖ¸ÄÏ
ÔÆ·þÎñÓ밲ȫ¼Ü¹¹
»¥ÁªÍø°²È«¿ª·¢·½·¨Óëʵ¼ù
³É¹¦°¸Àý
ÖйúÒøÐÐ ÐÅÏ¢°²È«¼¼Êõ¼°Éî¶È·ÀÓù
±±¾© WebÓ¦Óð²È«¼Ü¹¹¡¢ÈëÇÖ¼ì²âÓë·À»¤
ij²ÆË°ÁìÓòÖªÃûIT·þÎñÉÌ Web°²È«²âÊÔ
ÆÕÈð¿Ë˹ web°²È«Éè¼Æ¡¢²âÊÔÓëÓÅ»¯
±±¾©ºÍÀûʱ ÐÔÄܺͰ²È«ÐÔ²âÊÔ