เอกสารนี้ให้รายละเอียดตัวอย่างโค้ดและฟังก์ชันต่างๆ ที่เกี่ยวข้องกับการพัฒนา Android และ iOS วิศวกรรมย้อนกลับ และการโต้ตอบระดับระบบ โดยครอบคลุมหัวข้อต่างๆ ตั้งแต่การเชื่อมโยงเมธอดและการเข้าถึงคุณสมบัติของระบบ ไปจนถึงการจัดการหน่วยความจำและคุณสมบัติเฉพาะของ iOS ตัวอย่างที่ให้ไว้แสดงให้เห็นถึงชุดเทคนิคที่หลากหลายซึ่งมีประโยชน์สำหรับการดีบัก การวิเคราะห์ และการวิจัยด้านความปลอดภัย
& ยังมีตัวอย่างผลลัพธ์
สารบัญ
แสดงรายการตัวย่อ :ab
ขยายโดยการเขียนคีย์และ
ตัวสร้าง hook วิธี Java โดยใช้แป้นพิมพ์ลัด
ดึงข้อมูลคีย์ SSL
⬆ กลับไปด้านบน
โหลดโมดูล CPP
โหลดโมดูล C
⬆ กลับไปด้านบน
จุดสังเกตครั้งหนึ่ง
สกัดกั้น funcPtr & บันทึกผู้ที่อ่าน/เขียนไปยัง x2 ผ่านการลบสิทธิ์ด้วย mprotect
⬆ กลับไปด้านบน
กิจกรรมซ็อกเก็ต
ตัวอย่างหุ่นยนต์
⬆ กลับไปด้านบน
สกัดกั้นเปิด
ตัวอย่างสำหรับการสกัดกั้น libc#open & การบันทึก backtrace หากมีการเปิดไฟล์เฉพาะ
⬆ กลับไปด้านบน
ดำเนินการคำสั่งเชลล์
แสดงรายการเนื้อหาไดเร็กทอรี:
ดึงไบนารีจาก iOS
⬆ กลับไปด้านบน
แสดงรายการโมดูล
แสดงรายการโมดูลและการส่งออก
⬆ กลับไปด้านบน
บันทึกแบบสอบถาม SQLite
⬆ กลับไปด้านบน
คุณสมบัติของระบบได้รับ
⬆ กลับไปด้านบน
ธุรกรรมเครื่องผูก
⬆ กลับไปด้านบน
เผยวิธีการแบบพื้นเมือง
registerNativeMethods สามารถใช้เป็นเทคนิคป้องกันการย้อนกลับของไลบรารี .so ดั้งเดิมได้ เช่น การซ่อนสัญลักษณ์ให้มากที่สุดเท่าที่จะเป็นไปได้ ทำให้สัญลักษณ์ที่ส่งออกสับสน และในที่สุดก็เพิ่มการป้องกันบนสะพาน JNI
แหล่งที่มา
@เวอร์ชั่นเก่า
⬆ กลับไปด้านบน
อาร์กิวเมนต์ของวิธีการบันทึก
⬆ กลับไปด้านบน
แจกแจงคลาสที่โหลด
และบันทึกเป็นไฟล์ชื่อ pkg.classes
⬆ กลับไปด้านบน
คำอธิบายชั้นเรียน
รับวิธีการเรียนและสมาชิก
หากมีการขัดแย้งกันของชื่อ เมธอด & สมาชิกมีชื่อเดียวกัน ขีดล่างจะถูกเพิ่มให้กับสมาชิก แหล่งที่มา
⬆ กลับไปด้านบน
ปิดไวไฟ
มันจะปิด WiFi ในการสร้างกิจกรรมแรก
⬆ กลับไปด้านบน
ตั้งค่าพร็อกซี
มันจะตั้งค่าพร็อกซีทั้งระบบโดยใช้ที่อยู่ IP และพอร์ตที่ให้มา
⬆ กลับไปด้านบน
รับอีมี่
สามารถขอและเปลี่ยน IMEI ได้
⬆ กลับไปด้านบน
ขอ io InputStream
Hook InputputStream และบัฟเฟอร์การพิมพ์เป็น ASCII พร้อมขีด จำกัด ถ่านและรายการแยก
⬆ กลับไปด้านบน
Android ทำขนมปังปิ้ง
รอสภาพครับ
รอจนกว่า DLL เฉพาะจะโหลดในแอป Unity สามารถใช้ hot swap ได้
⬆ กลับไปด้านบน
URL ของมุมมองเว็บ
บันทึกทุกครั้งที่เปลี่ยน URL ของ WebView
⬆ กลับไปด้านบน
พิมพ์สตริงรันไทม์
เชื่อมต่อไปยัง String ของ StringBuilder/Buffer และการพิมพ์ stacktrace
⬆ กลับไปด้านบน
พิมพ์อัพเดตการตั้งค่าที่ใช้ร่วมกัน
⬆ กลับไปด้านบน
การเปรียบเทียบสตริง
⬆ กลับไปด้านบน
ขอ JNI ตามที่อยู่
ขอวิธีการดั้งเดิมตามชื่อโมดูลและที่อยู่ของวิธีการและอาร์กิวเมนต์การพิมพ์
⬆ กลับไปด้านบน
ตัวสร้างตะขอ
⬆ กลับไปด้านบน
ตะขอสะท้อนแสง
java.lang.reflect.Method#inrigg (Object obj, Object... args, บูลบูล)
⬆ กลับไปด้านบน
ติดตามคลาส
วิธีการเรียนการติดตามพร้อมสีสวย ๆ และตัวเลือกในการพิมพ์เป็น JSON และ stacktrace
TODO เพิ่มการติดตามสำหรับ c'tor
⬆ กลับไปด้านบน
รับรหัส Android
ANDROID_ID จะไม่ซ้ำกันในแต่ละแอปพลิเคชันใน Android
⬆ กลับไปด้านบน
เปลี่ยนสถานที่
⬆ กลับไปด้านบน
บายพาส FLAG_SECURE
ข้ามคำถามการป้องกันภาพหน้าจอ Stackoverflow
⬆ กลับไปด้านบน
อัปเดตการตั้งค่าที่ใช้ร่วมกัน
⬆ กลับไปด้านบน
ตะขอโอเวอร์โหลด
⬆ กลับไปด้านบน
ลงทะเบียนเครื่องรับการออกอากาศ
⬆ กลับไปด้านบน
รายการคลาสใช้อินเทอร์เฟซ
⬆ กลับไปด้านบน
เพิ่มจำนวนก้าว
⬆ กลับไปด้านบน
บันทึกระบบปฏิบัติการ
⬆ กลับไปด้านบน
กล่องแจ้งเตือน iOS
⬆ กลับไปด้านบน
การเข้าถึงไฟล์
บันทึกแต่ละไฟล์ที่เปิด
⬆ กลับไปด้านบน
สังเกตชั้นเรียน
ObservClass('Someclass$innerClass');
⬆ กลับไปด้านบน
ค้นหา UUID ของแอปพลิเคชัน iOS
รับ UUID สำหรับเส้นทางเฉพาะเมื่อแนบไปกับแอปโดยการอ่านไฟล์ plist ใต้แต่ละคอนเทนเนอร์ของแอป
⬆ กลับไปด้านบน
แยกคุกกี้
⬆ กลับไปด้านบน
อธิบายสมาชิกชั้นเรียน
พิมพ์แผนที่ของสมาชิก (พร้อมค่า) สำหรับแต่ละอินสแตนซ์ของคลาส
⬆ กลับไปด้านบน
ลำดับชั้นของชั้นเรียน
Object.keys(ObjC.classes) จะแสดงรายการคลาส Objective C ที่มีอยู่ทั้งหมด
แต่จริงๆ แล้วสิ่งนี้จะส่งคืนคลาสทั้งหมดที่โหลดในกระบวนการปัจจุบัน รวมถึงเฟรมเวิร์กของระบบด้วย
หากเราต้องการบางอย่างเช่น Weakclassdump เพื่อแสดงรายการคลาสจากปฏิบัติการได้ด้วยตนเองเท่านั้น Objective C runtime ได้จัดเตรียมฟังก์ชันดังกล่าวแล้ว objccopyClassNamesForImage
⬆ กลับไปด้านบน
สะท้อนตะขอ
กำลังเชื่อมต่อ objc_msgSend
⬆ กลับไปด้านบน
สกัดกั้นโมดูลทั้งหมด
เพื่อลดฟังก์ชันที่เกี่ยวข้องกับ UI ฉันทำตามขั้นตอนต่อไปนี้:
⬆ กลับไปด้านบน
ดัมพ์ส่วนหน่วยความจำ
⬆ กลับไปด้านบน
สแกนหน่วยความจำ
⬆ กลับไปด้านบน
สตอล์กเกอร์
⬆ กลับไปด้านบน
เครื่องแยกส่วน Cpp
เพิ่มลงในสคริปต์ของคุณ
รวบรวม
วิ่ง
⬆ กลับไปด้านบน
เบ็ดต้น
ตั้งตะขอก่อน DTINITARRAY ( โบรน )
เครดิต: iGio90
⬆ กลับไปด้านบน
คุณสมบัติของอุปกรณ์
ตัวอย่างการแยกคุณสมบัติอุปกรณ์ iOS ที่รวดเร็วและสกปรก
⬆ กลับไปด้านบน
จับภาพหน้าจอ
⬆ กลับไปด้านบน
บันทึกคำสั่ง SSH
⬆ กลับไปด้านบน
สิ่งที่ต้องทำ
ตัวอย่าง:
มิตสึบะ เรนเดอร์เรอร์ 3
เอกสารประกอบ | วิดีโอสอน | ลินุกซ์ | แมคโอเอส | หน้าต่าง | พีพีไอ |
---|---|---|---|---|---|
คำเตือน
ขณะนี้มีงานที่ไม่มีเอกสารและไม่มั่นคงเกิดขึ้นจำนวนมาก
สาขา master
เราขอแนะนำให้คุณใช้ของเรา
รุ่นล่าสุด
จนกว่าจะมีประกาศต่อไป
หากคุณต้องการลองใช้การเปลี่ยนแปลงที่กำลังจะเกิดขึ้น โปรดดูที่
คู่มือการย้ายนี้
ควรครอบคลุมคุณลักษณะใหม่ส่วนใหญ่และการเปลี่ยนแปลงที่กำลังจะเกิดขึ้น
การแนะนำ
Mitsuba 3 เป็นระบบการเรนเดอร์ที่เน้นการวิจัยสำหรับแสงไปข้างหน้าและไฟผกผัน
การจำลองการขนส่งที่พัฒนาขึ้นที่ EPFL ในประเทศสวิตเซอร์แลนด์
ประกอบด้วยไลบรารีหลักและชุดปลั๊กอินที่ใช้ฟังก์ชันการทำงาน
ตั้งแต่วัสดุและแหล่งกำเนิดแสงไปจนถึงอัลกอริธึมการเรนเดอร์ที่สมบูรณ์
Mitsuba 3 สามารถกำหนดเป้าหมายใหม่ได้ : นี่หมายความว่าการใช้งานพื้นฐานและ
โครงสร้างข้อมูลสามารถแปลงสภาพเพื่อทำงานต่างๆ ให้สำเร็จได้ สำหรับ
ตัวอย่าง รหัสเดียวกันสามารถจำลองการขนส่ง RGB ทั้งแบบสเกลาร์ (คลาสสิกหนึ่งเรย์ต่อครั้ง)
หรือการขนส่งสเปกตรัมที่แตกต่างกันบน GPU ทั้งหมดนี้สร้างขึ้น
Dr.Jit คอมไพเลอร์เฉพาะทาง just-in-time (JIT) ที่พัฒนาขึ้นสำหรับโปรเจ็กต์นี้โดยเฉพาะ
คุณสมบัติหลัก
ข้ามแพลตฟอร์ม : Mitsuba 3 ได้รับการทดสอบบน Linux ( x86_64
), macOS
( aarch64
, x8664
) และ Windows ( x8664
)
ประสิทธิภาพสูง : คอมไพเลอร์ Dr.Jit พื้นฐานจะฟิวส์โค้ดการเรนเดอร์
สู่เมล็ดพืชที่ได้รับประสิทธิภาพอันล้ำสมัยโดยใช้
แบ็กเอนด์ LLVM ที่กำหนดเป้าหมาย CPU และแบ็กเอนด์ CUDA/OptiX
กำหนดเป้าหมาย NVIDIA GPU ด้วยการเร่งด้วยฮาร์ดแวร์ Ray Tracing
Python ก่อน : Mitsuba 3 ได้รับการบูรณาการอย่างลึกซึ้งกับ Python วัสดุ,
พื้นผิวและแม้กระทั่งอัลกอริธึมการเรนเดอร์แบบเต็มสามารถพัฒนาได้ใน Python
ซึ่งระบบ JIT คอมไพล์ (และเลือกสร้างความแตกต่าง) ได้ทันที
สิ่งนี้ทำให้สามารถทดลองที่จำเป็นสำหรับการวิจัยในคอมพิวเตอร์กราฟิกและ
สาขาวิชาอื่น ๆ
ความแตกต่าง : Mitsuba 3 เป็นตัวเรนเดอร์ที่สร้างความแตกต่างได้ ซึ่งหมายความว่ามัน
สามารถคำนวณอนุพันธ์ของการจำลองทั้งหมดโดยคำนึงถึงอินพุต
พารามิเตอร์ต่างๆ เช่น ท่าทางกล้อง เรขาคณิต BSDF พื้นผิว และปริมาตร มัน
ใช้อัลกอริธึมการเรนเดอร์เชิงอนุพันธ์ล่าสุดที่พัฒนาขึ้นที่ EPFL
สเปกตรัมและโพลาไรเซชัน : Mitsuba 3 สามารถใช้เป็นสีเดียวได้
ตัวเรนเดอร์ ตัวเรนเดอร์แบบ RGB หรือตัวเรนเดอร์สเปกตรัม แต่ละรุ่นได้
สามารถเลือกพิจารณาถึงผลกระทบของโพลาไรเซชันได้หากต้องการ
วิดีโอสอน เอกสารประกอบ
เราได้บันทึกวิดีโอ YouTube หลายรายการที่มีการแนะนำอย่างนุ่มนวล
มิตซูบา 3 และ คุณหมอจิตร. นอกเหนือจากนี้ คุณจะพบสมุดบันทึก Juypter ฉบับสมบูรณ์
ครอบคลุมการใช้งาน คำแนะนำวิธีใช้ และเอกสารอ้างอิงที่หลากหลาย
บน readthedocs
การติดตั้ง
เราจัดเตรียมล้อไบนารีที่คอมไพล์ไว้ล่วงหน้าผ่าน PyPI การติดตั้ง Mitsuba ด้วยวิธีนี้ทำได้ง่ายเพียงแค่ใช้งาน
pip ติดตั้งมิตซูบา
บนบรรทัดคำสั่ง แพ็คเกจ Python มีตัวแปรสิบสามแบบตามค่าเริ่มต้น:
scalar_rgb
scalar_spectral
scalarspectralpolarized
llvmadrgb
llvmadmono
llvmadmono_polarized
llvmadspectral
llvmadspectral_polarized
cudaadrgb
cudaadmono
cudaadmono_polarized
cudaadspectral
cudaadspectral_polarized
สองรายการแรกทำการจำลองแบบหนึ่งเรย์ต่อครั้งแบบคลาสสิกโดยใช้ RGB
หรือการแสดงสีสเปกตรัม ในขณะที่สองอันหลังสามารถใช้สำหรับการผกผันได้
แสดงผลบน CPU หรือ GPU หากต้องการเข้าถึงตัวแปรเพิ่มเติม คุณจะต้อง
รวบรวม Dr.Jit เวอร์ชันที่กำหนดเองโดยใช้ CMake โปรดดูที่
เอกสารประกอบ
สำหรับรายละเอียดเกี่ยวกับเรื่องนี้
ความต้องการ
Python >= 3.8
(ทางเลือก) สำหรับการคำนวณบน GPU: Nvidia driver >= 495.89
(ทางเลือก) สำหรับการคำนวณแบบเวกเตอร์ / แบบขนานบน CPU: LLVM >= 11.1
การใช้งาน
นี่คือตัวอย่าง "Hello World" ง่ายๆ ที่แสดงให้เห็นว่าการเรนเดอร์ a เป็นเรื่องง่ายเพียงใด
ฉากโดยใช้ Mitsuba 3 จาก Python:
# นำเข้าไลบรารีโดยใช้นามแฝง "mi" นำเข้า mitsuba เป็น mi# ตั้งค่าตัวแปรของ renderermi.setvariant('scalarrgb')# โหลดฉากฉาก = mi.loติดยาเสพติด(mi.cornellbox())# เรนเดอร์ฉาก img = mi render(scene)# เขียนภาพที่เรนเดอร์ไปยังไฟล์ EXRmi.Bitmap(img).write('cbox.exr')
สามารถดูบทช่วยสอนและสมุดบันทึกตัวอย่างที่ครอบคลุมการใช้งานที่หลากหลาย
ในเอกสารประกอบ
เกี่ยวกับ
โปรเจ็กต์นี้สร้างโดย Wenzel Jakob
คุณสมบัติที่สำคัญและ/หรือการปรับปรุงโค้ดได้รับการสนับสนุนโดย
เซบาสเตียน สไปเรอร์,
นิโคลัส รุสเซล,
เมอร์ลิน นิเมียร์-เดวิด
เดลิโอ วิชินี่,
ทิเซียน เซลท์เนอร์,
แบปติสต์ นิโคเลต์,
มิเกล เครสโป,
วินเซนต์ เลอรอย และ
จือยี่ จาง.
เมื่อใช้ Mitsuba 3 ในโครงการวิชาการ โปรดอ้างอิง:
@software{Mitsuba3,title = {Mitsuba 3 renderer},ผู้เขียน = {Wenzel Jakob และ Sébastien Speierer และ Nicolas Roussel และ Merlin Nimier-David และ Delio Vicini และ Tizian Zeltner และ Baptiste Nicolet และ Miguel Crespo และ Vincent Leroy และ Ziyi Zhang} หมายเหตุ = {https://mitsuba-renderer.org},รุ่น = {3.1.1},ปี = 2022}