การทำให้โค้ดสับสนใน Flutter (Android)
เรื่องราวเริ่มต้นขึ้นเมื่อเรากำลังจะเผยแพร่แอพ flutter สู่การผลิต แต่ก่อนหน้านั้น แอปได้เข้าสู่กระบวนการ VAPT ( Vulnerability Assessment and Penetration Testing )
การทำให้โค้ดยุ่งเหยิงคืออะไร?
การทำให้โค้ดยุ่งเหยิงคือกระบวนการสร้างโค้ดของโปรแกรมที่เข้าใจยาก โดยปกติแล้วจะมีจุดประสงค์เพื่อทำให้การทำวิศวกรรมย้อนกลับหรือแก้ไขทำได้ยากขึ้น ซึ่งสามารถทำได้โดยใช้เทคนิคต่างๆ เช่น การทำให้ชื่อตัวแปรและฟังก์ชันอ่านไม่ได้ หรือโดยการเพิ่มเลเยอร์พิเศษของทางอ้อมหรือความซับซ้อนให้กับโค้ด การทำให้งงงวยมักใช้เพื่อปกป้องทรัพย์สินทางปัญญาหรือเพื่อป้องกันการยุ่งเกี่ยวกับโปรแกรมที่เป็นอันตราย (ขอบคุณChatGPT )
เหตุใดโค้ดจึงยุ่งเหยิง
หากคุณกำลังพัฒนาแอปที่ความปลอดภัยของข้อมูลผู้ใช้อยู่เหนือสิ่งอื่นใด คุณจะประนีประนอมไม่ได้ แม้ว่าการรักษาความปลอดภัยที่พิสูจน์ไม่ได้เป็นเรื่องโกหก แต่เราสามารถขยายขอบเขตได้โดยใช้วิธีเหล่านี้:
- ย่อโค้ดของคุณ (หรือเขย่าต้นไม้) : ตรวจพบและลบคลาส ฟิลด์ เมธอด และแอตทริบิวต์ที่ไม่ได้ใช้ออกจากแอปของคุณอย่างปลอดภัย
3. เปิดใช้งาน proguard : ใช้กฎของ proguard เพื่อกำหนดว่าไฟล์ใดที่คุณไม่ต้องการเปลี่ยนระหว่างกระบวนการลดขนาดและย่อขนาด
ข้ามไปที่ส่วน How กันเลย
ทำให้งงโดยใช้คำสั่ง flutter
export version=1.0.0
flutter build apk --release --shrink --obfuscate --split-debug-info=misc/mapping/${version}
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled true
useProguard true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
คำอธิบาย :
- จะใช้การกำหนดค่าการลงนามโหมดเผยแพร่ของคุณ คุณจะต้องสร้างไฟล์ .jks และ key.properties ซึ่งคุณสามารถระบุข้อมูลรับรองการลงนามของคุณได้
- เก็บ proguard-rules.pro ไว้ในโฟลเดอร์แอพ เพื่อให้คุณสามารถกำหนดกฎของคุณภายในนั้นได้ อ่านวิธีกำหนดกฎ Proguard ที่นี่
- เพื่อป้องกันไฟล์ที่กระพือในระหว่างการทำให้งงงวย ใช้บรรทัดเหล่านี้ในไฟล์ proguard-rules ของคุณ:
#Flutter Wrapper
-keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.** { *; }
-keep class io.flutter.util.** { *; }
-keep class io.flutter.view.** { *; }
-keep class io.flutter.** { *; }
-keep class io.flutter.plugins.** { *; }
-keep class org.xmlpull.v1.** { *;}
-dontwarn org.xmlpull.v1.**
ถึงเวลาสำหรับคำแนะนำจากมือโปรแล้ว
หากคุณมาถึงจุดนี้ นี่คือของขวัญสำหรับคุณ แอปของคุณยังคงหยุดทำงานหลังจากเปิดใช้งาน proguard หรือไม่
ลองแฮ็คนี้เพื่อแก้ไขข้อบกพร่อง:
แทนที่รุ่นเพื่อแก้ไขจุดบกพร่องและเรียกใช้แอปในโหมดแก้ไขจุดบกพร่อง
buildTypes {
debug {
signingConfig signingConfigs.release
minifyEnabled true
useProguard true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
นั่นคือทั้งหมดสำหรับวันนี้ ขอบคุณที่อยู่จนจบ ข้อเสนอแนะยินดีต้อนรับ
มาเชื่อมต่อ กันตอนนี้บนTwitter , InstagramหรือLinkedIn





































![รายการที่เชื่อมโยงคืออะไร? [ส่วนที่ 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)