หากคุณเคยดูแอปพลิเคชัน Android ที่คุณรู้จักเพื่อชื่นชมความสามารถในการวิเคราะห์เป้าหมายของคุณในระดับที่ทันสมัยที่สุด การวิเคราะห์โปรแกรมแบบไดนามิกจะให้ภาพรวมที่ดีของกิจกรรมแอปพลิเคชันและพฤติกรรมทั่วไป อย่างไรก็ตามบางครั้งคุณจะต้องวิเคราะห์แอปพลิเคชันของคุณ โดยไม่ต้อง รัน คุณจะต้องดูส่วนประกอบวิเคราะห์ว่าพวกเขามีปฏิสัมพันธ์อย่างไรและข้อมูลจะถูกทำให้บริสุทธิ์จากจุดหนึ่งไปอีกจุดหนึ่ง
นี่เป็นปัจจัยสำคัญที่ผลักดันการพัฒนาของ SMALISCA มีเหตุผลที่ดีสำหรับ การวิเคราะห์รหัสแบบคงที่ ก่อนที่จะมี ไดนามิก ก่อนที่จะโต้ตอบกับแอปพลิเคชันฉันชอบที่จะรู้ว่าแอปพลิเคชันได้รับการสร้างอย่างไรหากมี API และสร้าง กราฟการโทร ทุกประเภท ในความเป็นจริงกราฟมีความสำคัญมากสำหรับฉันตั้งแต่พวกเขา มองเห็น สิ่งต่าง ๆ แทนที่จะกระโดดจากไฟล์ไปยังไฟล์จากชั้นเรียนหนึ่งไปอีกชั้นหนึ่งฉันแค่ดูกราฟ
ในขณะที่การสร้างกราฟเป็นเหตุผลสำคัญสำหรับฉันที่จะเขียนโค้ดเครื่องมือดังกล่าว SMALISCA มี คุณสมบัติ ที่เรียบร้อยอื่น ๆ ที่คุณควรอ่าน
ในขณะนี้มีฟังก์ชั่นสำคัญบางอย่างเช่น:
การแยกวิเคราะห์
คุณสามารถแยกวิเคราะห์ไดเรกทอรีทั้งหมดของไฟล์ SMALI และ แยก :
จากนั้นคุณสามารถ ส่งออก ผลลัพธ์เป็น JSON หรือ SQLITE
มีการปล้นสะดมที่หน้าการแยกวิเคราะห์สำหรับข้อมูลเพิ่มเติม
การวิเคราะห์
หลังจากส่งออกผลลัพธ์คุณจะได้รับ พรอมต์แบบโต้ตอบ เพื่อดูข้อมูลที่แยกวิเคราะห์ของคุณอย่างใกล้ชิด คุณสามารถ ค้นหา คลาสคุณสมบัติวิธีการและแม้กระทั่งการโทรวิธี จากนั้นคุณสามารถใช้ ตัวกรอง หลายตัวกับเกณฑ์การค้นหาของคุณเช่น:
smalisca> sc -c class_name -p test -r 10 -x path -s class_type
คำสั่งนี้จะค้นหาคลาส 10 (-r 10) ซึ่งมี การทดสอบ รูปแบบ (-p) ใน ชื่อคลาส (-c) หลังจากนั้นคำสั่งจะยกเว้น เส้นทาง คอลัมน์ (-x Path) จากผลลัพธ์และเรียงลำดับตาม ประเภทคลาส (-S)
ลองดูตัวอย่างอื่น:
smalisca> scl -fc com/Android -fm init -r 10
สิ่งนี้จะค้นหา การโทรทุกวิธี ที่มีชื่อคลาส การโทร มีรูปแบบ com/Android (-FC) นอกจากนี้เราสามารถค้นหาการโทรที่มาจากวิธีการที่มีชื่อมีรูปแบบ init (-FM)
แน่นอนคุณสามารถอ่านคำสั่งของคุณจากไฟล์และวิเคราะห์ผลลัพธ์ของคุณเป็น ชุด - ลักษณะเช่น:
$ cat cmd.txt sc -c class_name -p com/gmail/xlibs -r 10 -x path ล้มเลิก $ ./smalisca.py Analyzer -i results.sqlite -f sqlite -c cmd.txt -
มีปล้นสะดมที่หน้าการวิเคราะห์สำหรับข้อมูลเพิ่มเติม
เว็บ API
SMALISCA ให้บริการเว็บที่เหลือเพื่อโต้ตอบกับผลลัพธ์ได้อย่างง่ายดายเพียงแค่ใช้เว็บไคลเอนต์ วิธีนี้คุณสามารถเข้าถึงข้อมูลในเว็บแอปพลิเคชัน (แฟนซี) ของคุณเองและมีการแยกที่สะอาดระหว่างแบ็กเอนด์และส่วนหน้า
อ่านเพิ่มเติมเกี่ยวกับ REST API ที่มีอยู่ที่หน้าเว็บ API
การแสดงภาพ
ฉันคิดว่านี่เป็นคุณสมบัติที่มีค่า ที่สุด ของ SMALISCA ความสามารถในการมองเห็นผลลัพธ์ของคุณในวิธีที่มีโครงสร้างทำให้ชีวิตของคุณสะดวกสบายยิ่งขึ้น ขึ้นอยู่กับสิ่งที่คุณสนใจเครื่องมือนี้มีคุณสมบัติการวาดกราฟหลายอย่างที่ฉันต้องการโปรโมต
ตอนแรกคุณสามารถวาดแพ็คเกจของคุณรวมถึงชั้นเรียนคุณสมบัติและวิธีการ:
smalisca> dc -c class_name -p test -f dot -o /tmp/classes.dot :: ข้อมูลเขียนผลลัพธ์ถึง /tmp/classes.dot smalisca>
นี่จะเป็นคลาสค้นหาก่อนที่ชื่อคลาสมี การทดสอบ แล้วส่งออกผลลัพธ์ในภาษา กราฟ DOT จากนั้นคุณสามารถสร้างกราฟด้วยตนเองโดยใช้ DOT , Neato , Circo ฯลฯ หรือคุณทำได้โดยใช้พรอมต์แบบโต้ตอบ:
smalisca> dc -c class_name -p test -f pdf -o /tmp/classes.pdf -prog neato :: ข้อมูลเขียนผลลัพธ์ไปที่ /tmp/classes.pdf smalisca>
มีของขวัญที่หน้าวาดสำหรับข้อมูลเพิ่มเติม
ผลลัพธ์ผลลัพธ์เป็นตาราง
ความสัมพันธ์ขั้นพื้นฐานระหว่างคลาสและโมดูล
ดูหน้าภาพหน้าจอ
อ้างถึงหน้าการติดตั้ง ความต้องการ:
หลังจากติดตั้งเครื่องมือแล้วคุณอาจต้องเลือกแอปพลิเคชัน Android (APK) ก่อนเพื่อเล่นด้วย ใช้ apktool หรือเครื่องมือของฉันเอง adus เพื่อทิ้งเนื้อหา apks เพื่อความเรียบง่ายฉันจะใช้ FakeBanker ซึ่งฉันได้วิเคราะห์ในโพสต์บล็อกก่อนหน้า
แต่ก่อนอื่นมาดูตัวเลือกหลักของเครื่องมือ:
$ SMALISCA -HELP
-
-
-
/ __, `/ / / / l . _ _ _ / __,` / __ // l _.
-
-
-
:: ผู้แต่ง: Victor <Cyneox> Doreanu
:: DESC: เครื่องมือวิเคราะห์รหัสแบบคงที่สำหรับไฟล์ SMALI
:: url: http://nullsecurity.net, http: // {บล็อก, www} .dornea.nu
:: เวอร์ชัน: 0.2
-
การใช้งาน: Smalisca (คำสั่งย่อย ... ) [ตัวเลือก ... ] {อาร์กิวเมนต์ ... }
[-] เครื่องมือการวิเคราะห์รหัสแบบคงที่ (SCA) สำหรับไฟล์ Baskmali (SMALI)
คำสั่ง:
เครื่องวิเคราะห์
[-] วิเคราะห์ผลลัพธ์โดยใช้พรอมต์แบบโต้ตอบหรือบนบรรทัดคำสั่ง
ตัวแยกวิเคราะห์
[-] แยกไฟล์และแยกข้อมูลตามไวยากรณ์ SMALI
เว็บ
[-] วิเคราะห์ผลลัพธ์โดยใช้ Web API
อาร์กิวเมนต์เสริม:
-H, -HELP แสดงข้อความช่วยเหลือและออกนี้
-เอาท์พุท Debug สลับสลับ
-Quiet ปราบปรามผลลัพธ์ทั้งหมด
-ระดับล็อก {debug, ข้อมูล, เตือน, ข้อผิดพลาด, วิกฤต}
เปลี่ยนระดับการบันทึก (ค่าเริ่มต้น: ข้อมูล)
-v, -เวอร์ชันโปรแกรมหมายเลขและออกจากโปรแกรม
ก่อนอื่นฉันจะ วิเคราะห์ ไดเรกทอรีสำหรับไฟล์ SMALI ก่อนที่จะทำการวิเคราะห์สิ่งของ:
$ smalisca parser -l ~/tmp/fakebanker2/dumped/smali -s java -f sqlite -o fakebanker.sqlite - :: ข้อมูลการแยกวิเคราะห์ไฟล์. java ใน/home/victor/tmp/fakebanker2/dumped/smali ... :: ข้อมูลการแยกวิเคราะห์เสร็จแล้ว! :: ข้อมูลส่งออกผลลัพธ์ไปยัง SQLite :: Info Extract Classes ... :: ข้อมูลคุณสมบัติการแยกคลาส ... :: ข้อมูลการแยกข้อมูลวิธีการเรียน ... :: INFO EXTRACT CALLES ... :: ข้อมูลกระทำการเปลี่ยนแปลงเป็น db sqlite :: ข้อมูลเขียนผลลัพธ์ไปยัง fakebanker.sqlite :: ข้อมูลการสแกนเสร็จแล้ว
ดูที่หน้าการแยกวิเคราะห์สำหรับข้อมูลเพิ่มเติม
ตอนนี้คุณมีอิสระที่จะทำทุกอย่างที่คุณต้องการด้วยการส่งออกที่สร้างขึ้น คุณสามารถตรวจสอบ SQLite DB ได้โดยตรงหรือใช้คุณสมบัติ การวิเคราะห์ SMALISCAS :
$ smalisca analyzer -f sqlite -i fakebanker.sqlite - smalisca> sc -x path -r 10 - - id | class_name | class_type | class_package | ความลึก - - 1 | Landroid/Support/V4/Net/ConnectivityManagerCompat | สาธารณะ | Landroid.support.v4.net | 5 | - 2 | Landroid/support/v4/view/accessibilityDelegatecompat $ accessibilityDelegateJellyBeanImpl | - landroid.support.v4.view | 5 | - 3 | Landroid/support/v4/view/viewCompat $ viewCompatimpl | บทคัดย่ออินเตอร์เฟส | landroid.support.v4.view | 5 | - 4 | Landroid/Support/V4/App/ActivityCompathoneycomb | - Landroid.support.v4.app | 5 | - 5 | Landroid/Support/v4/app/nosavestateframelayout | - Landroid.support.v4.app | 5 | - 6 | Landroid/Support/V4/Net/ConnectivityManagerCompathoneycombmr2 | - Landroid.support.v4.net | 5 | - 7 | lcom/gmail/xpack/buildConfig | สาธารณะสุดท้าย lcom.gmail.xpack | 4 | - 8 | Landroid/support/v4/app/backstackRecord $ op | สุดท้าย | Landroid.support.v4.app | 5 | - 9 | Landroid/support/v4/app/fragmentmanagerimpl | สุดท้าย | Landroid.support.v4.app | 5 | - 10 | Landroid/support/v4/app/shareCompat $ shareCompatimpl | บทคัดย่ออินเตอร์เฟส | Landroid.support.v4.app | 5 | -
โปรดดูที่หน้าการวิเคราะห์สำหรับ คำสั่ง และตัวเลือกเพิ่มเติมที่มีอยู่
โปรดดูหน้าวาดสำหรับตัวอย่างเต็มรูปแบบ
SMALISCA ได้รับการปล่อยตัวภายใต้ใบอนุญาต MIT ดูไฟล์ licence.rst
เครื่องมือนี้ทุ่มเทให้กับ LICă ขอบคุณมากไปที่:
Stephen McAllister
- ขอบคุณมากสำหรับทุก ๆ ชั่วโมงที่เต็มไปด้วยการดีบัก APK และความคิดที่ยอดเยี่ยม
แฟนของฉัน
- ขอบคุณมากสำหรับความอดทนและความเข้าใจ!
nullsecurity.net
- แฮ็คโลก!