2010-11-23 14 views
5

मैं रनटाइम पर एंड्रॉइड एप्लिकेशन में कोड इंजेक्ट करना चाहता हूं। मैंने एसडीकार्ड में एक डेक्सफाइल उत्पन्न करने के लिए डीएक्स उपकरण का उपयोग करने की कोशिश की है, लेकिन जब मैं तत्काल करना चाहता हूं, तो यह विफल हो जाता है। क्या नया दल्विक बाइटकोड उत्पन्न करने वाले कोड को इंजेक्ट करने के लिए कोई उपकरण हैं? मैं एंड्रॉइड के लिए कुछ पुस्तकालयों, aspecjt या guice का अध्ययन कर रहा हूँ। क्या स्क्रिप्ट भाषा के साथ काम करना बेहतर है?क्या एंड्रॉइड एप्लिकेशन में कोड इंजेक्ट करना संभव है?

धन्यवाद लोग :)

+0

की तरह आप कर रहे हैं जो कुछ भी बेहद गलत है ध्वनि और भले ही यह काम करता है, यह विचार, मैं एक उपकरण BCEL के लिए या के लिए इसी तरह उपयोग करना चाहते हैं नहीं है वैध – Falmarri

+0

की तुलना में अधिक दुर्भावनापूर्ण उपयोग है एएसएम। आप कोड को उपलब्ध जानकारी में अनुकूलित कर सकते हैं। ; पी – Sergio

+1

यदि आप गतिशील रूप से जोड़े गए कोड का आह्वान करके अपने स्वयं के स्वयं लिखित अनुप्रयोगों में से एक का विस्तार करना चाहते हैं, तो कृपया ऐसा कहने के लिए प्रश्न दोबारा लिखें। –

उत्तर

-10

नहीं, यह संभव नहीं है। यदि संभव हो तो एंड्रॉइड एप्लिकेशन अनुमतियां काम नहीं करेंगी।

+6

एंड्रॉइड एप्लिकेशन अनुमतियां इस से पूरी तरह से संबंधित नहीं हैं। अनुमतियां (जैसे नेटवर्क एक्सेस और बाहरी स्टोरेज) को देशी कोड के लिए काम करना है, इसलिए वे भाषा सुविधाओं की बजाय लिनक्स प्रक्रिया सुरक्षा तंत्र पर बने हैं। सुरक्षा छेद को छोड़कर, उन्हें रोकने के लिए कोई भी आवेदन नहीं कर सकता है। – fadden

+0

अच्छा बिंदु। मैं जवाब देने से पहले यह नहीं सोच रहा था। – Juhani

2

आप DexClassLoader क्लास के साथ अपनी खुद की DEX फ़ाइल निर्दिष्ट कर सकते हैं। इसका उपयोग कुछ ऐप्स द्वारा किया जाता है जो "प्लगइन" व्यवहार चाहते हैं।

डिवाइस पर कुछ भी नहीं है जो डीईएक्स फाइलें उत्पन्न करेगा, हालांकि। फ्लाई पर कोड उत्पन्न करने और इसका उपयोग करने के लिए कोई तंत्र नहीं है।

0

Generating Dalvik Bytecode at Runtime on-device Using ASM or BCEL

इस उदाहरण उपयोग एएसएम और BCEL उपकरण पर दो वर्गों generete करने के लिए। कक्षाएं एसडी कार्ड मेमोरी में बनाई गई हैं और फिर वे एंड्रॉइड ऑपरेटिंग सिस्टम में गतिशील रूप से लोड की जाती हैं।

public class HelloWorld { 
    public static void hello(){ 
     int a=0xabcd; 
     int b=0xaaaa; 
     int c=a-b; 
     String s=Integer.toHexString(c); 
     System.out.println(s); 
    } 

} 

BCEL या एएसएम सबसे पहले मैं का इस्तेमाल किया है एसडी कार्ड में एक नया तदर्थ वर्ग बनाने के लिए:

निम्नलिखित वर्ग उदाहरण के टेम्पलेट है। दूसरी बार मैंने जावा क्लास को डीडी क्लास में डीडीक्लिएंट यूटिलि के साथ डीएक्स क्लाइंट में परिवर्तित कर दिया है। अंत में मैं एक जार फ़ाइल बनाया है और उसके बाद मैं सिर्फ इस बात के लिए एसडी कार्ड

DXClient संदर्भ

https://github.com/headius/dexclient/blob/master/src/DexClient.java

5

Dexmaker नया है से डिवाइस में इस पैकेज भरी हुई और तैयार की है। यहाँ परियोजना की वेबसाइट से उदाहरण का हिस्सा है:

DexMaker dexMaker = new DexMaker(); 

    // Generate a HelloWorld class. 
    TypeId<?> helloWorld = TypeId.get("LHelloWorld;"); 
    dexMaker.declare(helloWorld, "HelloWorld.generated", Modifier.PUBLIC, TypeId.OBJECT); 
    generateHelloMethod(dexMaker, helloWorld); 

    // Create the dex file and load it. 
    File outputDir = new File("."); 
    ClassLoader loader = dexMaker.generateAndLoad(HelloWorldMaker.class.getClassLoader(), 
      outputDir, outputDir); 
    Class<?> helloWorldClass = loader.loadClass("HelloWorld"); 

    // Execute our newly-generated code in-process. 
    helloWorldClass.getMethod("hello").invoke(null); 
-1

आप इस पृष्ठ देख सकते हैं, लेकिन आप APKTool, SignApk जैसे कुछ उपकरणों का उपयोग करने के लिए है।

http://blackhatcrackers.blogspot.de/2013/05/injecting-custom-code-into-android-apks.html

+0

वह रनटाइम पर लाइव कोड इंजेक्शन के बारे में पूछ रहा है। इंजीनियरिंग रिवर्स नहीं और इसे पुन: सम्मिलित करना। – ShihabSoft

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

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