บางครั้งแอปพลิเคชั่นบางตัวบน 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 อย่างไรก็ตาม ด้วยความรู้พื้นฐานแล้ว มันก็แค่เรื่องของเวลาที่จะคิดออกทั้งหมด
ตามกฎแล้ว โปรแกรมและเกมส่วนใหญ่จะมีรหัสมาตรฐานเมื่อโต้ตอบกับ Google Market อย่างไรก็ตาม บ่อยครั้งที่เครื่องมือโปรแกรมได้รับการปกป้องอย่างดีจากการเปลี่ยนแปลง เพื่อไม่ให้สับสนและไม่เสียเวลาฉันพบโปรแกรมที่ยอดเยี่ยมชื่อ Lucky Patcher ซึ่งฉันจะพูดถึงการใช้งานโดยละเอียดด้านล่าง
แอป Lucky Patcher จะสแกนอุปกรณ์ของคุณเพื่อหาโปรแกรมทั้งหมดที่คุณติดตั้ง ถัดไป ทำการเรียงลำดับความเป็นไปได้หรือความเป็นไปไม่ได้ของแพตช์ จากนั้นแอปพลิเคชันที่แพตช์มีประโยชน์มากที่สุดจะแสดงขึ้น และข้อมูลจะแสดงที่ด้านบนของรายการ จากนั้นคุณสามารถนำแพทช์นี้ไปใช้กับโปรแกรมที่ต้องการได้ หากสำเร็จคุณจะได้รับใบสมัครที่ลงทะเบียนครบถ้วน
ใน Lucky Patcher เวอร์ชันใหม่กว่า คุณสามารถบล็อกแบนเนอร์และโฆษณาที่น่ารำคาญได้ ก่อนที่จะใช้โปรแกรมแก้ไข ขอแนะนำให้สำรองข้อมูลแอปพลิเคชันก่อน
คำแนะนำ: วิธีใช้ Lucky Patcher
- ติดตั้งโปรแกรมหรือเกมที่คุณต้องการ
- ติดตั้ง Lucky Patcher เอง
- เปิด Lucky Patcher จากนั้นกดปุ่มบนแอปที่คุณต้องการค้างไว้ จากนั้นเลือก Lucky Market Google Patch (หรือ "ทำลิขสิทธิ์") - รายการเมนูด้านบน
- หลังจากเสร็จสิ้นกระบวนการเรียบร้อยแล้วคุณสามารถเล่นได้ อย่างไรก็ตาม เป็นเรื่องที่ควรค่าแก่การระลึกว่าการใช้ Lucky Patcher มักจะช่วยให้คุณสามารถเปิดแอปพลิเคชันโดยไม่ต้องเชื่อมต่อกับเครือข่ายหลังการใช้งาน แม้ว่านักพัฒนาจะห้ามในตอนแรกก็ตาม!
ดังที่คุณเห็นโดยทั่วไปแล้ว การใช้ Lucky Patcher นั้นเรียบง่าย แต่การทราบรายละเอียดและแผนปฏิบัติการบางอย่างในบางสถานการณ์ก็ไม่เสียหาย
ประการแรก หากไม่สามารถค้นหาและลบใบอนุญาตได้โดยอัตโนมัติ คุณสามารถลองทำด้วยตนเองได้
เมื่อเปิดโหมดแมนนวล Lucky Patcher จะตรวจจับวัตถุทั้งหมดที่คล้ายกับใบอนุญาต (การควบคุมการกดแป้นพิมพ์ ตารางสี ความละเอียด ฯลฯ) ในรายการที่ปรากฏขึ้น คุณจะต้องค้นหารหัสใบอนุญาตที่ถูกต้อง สิ่งนี้ทำได้โดยใช้กำลังดุร้ายอย่างง่าย: ขั้นแรกเลือกวัตถุแรกแล้วคลิกปุ่ม "แพทช์" เมื่อกระบวนการเสร็จสิ้น ให้ลองเปิดแอปพลิเคชันโดยใช้ "เรียกใช้"
การใช้โปรแกรม Lucky Patcher ไม่ใช่เรื่องยาก คุณเพียงแค่ต้องทำตามคำแนะนำสองสามครั้งและเรียนรู้คุณสมบัติพื้นฐาน
หากคุณเดาไม่ถูก - เช่น หากไม่ได้ผลให้คลิก "กู้คืน" - และทุกอย่างจะกลับสู่สถานะเดิมโดยไม่มีปัญหาใด ๆ หลังจากนั้นเราจะทำซ้ำขั้นตอนกับวัตถุถัดไปและต่อไปเรื่อย ๆ จนกว่าเราจะประสบความสำเร็จ
นอกจากนี้ยังมีแนวคิดเช่น แพทช์ที่กำหนดเอง- แพตช์เฉพาะสำหรับแอปพลิเคชันเฉพาะที่สามารถเปลี่ยนแปลงอะไรก็ได้ ตั้งอยู่ในโฟลเดอร์ /sdcard/Luckypatcher/ ซึ่งเป็นไฟล์ที่มีนามสกุล .txt หากต้องการใช้แพตช์ดังกล่าว คุณเพียงแค่ต้องดาวน์โหลดไฟล์ข้อความและคัดลอกไปยังโฟลเดอร์ ครั้งต่อไปที่คุณเปิด Lucky Patcher แอปพลิเคชั่นจะถูกทำเครื่องหมายด้วยสีเหลือง และหากต้องการใช้ Custom Patch คุณเพียงแค่คลิกที่ “Patch for this program!”
โดยสรุปฉันจะพูดถึงฟังก์ชั่น แก้ไขเมื่อรีบูต- ฟังก์ชันนี้ได้รับการออกแบบมาเพื่อให้คุณสามารถเพิ่มแพตช์เฉพาะลงใน BootList ได้ จำเป็นเมื่อด้วยเหตุผลบางประการ "การแก้ไขการเปลี่ยนแปลง" ไม่ทำงานและคุณไม่สามารถบันทึกตำแหน่งของแพตช์ได้ (ความจริงก็คือว่าแพตช์พยายามเปลี่ยนไลบรารี) เพื่อป้องกันไม่ให้สิ่งนี้เกิดขึ้น คุณต้องคลิก “แพตช์เมื่อรีบูต” และเลือกแพตช์ที่กำหนดเอง ซึ่งจะทำให้ไลบรารีของคุณสามารถแพตช์ทุกครั้งที่อุปกรณ์เริ่มทำงาน หากวิธีนี้ใช้ไม่ได้ผล คุณสามารถเพิ่มแพตช์ลงในแอปพลิเคชันที่มีโฆษณาและใบอนุญาตที่ถูกลบออกได้
Lucky Patcher เป็นตัวแก้ไขแอปพลิเคชันที่ให้คุณได้รับคุณสมบัติเพิ่มเติมในเกมและแอปพลิเคชัน Android เช่น: คุณสามารถปิดการตรวจสอบใบอนุญาต ซื้อได้ฟรีจากร้านค้าในเกม และแม้กระทั่งบล็อกโฆษณา นอกจากนี้ ยังมีแพตช์แบบกำหนดเองซึ่งส่งผลดีต่อการทำงานของแอปพลิเคชันและเปิดฟีเจอร์ที่ถูกบล็อก
ฟังก์ชันยอดนิยมและการใช้งานมีคำอธิบายอยู่ด้านล่าง หากหลังจากอ่านแล้วคุณไม่สามารถรับมือกับปัญหาของคุณได้อธิบายโดยละเอียดในความคิดเห็นเราจะแนะนำและเสริมคำแนะนำให้กับคุณ :)
เพื่อให้ฟังก์ชันส่วนใหญ่ทำงานได้ คุณจะต้องมี:
- ติดตั้งแล้ว
วิธีปิดการใช้งานการแจ้งเตือนจาก Play Store เกี่ยวกับความจำเป็นในการลบ Lucky Patcher
ตามกฎแล้วร้านค้าแอปพลิเคชัน Play Store ระบุว่า Lucky Patcher เป็นไวรัส หลังจากนั้นข้อความที่ไม่สามารถปิดได้จะปรากฏขึ้นในหน้าต่างการแจ้งเตือน: “ถอนการติดตั้งแอปพลิเคชันที่เป็นอันตราย แอปพลิเคชัน Lucky Patcher อาจรบกวนการทำงานของอุปกรณ์” เพื่อกำจัดการแจ้งเตือนที่น่ารำคาญนี้ คุณต้องทำตามขั้นตอนง่ายๆ ไม่กี่ขั้นตอน
คำแนะนำเหล่านี้จะมีประโยชน์เท่าเทียมกันสำหรับทั้งผู้ที่ต้องการกำจัดข้อความที่น่ารำคาญและผู้ที่ไม่สามารถติดตั้ง Lucky Patcher บนอุปกรณ์ของตนเนื่องจาก Play Store
คำแนะนำวิดีโอ
- เปิด Play Store – คลิกที่เมนู (มุมซ้ายบน) – เลือก Play Protection – ยกเลิกการเลือกตัวเลือก “ตรวจสอบภัยคุกคามความปลอดภัย” แล้วคลิก “ตกลง”
- หากคุณเห็นข้อความในแถบการแจ้งเตือนเช่นเดียวกับในภาพหน้าจอด้านล่างคุณควรลบข้อมูล Play Store ทั้งหมดซึ่งคุณควรดำเนินการดังต่อไปนี้: ไปที่ "การตั้งค่า" - เปิด "แอปพลิเคชัน" - ในรายการแอปพลิเคชันที่ติดตั้ง ค้นหา Google Play Store แล้วคลิกที่มัน – เลือก “ลบข้อมูล” จากนั้นคลิก “ตกลง” ข้อความจะหายไปและคุณสามารถใช้ Lucky Patcher ได้อย่างปลอดภัย
การลบการตรวจสอบใบอนุญาตในแอปพลิเคชัน
การตรวจสอบใบอนุญาต - ตามค่าเริ่มต้น ซึ่งมีอยู่ในเกมและแอปพลิเคชันแบบชำระเงินทั้งหมด การตรวจสอบนี้จะตรวจสอบว่าคุณได้ซื้อแอปพลิเคชันนั้นหรือไม่ หากคุณพยายามติดตั้งเกมหรือโปรแกรมที่ต้องชำระเงินโดยไม่ตรวจสอบ คุณจะพบข้อผิดพลาดแจ้งว่าดาวน์โหลดแอปพลิเคชันจากตลาด Lucky patcher สามารถลบการตรวจสอบนี้ออกได้ เพื่อให้คุณสามารถติดตั้งแอปพลิเคชันที่ต้องการได้อย่างง่ายดาย
การปิดกั้นโฆษณา
การโฆษณาที่ล่วงล้ำในเกมและแอพพลิเคชั่นนั้นน่ารำคาญมากและบางครั้งก็รบกวนการเล่นเกมปกติด้วย ในสถานการณ์เช่นนี้ ทางออกเดียวที่แน่นอนคือการบล็อกโฆษณา! โชคดีที่ Lucky Patcher สามารถลบโฆษณาได้ (แต่ก็ยังมี) โดยใช้อัลกอริธึมหลายอย่าง และคำแนะนำอยู่ด้านล่าง:
คำแนะนำวิดีโอ
ซื้อฟรีในร้านค้าในเกม
Lucky patcher ทำงานได้อย่างมหัศจรรย์ มันจะช่วยให้คุณซื้อสินค้าได้ฟรีในร้านค้าในเกม นั่นคือคุณจะได้รับเหรียญจำนวนมากหรือแม้แต่ทำให้ไม่มีที่สิ้นสุด ซื้อเนื้อหาที่ต้องชำระเงินทั้งหมดในเกมได้ฟรี!
คำแนะนำวิดีโอ
แพทช์ที่กำหนดเอง
แพตช์ผู้ใช้เป็นส่วนขยายสำหรับแอปพลิเคชันหรือเกมเฉพาะ โดยสามารถเพิ่มคุณสมบัติใหม่หรือปลดล็อคเนื้อหาแบบปิด/ชำระเงิน
วิธีสร้างแอปพลิเคชันเวอร์ชันดัดแปลง
คำแนะนำวิดีโอ
- ในเมนูบริบทคุณต้องเลือก "เมนูแพทช์" จากนั้นคลิกที่รายการ "สร้าง apk ที่แก้ไข"
- เราถูกขอให้เลือกแพตช์ที่เราต้องการใช้กับแอปพลิเคชันของเรา (ลบการตรวจสอบใบอนุญาต ลบโฆษณา ซื้อสินค้าฟรี หรือเปลี่ยนส่วนประกอบของแอปพลิเคชัน) คุณสามารถเลือกแพตช์หนึ่งรายการหรือหลายรายการพร้อมกัน (เพียงคลิกที่ บรรทัดแรก “ Apk พร้อมหลายแพตช์" จากนั้นทำเครื่องหมายที่ช่องถัดจากรายการที่ต้องการ) หลังจากนั้นสิ่งที่คุณต้องทำคือคลิกที่ปุ่ม "สร้างแอปพลิเคชันใหม่"
- เมื่อประกอบไฟล์ APK แล้ว คุณสามารถเปิดและติดตั้งหรือมอบให้เพื่อนของคุณได้
วิธีสร้างโคลนแอปพลิเคชัน (.apk)
เมื่อเร็ว ๆ นี้ฟังก์ชั่นการโคลนปรากฏอย่างเป็นทางการในเฟิร์มแวร์ของนักพัฒนาชาวจีนบางคน ตัวอย่างเช่น ใน MIUI หลังจากติดตั้งแอปพลิเคชันแล้ว คุณสามารถทำสำเนาแบบเต็มได้ เหตุใดจึงจำเป็น? ตัวอย่างเช่น การสร้างโคลนแอปพลิเคชัน Sberbank Online คุณสามารถใช้การ์ดสองใบได้ เช่นเดียวกับเกมออนไลน์ที่สร้างบัญชี หรือโปรแกรมส่งข้อความและโซเชียลเน็ตเวิร์ก คุณไม่จำเป็นต้องเข้าสู่ระบบใหม่จากบัญชีหนึ่งไปยังอีกบัญชีหนึ่งอีกต่อไป สิ่งที่คุณต้องทำคือสร้างโคลนของแอปพลิเคชันและเข้าสู่ระบบ
คำแนะนำวิดีโอ
- หลังจากที่คุณเปิดตัว Lucky Patcher คุณจะต้องค้นหาแอปพลิเคชันที่คุณต้องการโคลนและคลิกที่แอปพลิเคชันนั้น
- ในเมนูบริบทที่ปรากฏขึ้นให้เลือก "เครื่องมือ" และคลิกที่รายการ "แอปพลิเคชันโคลน"
- ในหน้าต่างถัดไป คุณไม่จำเป็นต้องเปลี่ยนแปลงอะไรเลย (ควรมีเครื่องหมายถูกข้างรายการ "เปลี่ยน AndroidManifest.xml, resources และ class.dex") เพียงคลิกที่ปุ่ม "สร้างแอปพลิเคชันใหม่"
- เมื่อ Lucky Patcher สร้างโคลนของแอปพลิเคชันที่เราเลือกเสร็จแล้ว คุณจะต้องติดตั้งมัน คลิกที่ปุ่ม "ติดตั้งโคลน" จากนั้นคลิก "ใช่" และรอให้โปรแกรมติดตั้ง
- หากประสบความสำเร็จ (ใช่ การสร้างโคลนที่ใช้งานได้นั้นเป็นไปไม่ได้เสมอไป) ไอคอนที่สองจากแอปพลิเคชันโคลนจะปรากฏบนเดสก์ท็อป และคุณจะสามารถเปิดใช้งานพร้อมกันและใช้งานได้ในเวลาเดียวกัน
วิธีเปลี่ยนการอนุญาตแอปพลิเคชัน
หากคุณต้องการจัดการสิทธิ์ของแอปพลิเคชันที่ติดตั้งบนอุปกรณ์ของคุณด้วยตนเอง ได้แก่ ปฏิเสธ/อนุญาตการเข้าถึงอินเทอร์เน็ต อ่านข้อมูลจากการ์ด SD เพิ่มแอปพลิเคชันเพื่อเริ่มต้น ทำการซื้อในแอป ตรวจสอบใบอนุญาต และอื่นๆ อีกมากมาย
- เราเปิดตัว Lucky Patcher และค้นหาแอปพลิเคชันที่เราต้องการ จากนั้นคลิกที่มัน
- ในเมนูบริบทคุณต้องเลือก "เมนูแพทช์" จากนั้นคลิกที่รายการ "เปลี่ยนส่วนประกอบแอปพลิเคชัน"
- ในหน้าต่างถัดไป เราต้องเลือกตัวเลือกที่ 3 (เปลี่ยนการอนุญาตและกิจกรรมโดยยังคงรักษาลายเซ็นดั้งเดิมไว้) ตามที่นักพัฒนาระบุว่าวิธีนี้ปลอดภัยที่สุด
- ตอนนี้เราสามารถเลือกสิทธิ์ที่จะปล่อยให้แอปพลิเคชันและเราต้องการปิดการใช้งานได้ เพียงแตะที่รายการที่จำเป็นแล้วคลิกที่ปุ่ม "สร้างใหม่และติดตั้ง"
การสำรองข้อมูล
คุณสามารถบันทึกไฟล์ .apk ของแอปพลิเคชันที่ติดตั้ง โดยมีการเปลี่ยนแปลงและการกำหนดค่าทั้งหมดที่เกิดขึ้น กล่าวอีกนัยหนึ่ง Lucky Patcher สามารถบันทึก .apk จากแอปพลิเคชันที่ติดตั้งจาก Google Play รวมทั้งโคลนได้ในกรณีที่คุณต้องการเปิดแอปพลิเคชันสองครั้ง
ตอนนี้คุณรู้วิธีใช้ Lucky Patcher แล้ว! แต่หากมีบางอย่างไม่ได้ผลสำหรับคุณหรือคุณมีคำถามใด ๆ เขียนความคิดเห็นในหน้านี้แล้วเราจะช่วยคุณ :)
- 1 กรกฎาคม 2017
- ยอดดู 49,133 ครั้ง
ชอบไหม?
การให้คะแนน: 17
สงครามเอาชีวิตรอดครั้งสุดท้าย: Apocalypse- เกมยิงซอมบี้พร้อมมุมมองจากบนลงล่าง
เอาชีวิตรอดในโลกหลังหายนะอันโหดร้าย ต่อสู้กับซอมบี้กลายพันธุ์นับพัน รวบรวมเสบียงและพัฒนาฐานของคุณ Last Survival War เป็นตัวแทนใหม่ของประเภท "แอ็คชั่นเอาชีวิตรอด" ที่ได้รับความนิยมอยู่แล้ว ซึ่งความสมดุลถูกเปลี่ยนไปสู่การต่อสู้มากกว่าองค์ประกอบเชิงกลยุทธ์ คุณสามารถมีส่วนร่วมในการทะเลาะวิวาทคนเดียวหรือกับเพื่อน เอาชีวิตรอดในโลก PvE หรือมีส่วนร่วมในการดวล PvP และแน่นอน พัฒนาตัวละครของคุณในทุกวิถีทางที่เป็นไปได้
มีอะไรใหม่:
เพิ่มม็อดแล้ว
ข้อมูลแฟชั่น:
- การประดิษฐ์ฟรี (การประดิษฐ์ไม่ต้องใช้ทรัพยากร)
- ไอเท็มทั้งหมดพร้อมสำหรับการประดิษฐ์ โดยไม่คำนึงถึงระดับปัจจุบัน
- การโจมตีและการป้องกันสูงสุดของตัวละครหลัก