2013-09-02 4 views
5

मैं apktool d के साथ एक एपीके को रिवर्स करने की कोशिश कर रहा हूं और इसमें बनाई गई स्माली में पैक-स्विच स्टेटमेंट शामिल हैं जिन्हें मैं पूरी तरह से समझ नहीं पा रहा हूं। एक विधि शामिल हैं:एंड्रॉइड पर पैक किए गए स्विच को apktool द्वारा उत्पादित स्माली के रूप में कैसे काम करता है?

:pswitch_data_0 
.packed-switch 0x7f060395 
    :pswitch_4 
    :pswitch_5 
    :pswitch_1 
.end packed-switch 

वास्तव में क्या यह क्या करता है:

packed-switch v0, :pswitch_data_0

:pswitch_X जैसे लेबल से कोड जहां एक्स एक नंबर और साथ विधि के अंत में है में बाद में इसके बाद? यह स्थानों की एक सूची की तरह दिखता है, लेकिन किस स्थिति पर? यह 0x7f060395 के साथ क्या करता है?

उत्तर

8

स्विच दो भागों में हैं, जैसा आपने देखा था। आपके द्वारा सूचीबद्ध दूसरा भाग पेलोड छद्म-निर्देश है, जिसमें सभी स्विच केस शामिल हैं। पहला भाग एक पैक-स्विच निर्देश है, जो जांच के लिए मूल्य वाले रजिस्टर को परिभाषित करता है, और लेबल का उपयोग करके एक पेलोड निर्देश को संदर्भित करता है।

एक पैक स्विच के लिए, पेलोड छद्म अनुदेश में मामला मान अनुक्रमिक हैं, और केवल पहले मान वास्तव में दिया जाता है (इस मामले में, 0x7f060395)

अपने उदाहरण के लिए विशेष रूप से, जब पैक्ड स्विच निर्देश निष्पादित किया जाता है, यह पेलोड में 3 मामलों के खिलाफ v0 रजिस्टर के मूल्य की जांच करेगा। यदि मान 0x7f060395 है, तो यह इस पर कूद जाएगा: pswitch_4, 0x7f060396, यह इस पर कूद जाएगा: pswitch_5, आदि

यदि रजिस्टर का मान किसी भी मामले से मेल नहीं खाता है, तो निष्पादन जारी रहेगा पैक-स्विच निर्देश के बाद अगला निर्देश (रजिस्टर और लेबल वाला एक, पेलोड छद्म-निर्देश नहीं)।

स्पैस-स्विच निर्देश समान है, सिवाय इसके कि इसके पेलोड निर्देश में अनुक्रमिक कुंजी मानों का उपयोग करने के बजाय प्रत्येक मामले से जुड़ा एक स्पष्ट मूल्य है।

आप dalvik-bytecode दस्तावेज़ में सभी nitty-gritty विवरण पा सकते हैं।

+0

धन्यवाद, जो सबकुछ बताता है। –

+0

मुझे आशा है कि आपको कोई फर्क नहीं पड़ता, मैंने आपके जवाब को [forum.xda-developers.com] पर लागू किया (http://forum.xda-developers.com/showthread.php?p=45212756) जैसा कि मैंने एक ही प्रश्न पूछा क्या आप वहां मौजूद हैं। अगर यह आपको बताता है तो आप मुझे बताते हैं और मैं इसे हटा दूंगा। –

+0

कोई चिंता नहीं :)। यह मनोरंजक है कि मैं अब आपके माध्यम से xda पर vicariously पोस्ट कर रहा हूँ। (मैं नियमित रूप से होता था, जी 1 दिनों में वापस आ गया था)। – JesusFreke

संबंधित मुद्दे