เราเปิด แก้ไข และจัดทำแพ็กเกจแอปพลิเคชัน Android วิธีแยกไฟล์ APK ของแอปพลิเคชันที่ติดตั้งใน Android วิธีสร้างไฟล์ APK

หนึ่งในแอพพลิเคชั่นยอดนิยมประเภทนี้ ช่วยให้คุณสามารถแยกไฟล์การติดตั้งได้โดยตรงจากร้านค้าอย่างเป็นทางการและบันทึกลงในพีซีของคุณ ในกรณีนี้ไม่จำเป็นต้องติดตั้งโปรแกรมบนพีซีด้วยซ้ำ - มีเวอร์ชันพกพาที่ใช้งานได้อย่างสมบูรณ์จากไดรฟ์ภายนอก เมื่อเปิดตัว Raccoon เป็นครั้งแรก ผู้ใช้จะต้องป้อนข้อมูลรับรองบัญชี Google ของตน มีการร้องขอรหัสอุปกรณ์ด้วย แต่สามารถละเว้นพารามิเตอร์นี้ได้

อินเทอร์เฟซของแอปพลิเคชันประกอบด้วยสองแท็บ: ดาวน์โหลดและค้นหา เมื่อค้นหาคุณสามารถใช้ชื่อ ID หรือลิงค์ในแคตตาล็อกอย่างเป็นทางการ เมื่อพบแอปพลิเคชันแล้ว คุณสามารถบันทึกลงในพีซีของคุณเป็นไฟล์ปกติ จากนั้นติดตั้งลงในอุปกรณ์เคลื่อนที่เครื่องอื่นด้วยตนเอง


แคตตาล็อกทางเลือกยอดนิยมสำหรับ Android ที่นำเสนอผลิตภัณฑ์จากนักพัฒนาต่างๆ ไดเร็กทอรีไคลเอ็นต์มีขนาดเล็ก ซึ่งช่วยให้สามารถใช้กับอุปกรณ์ระดับล่างได้ โปรแกรมทั้งหมดจัดเรียงเป็นหมวดหมู่ มีการค้นหาที่สะดวก และสามารถดาวน์โหลดแอปพลิเคชันเป็นไฟล์ได้

จากนั้นหากต้องการทำความสะอาดเศษขยะในโทรศัพท์ของคุณอย่างรวดเร็ว คุณสามารถใช้ Clean master ได้ตลอดเวลา ไม่รู้ว่ามันคืออะไร? -

เครื่องมือดาวน์โหลด APK

ส่วนขยายสำหรับเบราว์เซอร์ Chrome และ Firefox นอกจากนี้ยังช่วยให้คุณดาวน์โหลดยูทิลิตี้ที่เลือกเป็นไฟล์แยกต่างหากได้อย่างรวดเร็ว หลังจากเปิดใช้งานปลั๊กอินแล้วเพียงไปที่หน้าโปรแกรมที่ต้องการบน Google Play แล้วใช้ปุ่ม F5 หน้านี้รีเฟรชและแสดงปุ่มดาวน์โหลดสำหรับรายการที่เกี่ยวข้อง

วิธีการอื่นๆ

ยังมีวิธีดาวน์โหลดไฟล์ APK โดยไม่ต้องติดตั้งซอฟต์แวร์บุคคลที่สามอีกด้วย ตัวอย่างเช่น แทนที่จะใช้ปลั๊กอิน APK Downloader คุณสามารถใช้บริการออนไลน์ที่มีชื่อเดียวกันได้ เพียงเปิดทรัพยากรใส่ลิงก์ไปยังโปรแกรมลงในแบบฟอร์มพิเศษและรับปุ่มซึ่งการเปิดใช้งานจะเริ่มต้นการดาวน์โหลด

อีกวิธีหนึ่ง: เปิดหน้าที่ต้องการบน Google Play และเปลี่ยน play.google.com เป็น apk-dl.com ด้วยตนเองในแถบที่อยู่ของเบราว์เซอร์ (ต้องเหลือที่อยู่ที่เหลือ) หลังจากรีเฟรชเพจแล้ว ผู้ใช้จะได้รับโอกาสในการดาวน์โหลดไฟล์ที่เลือก

บางครั้งแอปพลิเคชั่นบางตัวบน Android ไม่เหมาะกับผู้ใช้ในทางใดทางหนึ่ง ตัวอย่างคือการโฆษณาที่ล่วงล้ำ และมันก็เกิดขึ้นด้วยว่าโปรแกรมนี้ดีสำหรับทุกคน แต่การแปลในนั้นคดหรือขาดไปโดยสิ้นเชิง หรือตัวอย่างเช่น โปรแกรมนี้เป็นรุ่นทดลอง แต่ไม่มีวิธีรับเวอร์ชันเต็ม จะเปลี่ยนสถานการณ์ได้อย่างไร?

การแนะนำ

ในบทความนี้เราจะพูดถึงวิธีแยกแพ็คเกจ APK ด้วยแอปพลิเคชันดูโครงสร้างภายในแยกส่วนและถอดรหัสไบต์และพยายามทำการเปลี่ยนแปลงหลายอย่างในแอปพลิเคชันที่สามารถให้ประโยชน์แก่เราอย่างใดอย่างหนึ่ง

ในการทำทั้งหมดนี้ด้วยตัวเอง คุณจะต้องมีความรู้พื้นฐานอย่างน้อยเกี่ยวกับภาษา Java ที่ใช้เขียนแอปพลิเคชัน Android และภาษา XML ซึ่งใช้ทุกที่ใน Android จากการอธิบายแอปพลิเคชันและสิทธิ์การเข้าถึงไปจนถึงการจัดเก็บสตริงที่ จะแสดงบนหน้าจอ คุณจะต้องมีความสามารถในการใช้ซอฟต์แวร์คอนโซลพิเศษด้วย

ดังนั้นแพ็คเกจ APK ที่แจกจ่ายซอฟต์แวร์ Android ทั้งหมดคืออะไร?

การถอดรหัสแอปพลิเคชัน

ในบทความนี้ เราทำงานกับโค้ดแอปพลิเคชันแบบแยกส่วนเท่านั้น แต่หากมีการเปลี่ยนแปลงที่ร้ายแรงยิ่งขึ้นกับแอปพลิเคชันขนาดใหญ่ การทำความเข้าใจโค้ด smali จะยากขึ้นมาก โชคดีที่เราสามารถถอดรหัสโค้ด dex ให้เป็นโค้ด Java ได้ ซึ่งแม้ว่าจะไม่ใช่ต้นฉบับและไม่ได้คอมไพล์กลับ แต่ก็อ่านและเข้าใจตรรกะของแอปพลิเคชันได้ง่ายกว่ามาก ในการทำเช่นนี้ เราจะต้องมีเครื่องมือสองอย่าง:

  • dex2jar เป็นตัวแปล Dalvik bytecode ไปเป็น JVM bytecode ซึ่งเราสามารถรับโค้ดในภาษา Java ได้
  • jd-gui เป็นตัวถอดรหัสที่ช่วยให้คุณรับโค้ด Java ที่อ่านได้จาก JVM bytecode คุณสามารถใช้ Jad (www.varaneckas.com/jad) แทนได้ แม้ว่าจะค่อนข้างเก่า แต่ในบางกรณีก็สร้างโค้ดที่อ่านได้ง่ายกว่า Jd-gui

นี่คือวิธีที่ควรใช้ ขั้นแรก เราเปิดตัว dex2jar โดยระบุเส้นทางไปยังแพ็คเกจ APK เป็นอาร์กิวเมนต์:

% dex2jar.sh เมล apk

ด้วยเหตุนี้ แพ็กเกจ Java mail.jar จะปรากฏในไดเร็กทอรีปัจจุบัน ซึ่งสามารถเปิดใน jd-gui เพื่อดูโค้ด Java ได้

การจัดเรียงแพ็คเกจ APK และรับ

แพ็คเกจแอป Android นั้นเป็นไฟล์ ZIP ทั่วไปที่ไม่ต้องใช้เครื่องมือพิเศษใดๆ ในการดูเนื้อหาหรือแตกไฟล์ ก็เพียงพอแล้วที่จะมีผู้จัดเก็บ - 7zip สำหรับ Windows หรือคลายซิปคอนโซลบน Linux แต่นั่นก็เกี่ยวกับกระดาษห่อหุ้ม อะไรอยู่ข้างใน? โดยทั่วไปแล้ว เรามีโครงสร้างภายในดังนี้:

  • เมตา-INF/- มีใบรับรองดิจิทัลของแอปพลิเคชัน ระบุผู้สร้าง และการตรวจสอบไฟล์แพ็คเกจ
  • res/ - ทรัพยากรต่างๆ ที่แอปพลิเคชันใช้ในการทำงาน เช่น รูปภาพ คำอธิบายอินเทอร์เฟซ ตลอดจนข้อมูลอื่น ๆ
  • AndroidManifest.xml- คำอธิบายของแอปพลิเคชัน ซึ่งรวมถึงรายการสิทธิ์ที่จำเป็น เวอร์ชัน Android ที่จำเป็น และความละเอียดหน้าจอที่ต้องการ
  • คลาส.dex- รวบรวมโค้ดไบต์ของแอปพลิเคชันสำหรับเครื่องเสมือน Dalvik
  • ทรัพยากร.arsc- รวมถึงทรัพยากร แต่เป็นประเภทที่แตกต่างกัน - โดยเฉพาะสตริง (ใช่ ไฟล์นี้สามารถใช้สำหรับ Russification ได้!)

ไฟล์และไดเร็กทอรีที่อยู่ในรายการอาจอยู่ใน APK ส่วนใหญ่หากไม่ใช่ทั้งหมด อย่างไรก็ตาม มีไฟล์/ไดเร็กทอรีที่ไม่ธรรมดาอีกสองสามรายการที่ควรค่าแก่การกล่าวถึง:

  • สินทรัพย์- อะนาล็อกของทรัพยากร ข้อแตกต่างที่สำคัญคือในการเข้าถึงทรัพยากร คุณต้องทราบตัวระบุ แต่สามารถรับรายการสินทรัพย์แบบไดนามิกได้โดยใช้เมธอด AssetManager.list() ในโค้ดแอปพลิเคชัน
  • lib- ไลบรารี Linux ดั้งเดิมที่เขียนโดยใช้ NDK (Native Development Kit)

ไดเร็กทอรีนี้ถูกใช้โดยผู้ผลิตเกมที่วางเอ็นจิ้นเกมของตนเขียนด้วย C/C++ อยู่ที่นั่น เช่นเดียวกับผู้สร้างแอปพลิเคชันประสิทธิภาพสูง (เช่น Google Chrome) เราค้นพบอุปกรณ์ แต่คุณจะได้รับไฟล์แพ็คเกจของแอปพลิเคชันที่คุณสนใจได้อย่างไร เนื่องจากเป็นไปไม่ได้ที่จะรับไฟล์ APK จากอุปกรณ์ที่ไม่มีรูท (อยู่ในไดเร็กทอรี /data/app) และไม่แนะนำให้ทำการรูทเสมอไป จึงมีอย่างน้อยสามวิธีในการรับไฟล์แอปพลิเคชันไปยังคอมพิวเตอร์ของคุณ:

  • ส่วนขยาย APK Downloader สำหรับ Chrome;
  • แอป APK Leecher จริง;
  • การโฮสต์ไฟล์ต่างๆ และ Varezniks

จะใช้อันไหนเป็นเรื่องของรสนิยม เราต้องการใช้แอปพลิเคชันแยกกัน ดังนั้นเราจะอธิบายการใช้งาน Real APK Leecher โดยเฉพาะอย่างยิ่งเมื่อเขียนด้วยภาษา Java และดังนั้นจึงใช้งานได้กับ Windows หรือ Nix

หลังจากเริ่มโปรแกรม คุณจะต้องกรอกข้อมูลในสามฟิลด์: อีเมล รหัสผ่าน และรหัสอุปกรณ์ - และเลือกภาษา สองรายการแรกคืออีเมลและรหัสผ่านของบัญชี Google ที่คุณใช้บนอุปกรณ์ ตัวที่สามคือตัวระบุอุปกรณ์และสามารถรับได้โดยการพิมพ์รหัสบนตัวเรียกเลขหมาย # #8255## จากนั้นจึงค้นหาบรรทัด Device ID เมื่อกรอก คุณจะต้องป้อน ID โดยไม่ต้องใส่คำนำหน้า android

หลังจากกรอกและบันทึกแล้ว ข้อความ “ข้อผิดพลาดขณะเชื่อมต่อกับเซิร์ฟเวอร์” มักจะปรากฏขึ้น มันไม่เกี่ยวอะไรกับ Google Play ดังนั้นอย่าลังเลที่จะเพิกเฉยและมองหาแพ็คเกจที่คุณสนใจ

ดูและแก้ไข

สมมติว่าคุณพบแพ็คเกจที่คุณสนใจ ดาวน์โหลด แตกไฟล์... และเมื่อคุณพยายามดูไฟล์ XML บางไฟล์ คุณจะประหลาดใจที่พบว่าไฟล์นั้นไม่ใช่ข้อความ จะถอดรหัสมันและวิธีการทำงานกับแพ็คเกจโดยทั่วไปได้อย่างไร? จำเป็นต้องติดตั้ง SDK จริงหรือ? ไม่ ไม่จำเป็นต้องติดตั้ง SDK เลย ในความเป็นจริง ทุกขั้นตอนในการแยก แก้ไข และจัดทำแพ็คเกจ APK ต้องใช้เครื่องมือต่อไปนี้:

  • โปรแกรมเก็บ ZIPสำหรับการแกะและบรรจุ
  • สมาลี- แอสเซมเบลอร์ / แอสเซมเบลอร์เครื่องเสมือน Dalvik (code.google.com/p/smali)
  • เหมาะสม- เครื่องมือสำหรับการบรรจุทรัพยากร (โดยค่าเริ่มต้น ทรัพยากรจะถูกจัดเก็บในรูปแบบไบนารีเพื่อเพิ่มประสิทธิภาพแอปพลิเคชัน) รวมอยู่ใน Android SDK แต่สามารถรับแยกต่างหากได้
  • ผู้ลงนาม- เครื่องมือสำหรับการลงนามแบบดิจิทัลในแพ็คเกจที่แก้ไข (bit.ly/Rmrv4M)

คุณสามารถใช้เครื่องมือเหล่านี้แยกกันได้ แต่จะไม่สะดวกดังนั้นจึงควรใช้ซอฟต์แวร์ระดับสูงกว่าที่สร้างขึ้นบนพื้นฐานของเครื่องมือเหล่านี้ หากคุณทำงานบน Linux หรือ Mac OS X จะมีเครื่องมือชื่อ apktool ช่วยให้คุณสามารถแยกทรัพยากรในรูปแบบดั้งเดิม (รวมถึงไฟล์ XML ไบนารีและ arsc) สร้างแพ็คเกจใหม่ด้วยทรัพยากรที่เปลี่ยนแปลง แต่ไม่ทราบวิธีลงนามแพ็คเกจ ดังนั้นคุณจะต้องเรียกใช้ยูทิลิตี้ผู้ลงนามด้วยตนเอง แม้ว่ายูทิลิตี้นี้จะเขียนด้วยภาษา Java แต่การติดตั้งนั้นค่อนข้างไม่ได้มาตรฐาน ก่อนอื่นคุณต้องได้รับไฟล์ jar เอง:

$ ซีดี /tmp $ wget http://bit.ly/WC3OCz $ tar -xjf apktool1.5.1.tar.bz2

$ wget http://bit.ly/WRjEc7 $ tar -xjf apktool-install-linux-r05-ibot.tar.bz2

$ mv apktool.jar ~/bin $ mv apktool-install-linux-r05-ibot/* ~/bin $ ส่งออก PATH=~/bin:$PATH

หากคุณทำงานบน Windows แสดงว่ามีเครื่องมือที่ยอดเยี่ยมที่เรียกว่า Virtuous Ten Studio ซึ่งรวบรวมเครื่องมือเหล่านี้ทั้งหมด (รวมถึง apktool เอง) แต่แทนที่จะเป็นอินเทอร์เฟซ CLI จะให้อินเทอร์เฟซแบบกราฟิกที่ใช้งานง่ายแก่ผู้ใช้ซึ่งคุณสามารถทำได้ ดำเนินการเพื่อแกะกล่อง การแยกส่วน และการแยกส่วนออกด้วยการคลิกเพียงไม่กี่ครั้ง เครื่องมือนี้เป็น Donation-ware นั่นคือบางครั้งหน้าต่างปรากฏขึ้นเพื่อขอให้คุณได้รับใบอนุญาต แต่ในท้ายที่สุดก็สามารถยอมรับได้ ไม่มีประโยชน์ที่จะอธิบายเพราะคุณสามารถเข้าใจอินเทอร์เฟซได้ภายในไม่กี่นาที แต่ควรพูดคุยถึงรายละเอียดเพิ่มเติมเนื่องจากลักษณะของคอนโซล apktool


มาดูตัวเลือก apktool กัน กล่าวโดยย่อ มีคำสั่งพื้นฐานสามคำสั่ง: d (ถอดรหัส), b (สร้าง) และ if (ติดตั้งเฟรมเวิร์ก) ถ้าทุกอย่างชัดเจนด้วยสองคำสั่งแรก แล้วคำสั่งที่สามแบบมีเงื่อนไขจะทำอย่างไร? โดยจะคลายเฟรมเวิร์ก UI ที่ระบุ ซึ่งจำเป็นในกรณีที่คุณแยกแพ็คเกจระบบใดๆ

ลองดูตัวเลือกที่น่าสนใจที่สุดของคำสั่งแรก:

  • -ส- อย่าแยกไฟล์ dex;
  • -ร- อย่าแกะทรัพยากร
  • -ข- อย่าใส่ข้อมูลการดีบักลงในผลลัพธ์ของการแยกส่วนไฟล์ dex
  • --frame-เส้นทาง- ใช้เฟรมเวิร์ก UI ที่ระบุแทนเฟรมเวิร์กที่สร้างไว้ใน apktool ตอนนี้เรามาดูตัวเลือกสองสามตัวสำหรับคำสั่ง b:
  • -ฉ- บังคับประกอบโดยไม่ตรวจสอบการเปลี่ยนแปลง
  • -ก- ระบุเส้นทางไปยัง aapt (เครื่องมือสำหรับสร้างไฟล์เก็บถาวร APK) หากคุณต้องการใช้จากแหล่งอื่นด้วยเหตุผลบางประการ

การใช้ apktool นั้นง่ายมาก ในการดำเนินการนี้ เพียงระบุคำสั่งใดคำสั่งหนึ่งและเส้นทางไปยัง APK เช่น:

$ apktool และ mail.apk

หลังจากนี้ไฟล์ที่แยกและแยกส่วนของแพ็คเกจทั้งหมดจะปรากฏในไดเร็กทอรีเมล

การตระเตรียม. ปิดการใช้งานการโฆษณา

แน่นอนว่าทฤษฎีนั้นดี แต่ทำไมจึงต้องมีถ้าเราไม่รู้ว่าจะทำอย่างไรกับบรรจุภัณฑ์ที่แกะออกมาแล้ว เรามาลองใช้ทฤษฎีนี้เพื่อประโยชน์ของเรา กล่าวคือ ปรับเปลี่ยนซอฟต์แวร์บางตัวเพื่อไม่ให้แสดงโฆษณาให้เราเห็น ตัวอย่างเช่น ปล่อยให้เป็น Virtual Torch - คบเพลิงเสมือนจริง ซอฟต์แวร์นี้เหมาะสำหรับเรา เนื่องจากมีโฆษณาที่น่ารำคาญเต็มเปี่ยม และยิ่งกว่านั้น ยังเรียบง่ายพอที่จะไม่หลงไปกับโค้ดอันยุ่งเหยิง


ดังนั้นโดยใช้วิธีใดวิธีหนึ่งข้างต้น ให้ดาวน์โหลดแอปพลิเคชันจากตลาด หากคุณตัดสินใจใช้ Virtuous Ten Studio เพียงเปิดไฟล์ APK ในแอปพลิเคชันแล้วแตกไฟล์ สร้างโปรเจ็กต์ (ไฟล์ -> โปรเจ็กต์ใหม่) จากนั้นเลือกนำเข้าไฟล์ในเมนูบริบทของโปรเจ็กต์ หากตัวเลือกของคุณตกอยู่ที่ apktool ให้รันเพียงคำสั่งเดียว:

$ apktool และ com.kauf.particle.virtualtorch.apk

หลังจากนี้ แผนผังไฟล์ที่คล้ายกับที่อธิบายไว้ในส่วนก่อนหน้าจะปรากฏในไดเร็กทอรี com.kauf.particle.virtualtorch แต่มีไดเร็กทอรี smali เพิ่มเติมแทนไฟล์ dex และไฟล์ apktool.yml ไฟล์แรกประกอบด้วยโค้ดที่ถอดประกอบได้ของไฟล์ dex ที่ปฏิบัติการได้ของแอปพลิเคชัน ส่วนไฟล์ที่สองประกอบด้วยข้อมูลบริการที่จำเป็นสำหรับ apktool ในการประกอบแพ็กเกจกลับ

แน่นอนว่าที่แรกที่เราควรดูคือ AndroidManifest.xml และที่นี่เราพบบรรทัดต่อไปนี้ทันที:

เดาได้ไม่ยากว่าเป็นผู้รับผิดชอบในการให้สิทธิ์แอปพลิเคชันในการใช้การเชื่อมต่ออินเทอร์เน็ต ที่จริงแล้ว หากเราเพียงต้องการกำจัดโฆษณา เราก็มักจะต้องบล็อกแอปพลิเคชันจากอินเทอร์เน็ต เรามาลองทำสิ่งนี้กัน เราลบบรรทัดที่ระบุและพยายามสร้างซอฟต์แวร์โดยใช้ apktool:

$ apktool ข com.kauf.particle.virtualtorch

ไฟล์ APK ที่ได้จะปรากฏในไดเร็กทอรี com.kauf.particle.virtualtorch/build/ อย่างไรก็ตาม จะไม่สามารถติดตั้งได้ เนื่องจากไม่มีลายเซ็นดิจิทัลและเช็คซัมไฟล์ (เพียงแต่ไม่มีไดเรกทอรี META-INF/) เราต้องลงนามแพ็คเกจโดยใช้ยูทิลิตี้ apk-signer เปิดตัวแล้ว อินเทอร์เฟซประกอบด้วยสองแท็บ - แท็บแรก (ตัวสร้างคีย์) ที่เราสร้างคีย์ และแท็บที่สอง (APK Signer) ที่เราลงนาม หากต้องการสร้างคีย์ส่วนตัวของเรา ให้กรอกข้อมูลในช่องต่อไปนี้:

  • ไฟล์เป้าหมาย- ไฟล์เอาต์พุตที่เก็บคีย์; โดยปกติจะเก็บกุญแจไว้หนึ่งคู่
  • รหัสผ่านและ ยืนยัน- รหัสผ่านสำหรับจัดเก็บข้อมูล
  • นามแฝง- ชื่อของกุญแจในการจัดเก็บ
  • รหัสผ่านนามแฝงและ ยืนยัน- รหัสผ่านรหัสลับ;
  • ความถูกต้อง- ระยะเวลามีผล (เป็นปี) ค่าเริ่มต้นจะเหมาะสมที่สุด

โดยทั่วไปช่องที่เหลือจะเป็นตัวเลือก - แต่ต้องกรอกอย่างน้อยหนึ่งช่อง


คำเตือน

หากต้องการลงนามแอปพลิเคชันโดยใช้ apk-signer คุณต้องติดตั้ง Android SDK และระบุเส้นทางแบบเต็มในการตั้งค่าแอปพลิเคชัน

ข้อมูลทั้งหมดมีไว้เพื่อวัตถุประสงค์ในการให้ข้อมูลเท่านั้น ทั้งบรรณาธิการและผู้เขียนจะไม่รับผิดชอบต่อความเสียหายใด ๆ ที่อาจเกิดขึ้นจากเนื้อหาในบทความนี้

ตอนนี้คุณสามารถลงนาม APK ด้วยคีย์นี้ได้แล้ว บนแท็บ APK Signer ให้เลือกไฟล์ที่สร้างขึ้นใหม่ ป้อนรหัสผ่าน นามแฝงคีย์ และรหัสผ่าน จากนั้นค้นหาไฟล์ APK แล้วคลิกปุ่ม "ลงชื่อ" อย่างกล้าหาญ หากทุกอย่างเป็นไปด้วยดีจะมีการลงนามแพ็คเกจ

ข้อมูล

เนื่องจากเราลงนามแพ็คเกจด้วยคีย์ของเราเอง มันจะขัดแย้งกับแอปพลิเคชันดั้งเดิม ซึ่งหมายความว่าเมื่อเราพยายามอัปเดตซอฟต์แวร์ผ่านตลาด เราจะได้รับข้อผิดพลาด

ลายเซ็นดิจิทัลจำเป็นสำหรับซอฟต์แวร์ของบริษัทอื่นเท่านั้น ดังนั้น หากคุณกำลังแก้ไขแอปพลิเคชันระบบที่ติดตั้งโดยการคัดลอกไปยังไดเร็กทอรี /system/app/ คุณไม่จำเป็นต้องเซ็นลายเซ็นเหล่านั้น

หลังจากนั้น ดาวน์โหลดแพ็คเกจลงในสมาร์ทโฟนของคุณ ติดตั้งและเปิดใช้งาน Voila โฆษณาหายไป! แต่มีข้อความปรากฏว่าเราไม่มีอินเทอร์เน็ตหรือไม่มีสิทธิ์ที่เหมาะสม ตามทฤษฎีแล้ว นี่อาจเพียงพอแล้ว แต่ข้อความดูน่ารำคาญ และบอกตามตรงว่าเราโชคดีกับแอปพลิเคชันโง่ๆ ซอฟต์แวร์ที่เขียนขึ้นตามปกติมักจะชี้แจงข้อมูลประจำตัวของตนให้ชัดเจนหรือตรวจสอบการเชื่อมต่ออินเทอร์เน็ต มิฉะนั้นก็เพียงปฏิเสธที่จะเปิดตัว ในกรณีนี้จะเป็นอย่างไร? แน่นอนแก้ไขโค้ด

โดยทั่วไปแล้ว ผู้เขียนแอปพลิเคชันจะสร้างคลาสพิเศษสำหรับการแสดงโฆษณาและวิธีการเรียกใช้คลาสเหล่านี้เมื่อแอปพลิเคชันหรือ "กิจกรรม" อย่างใดอย่างหนึ่ง (กล่าวง่ายๆ คือ หน้าจอแอปพลิเคชัน) เปิดตัว ลองหาคลาสเหล่านี้ดู เราไปที่ไดเร็กทอรี smali จากนั้น com (org มีเฉพาะไลบรารีกราฟิกแบบเปิด cocos2d) จากนั้น kauf (นี่คือที่ที่มันอยู่เพราะนี่คือชื่อของนักพัฒนาและโค้ดทั้งหมดของเขาอยู่ที่นั่น) - และนี่คือ ไดเร็กทอรีการตลาด ข้างในเราจะพบไฟล์จำนวนหนึ่งที่มีนามสกุล smali เหล่านี้เป็นคลาสและคลาสที่โดดเด่นที่สุดคือคลาส Ad.smali จากชื่อที่ง่ายต่อการเดาว่าเป็นคลาสที่แสดงโฆษณา

เราสามารถเปลี่ยนตรรกะของการดำเนินการได้ แต่จะง่ายกว่ามากในการลบการเรียกไปยังวิธีการใด ๆ ออกจากแอปพลิเคชันเอง ดังนั้นเราจึงออกจากไดเร็กทอรีการตลาดและไปที่ไดเร็กทอรีอนุภาคที่อยู่ติดกัน จากนั้นจึงไปที่ virtualtorch ไฟล์ MainActivity.smali สมควรได้รับความสนใจเป็นพิเศษที่นี่ นี่คือคลาส Android มาตรฐานที่สร้างโดย Android SDK และติดตั้งเป็นจุดเริ่มต้นในแอปพลิเคชัน (คล้ายกับฟังก์ชันหลักใน C) เปิดไฟล์เพื่อแก้ไข

ข้างในมีรหัส smali (ผู้ประกอบท้องถิ่น) มันค่อนข้างน่าสับสนและอ่านยากเนื่องจากมีลักษณะเป็นระดับต่ำ ดังนั้นเราจะไม่ศึกษามัน แต่จะค้นหาการอ้างอิงถึงคลาสโฆษณาทั้งหมดในโค้ดและแสดงความคิดเห็น เราป้อนบรรทัด "โฆษณา" ในการค้นหาและไปที่บรรทัดที่ 25:

โฆษณาส่วนตัวของฟิลด์:Lcom/kauf/marketing/Ad;

ที่นี่ฟิลด์โฆษณาถูกสร้างขึ้นเพื่อจัดเก็บออบเจ็กต์คลาสโฆษณา เราแสดงความคิดเห็นโดยติดเครื่องหมาย ### ไว้หน้าบรรทัด เราทำการค้นหาต่อไป บรรทัด 423:

อินสแตนซ์ใหม่ v3, Lcom/kauf/marketing/Ad;

นี่คือจุดที่การสร้างวัตถุเกิดขึ้น มาแสดงความคิดเห็นกัน เราทำการค้นหาต่อไปและค้นหาในบรรทัด 433, 435, 466, 468, 738, 740, 800 และ 802 การเรียกไปยังเมธอดของคลาสโฆษณา มาแสดงความคิดเห็นกัน ดูเป็นอันนั้นแหละ.. บันทึก. ตอนนี้จำเป็นต้องประกอบแพ็คเกจกลับเข้าด้วยกันและตรวจสอบการทำงานและการมีโฆษณา เพื่อความบริสุทธิ์ของการทดสอบ เราจะส่งคืนบรรทัดที่ลบออกจาก AndroidManifest.xml ประกอบแพ็กเกจ ลงนาม และติดตั้ง

หนูตะเภาของเรา โฆษณาที่มองเห็นได้

อ๊ะ! โฆษณาหายไปเฉพาะในขณะที่แอปพลิเคชันทำงาน แต่ยังคงอยู่ในเมนูหลัก ซึ่งเราจะเห็นเมื่อเราเปิดตัวซอฟต์แวร์ ดังนั้นเดี๋ยวก่อน แต่จุดเริ่มต้นคือคลาส MainActivity และโฆษณาหายไปในขณะที่แอปพลิเคชันกำลังทำงาน แต่ยังคงอยู่ในเมนูหลัก ดังนั้นจุดเริ่มต้นจึงแตกต่างออกไป หากต้องการระบุจุดเริ่มต้นที่แท้จริง ให้เปิดไฟล์ AndroidManifest.xml อีกครั้ง และใช่ มันมีบรรทัดต่อไปนี้:

พวกเขาบอกเรา (และที่สำคัญกว่านั้นคือ android) ว่ากิจกรรมชื่อ Start ควรเปิดตัวเพื่อตอบสนองต่อการสร้างเจตนา (เหตุการณ์) android.intent.action.MAIN จากหมวดหมู่ android.intent.category.LAUNCHER เหตุการณ์นี้สร้างขึ้นเมื่อคุณแตะที่ไอคอนแอปพลิเคชันในตัวเรียกใช้งาน ดังนั้นจึงกำหนดจุดเริ่มต้น ซึ่งก็คือคลาสเริ่มต้น เป็นไปได้มากที่โปรแกรมเมอร์จะเขียนแอปพลิเคชันโดยไม่มีเมนูหลักซึ่งเป็นจุดเริ่มต้นซึ่งเป็นคลาส MainActivity มาตรฐานจากนั้นจึงเพิ่มหน้าต่างใหม่ (กิจกรรม) ที่มีเมนูและอธิบายไว้ในคลาส Start และทำให้เป็นรายการด้วยตนเอง จุด.

เปิดไฟล์ Start.smali และมองหาบรรทัด "โฆษณา" อีกครั้ง เราพบการกล่าวถึงคลาส FirstAd ในบรรทัดที่ 153 และ 155 นอกจากนี้ยังอยู่ในซอร์สโค้ดและเมื่อพิจารณาจากชื่อแล้วจะมีหน้าที่แสดงโฆษณาบนหน้าจอหลัก ลองดูเพิ่มเติม มีการสร้างอินสแตนซ์ของคลาส FirstAd และเจตนาที่เกี่ยวข้องกับอินสแตนซ์นี้ตามบริบท ตามด้วยป้ายกำกับ con_10 ซึ่งเป็นการเปลี่ยนแปลงแบบมีเงื่อนไขซึ่งดำเนินการก่อนสร้างอินสแตนซ์ทุกประการ ของชั้นเรียน:

If-ne p1, v0, :cond_10 .line 74 อินสแตนซ์ใหม่ v0, Landroid/เนื้อหา/เจตนา; ... :cond_10

เป็นไปได้มากว่าโปรแกรมจะสุ่มคำนวณว่าควรแสดงโฆษณาบนหน้าจอหลักหรือไม่ และหากไม่เป็นเช่นนั้น ให้ข้ามไปที่ cond_10 โดยตรง ตกลง มาทำให้งานของเธอง่ายขึ้นและแทนที่การเปลี่ยนแปลงแบบมีเงื่อนไขด้วยการเปลี่ยนแบบไม่มีเงื่อนไข:

#if-ne p1, v0, :cond_10 ไปที่:cond_10

ไม่มีการกล่าวถึง FirstAd ในโค้ดอีกต่อไป ดังนั้นเราจึงปิดไฟล์และประกอบคบเพลิงเสมือนของเราอีกครั้งโดยใช้ apktool คัดลอกไปยังสมาร์ทโฟนของคุณ ติดตั้ง และเปิดใช้งาน Voila โฆษณาทั้งหมดหายไปแล้ว เราขอแสดงความยินดีกับพวกเราทุกคน

ผลลัพธ์

บทความนี้เป็นเพียงการแนะนำสั้น ๆ เกี่ยวกับวิธีการแฮ็กและแก้ไขแอปพลิเคชัน Android ปัญหาหลายประการยังคงอยู่เบื้องหลัง เช่น การลบการป้องกัน การแยกวิเคราะห์โค้ดที่สับสน การแปลและการแทนที่ทรัพยากรแอปพลิเคชัน รวมถึงการแก้ไขแอปพลิเคชันที่เขียนโดยใช้ Android NDK อย่างไรก็ตาม ด้วยความรู้พื้นฐานแล้ว มันก็แค่เรื่องของเวลาที่จะคิดออกทั้งหมด

หลายๆคนรู้ว่ากระบวนการติดตั้งแอปพลิเคชัน Android นั้นง่ายมาก - คุณเปิดตลาด Google Play ค้นหาโปรแกรมหรือเกมที่ต้องการคลิกที่ปุ่ม "ติดตั้ง" ขนาดใหญ่ เท่านี้ก็เรียบร้อย อย่างไรก็ตาม แอปพลิเคชัน Android มาในรูปแบบแพ็คเกจที่ติดตั้งด้วยตนเองเช่นกัน แพ็คเกจเหล่านี้มีนามสกุล “.apk” และมีการใช้งานจริงมากมาย ตัวอย่างเช่น คุณสามารถสำรองข้อมูลแอปที่จัดเก็บเป็นไฟล์ APK ได้อย่างง่ายดาย สิ่งนี้จะช่วยคุณได้หากจู่ๆ แอปพลิเคชันหรือเกมหายไปจาก Google Play เช่นเดียวกับที่เกิดขึ้นกับ Flappy Bird หากต้องการทุกคนสามารถดาวน์โหลดแอปพลิเคชันและติดตั้งลงในสมาร์ทโฟนของตนได้ นอกจากนี้ยังสะดวกในการติดตั้งไฟล์ APK บนอุปกรณ์ที่ถูกจำกัดโดยผู้ผลิต (Amazon Kindle Fire หรือ Nokia X)

อย่างไรก็ตาม คุณจะแยกไฟล์ APK ที่ติดตั้งไว้ได้อย่างไร คุณสามารถค้นหาแอปพลิเคชันบนอินเทอร์เน็ต ดาวน์โหลด และติดตั้งบนอุปกรณ์ Android ของคุณได้อย่างง่ายดาย วิธีนี้ใช้งานได้ดีกับแอปฟรี สิ่งที่ต้องชำระเงินได้รับการปกป้องจากการดาวน์โหลดด้วยเหตุผลที่ชัดเจน นอกจากนี้ แอปพลิเคชันที่ดาวน์โหลดไฟล์เพิ่มเติมหลังจากติดตั้งแล้วควรทำงานได้ดี

  • 1. บนอุปกรณ์ Android ของคุณ Google Play และดาวน์โหลดแอปที่คุณต้องการแยก
  • 2. ดาวน์โหลดแอป APK Extractor แอปพลิเคชั่นนี้ฟรีและใช้งานง่าย
  • 3. เปิดแอป APK Extractor และเลือกแอปใดๆ ที่คุณต้องการแยก คุณสามารถทำเครื่องหมายหลายแอปพลิเคชันพร้อมกันได้ ไฟล์ APK จะถูกบันทึกในโฟลเดอร์ ExtractedApks ในหน่วยความจำอุปกรณ์

ไฟล์ APK ที่แยกออกมาสามารถคัดลอกไปยังสมาร์ทโฟนหรือแท็บเล็ต Android เครื่องอื่นได้แล้ว และติดตั้งโดยใช้ตัวจัดการไฟล์ใดก็ได้ เช่น Astro หรือ ES File Explorer

สวัสดีผู้อ่านเว็บไซต์ของเรา วันหนึ่งผู้เยี่ยมชมคนหนึ่งขอความช่วยเหลือ เขาจำเป็นต้องแตกไฟล์ APK จากสมาร์ทโฟน Android ดังนั้นเราจึงตัดสินใจอธิบายคำตอบสำหรับคำถามนี้ในบทความนี้ เมื่อใช้การดำเนินการนี้ คุณสามารถสำรองข้อมูลแอปพลิเคชันที่ติดตั้งทั้งหมดบนสมาร์ทโฟน แท็บเล็ต หรืออุปกรณ์อื่นๆ ที่ใช้ระบบปฏิบัติการ Android

แอปพลิเคชันที่ติดตั้งจะได้รับการสำรองข้อมูลในกรณีใด

สถานการณ์ที่หนึ่งคุณต้องรีเซ็ตโทรศัพท์ของคุณเป็นการตั้งค่าจากโรงงาน แต่ไม่มีการเข้าถึงอินเทอร์เน็ตหรือการเข้าถึงผ่านมือถือเท่านั้น คุณไม่ต้องการดาวน์โหลดแอปจาก Google Play อีกครั้งเพราะจะใช้เวลานาน ในกรณีเช่นนี้ เป็นไปได้ที่จะแยกไฟล์ APK จากอุปกรณ์ Android หรือ .

สถานการณ์ที่สองคุณมีเกมที่น่าตื่นเต้นติดตั้งอยู่ แคชที่ "มีน้ำหนัก" มาก และเพื่อนของคุณชอบมัน และเขาต้องการของเล่นชิ้นเดียวกัน แต่อีกครั้ง ไม่มีการเข้าถึงอินเทอร์เน็ต ที่นี่คุณจะต้องทำการจองเกมที่ติดตั้งไว้ คำแนะนำในการติดตั้งเกมด้วยแคชอย่างถูกต้องมีอยู่ที่นี่

มีสถานการณ์เช่นนี้มากมาย

จะแตกไฟล์ APK จากอุปกรณ์ Android ได้อย่างไร?

เพื่อให้งานนี้สำเร็จ เราจะต้องมีแอปพลิเคชัน ES Explorer ฟรี ซึ่งสามารถพบได้บน Google Play ทำไมตัวนำนี้โดยเฉพาะ? เรียบง่าย เป็นเครื่องมือจัดการไฟล์ที่ยอดเยี่ยมและใช้งานง่าย อีกทั้งยังมีฟีเจอร์การสำรองข้อมูลแอปพลิเคชันที่ผสานรวมอยู่แล้วด้วย เมื่อใช้ฟังก์ชันนี้ คุณสามารถแตกไฟล์ APK ที่ต้องการจากอุปกรณ์ Android ได้

วิธีที่ 1คุณได้ติดตั้ง “ES Explorer” แล้ว เรามาเริ่มกันเลย:

ภาพที่ 1

ไปที่เมนูแอปพลิเคชันเพื่อทำสิ่งนี้กดปุ่มที่เราระบุไว้ที่มุมซ้ายบนของหน้าจออุปกรณ์ ขยายส่วน "ไลบรารี" แล้วคลิกแอป

รูปที่ 2

หากคุณทำทุกอย่างถูกต้อง หน้าต่างที่มีแอปพลิเคชันผู้ใช้ที่ติดตั้งไว้จะเปิดขึ้นต่อหน้าคุณ จากนั้นเลือกแอปพลิเคชันที่คุณต้องการแยกแล้วกดปุ่ม จอง ที่ด้านล่างของหน้าจอ


รูปที่ 3 รูปที่ 4

แอปพลิเคชันที่แตกออกมาทั้งหมดจะอยู่ในโฟลเดอร์ « หน่วยความจำโทรศัพท์/ข้อมูลสำรอง/แอพ" คุณอาจสังเกตเห็นว่าในรูปที่ 3 และ 4 ไฟล์บางไฟล์ถูกเน้นด้วยสีแดงหรือสีเขียว ดังนั้น ไปเลย: แอปพลิเคชันที่เคยสำรองข้อมูลไว้ก่อนหน้านี้และอยู่ในโฟลเดอร์จะถูกทำเครื่องหมายด้วยสีเขียว แอพ และสีแดง - แอปพลิเคชันที่ถูกแยกออกมาก่อนหน้านี้ แต่ถูกลบออกจากโฟลเดอร์ แอพ (เฉพาะไฟล์ที่แยกออกมาเท่านั้นที่จะถูกลบ ไม่ใช่ไฟล์ที่ติดตั้ง) โดยพื้นฐานแล้วก็แค่ทำการสกัดโดยใช้วิธีนี้

รูปที่ 5

ตอนนี้คุณสามารถทำอะไรก็ได้ที่คุณต้องการด้วยไฟล์เหล่านี้: ดาวน์โหลดลงในคอมพิวเตอร์ของคุณ ส่งให้เพื่อนผ่านบลูทูธหรืออีเมล เราขอเตือนคุณอีกครั้งว่าวิธีนี้จะสำรองข้อมูลแอปพลิเคชันที่ผู้ใช้ติดตั้งเท่านั้น แต่ไม่ใช่แอปพลิเคชันของระบบ หากต้องการสำรองข้อมูลแอปพลิเคชันระบบ ให้ใช้วิธีที่ 2

วิธีที่ 2เราเปิดตัว “ES Explorer” เดียวกัน ที่ด้านบนของหน้าจอมีส่วนหน่วยความจำให้เลือก (รูปที่ 6) หรือไปที่เมนู "ที่เก็บข้อมูลในเครื่อง" (รูปที่ 7) และเลือกรายการ /อุปกรณ์ .


รูปที่ 6 รูปที่ 7

ต่อไปคุณต้องไป ระบบ/แอป - นี่คือแอปพลิเคชันทั้งหมดที่ติดตั้งบนอุปกรณ์: ทั้งผู้ใช้และระบบ จากนั้นเราค้นหาไฟล์ APK ที่ต้องการและคัดลอกไปยังโฟลเดอร์ที่ต้องการ ดังนั้นคุณจะได้รับไฟล์ APK สำเร็จรูปสำหรับติดตั้งบนอุปกรณ์อื่น

คำเตือน! สำหรับทั้งสองวิธีคุณอาจต้อง ค่อนข้างเป็นไปได้ที่ไฟล์ APK ของระบบที่แยกออกมาบางไฟล์อาจไม่ติดตั้งบนอุปกรณ์ Android อื่น ๆ เนื่องจากได้รับการออกแบบมาสำหรับเฟิร์มแวร์เฉพาะ

นั่นคือทั้งหมดที่

เราหวังว่าโพสต์นี้จะช่วยแก้ปัญหาได้ และคุณสามารถแยกไฟล์ APK จากอุปกรณ์ Android ของคุณได้ หากคุณทราบวิธีอื่นในการจองโปรแกรมหรือมีคำถามที่คล้ายกัน โปรดเขียนถึงเรา

คอยติดตามยังมีสิ่งที่น่าสนใจมากมายรออยู่ข้างหน้า

ผู้ใช้ Android หลายคนรู้ว่าเมื่อใช้แอปพลิเคชัน Titanium Backup คุณสามารถแยกแอปพลิเคชันออกจากอุปกรณ์เป็นไฟล์ APK ได้ วันนี้เราจะดูวิธีการที่คุณสามารถดึงไฟล์ apk ของแอปพลิเคชันได้โดยตรงจาก Google Play Store

ข้อดีของวิธีนี้คือไม่จำเป็นต้องติดตั้งแอปพลิเคชันบนอุปกรณ์ก่อน น่าเสียดายที่วิธีนี้ใช้ได้กับแอปพลิเคชันฟรีเท่านั้น ดังนั้นสิ่งที่เราต้องการ:

1. กูเกิลโครม

สร้างทางลัดที่สองสำหรับ Google Chrome บนเดสก์ท็อปของคุณ

คลิกขวาที่ทางลัดแล้วเลือก "คุณสมบัติ" ในช่อง "Object" ให้เพิ่มคำสั่งต่อไปนี้โดยคั่นด้วยช่องว่าง:

ละเว้นข้อผิดพลาดใบรับรอง

อนุญาตการทำงานที่ไม่ปลอดภัยเนื้อหา

มันจะมีลักษณะดังนี้:

...\chrome.exe" --ignore-certificate-errors --allow-running-insecure-content

คลิก "ใช้" และ "ตกลง"

หลังจากการดำเนินการนี้ คุณจะต้องรีสตาร์ทเบราว์เซอร์ โดยปิดอินสแตนซ์ที่กำลังทำงานอยู่ทั้งหมดของแอปพลิเคชัน

2. ชื่อบัญชี Google และรหัสอุปกรณ์

ที่จริงแล้ว เราจะจำลองการดาวน์โหลดแอปพลิเคชันลงในอุปกรณ์ ดังนั้นคุณจำเป็นต้องทราบชื่อบัญชีของคุณ ซึ่งก็คือชื่อกล่องจดหมาย Google ของคุณ รวมถึงหมายเลขประจำตัวของอุปกรณ์ Android ของคุณ

ทุกอย่างชัดเจนพร้อมกล่อง แต่หากต้องการค้นหา ID อุปกรณ์ ให้เปิดแป้นหมุนบนสมาร์ทโฟนของคุณแล้วกด *#*#8255#*#*

บนหน้าจอที่ปรากฏขึ้น คุณจะต้องค้นหาบรรทัด “รหัสอุปกรณ์:”

หมายเลข ID คือการรวมกันของตัวอักษรและตัวเลขที่ตามหลัง "android-" ตัวอย่างเช่น หากในบรรทัดคุณเห็น “รหัสอุปกรณ์: android-1122aa33bb445577” แสดงว่าตัวระบุคือชุดค่าผสม “1122aa33bb445577” เขียนชุดค่าผสมนี้

หากคุณไม่พบ Device ID ของคุณด้วยวิธีข้างต้นด้วยเหตุผลบางประการ คุณสามารถดาวน์โหลดแอปพลิเคชัน Device ID จาก Google Play Store ได้

3. เครื่องมือดาวน์โหลด APK

ดาวน์โหลดส่วนขยายเบราว์เซอร์ชื่อ APK Downloader

ในหน้าต่างที่ปรากฏขึ้น ให้ป้อนที่อยู่บัญชี Google ของเรา ซึ่งก็คือที่อยู่อีเมล รหัสผ่าน (ใช่แล้ว น่ากลัว) รวมถึงรหัสอุปกรณ์ด้วย หลังจากนั้นคลิก “เข้าสู่ระบบ”

ในหน้าต่างถัดไป เลือกประเทศและผู้ให้บริการมือถือของคุณ จากนั้นคลิก "บันทึกการตั้งค่า" ถัดไป หน้าต่างควรปรากฏขึ้นเพื่อระบุว่าเปิดใช้งานส่วนขยายสำเร็จแล้ว

4. Google Play สโตร์

ตอนนี้ไปที่ Google Play Store ที่เราชื่นชอบแล้วเลือกแอปพลิเคชันฟรี หัวสีเขียวที่มีลักษณะเฉพาะพร้อมลูกศรจะปรากฏที่ด้านขวาของแถบที่อยู่ของเบราว์เซอร์

คลิกที่ไอคอนนี้ และแอปพลิเคชันจะถูกดาวน์โหลดลงในคอมพิวเตอร์ของคุณในรูปแบบไฟล์ APK เรียบร้อยแล้ว โดยพื้นฐานแล้ว ตอนนี้เรารู้วิธีสร้างการแจกจ่ายแอปพลิเคชันฟรีแบบสแตนด์อโลนแล้ว

ไม่สามารถตรวจสอบความถูกต้องสมบูรณ์ของผู้พัฒนาส่วนขยาย APK Downloader ได้ ดังนั้นให้ป้อนข้อมูลบัญชีของคุณด้วยความเสี่ยงและอันตรายเอง นอกจากนี้ โดยหลักการแล้ว การกระทำดังกล่าวถือเป็นการละเมิดกฎการใช้งาน Google Play Store