xAnalyzer เป็นปลั๊กอินสำหรับดีบักเกอร์ x86/x64 x64dbg โดย @mrexodia ปลั๊กอินนี้ใช้ปลั๊กอิน APIInfo โดย @mrfearless แม้ว่าจะมีการปรับปรุงและเพิ่มเติมบางอย่างก็ตาม xAnalyzer สามารถทำการวิเคราะห์ประเภทต่างๆ บนโค้ดคงที่ของแอปพลิเคชันที่แก้ไขจุดบกพร่อง เพื่อให้ข้อมูลเพิ่มเติมแก่ผู้ใช้ ปลั๊กอินนี้จะสร้างการตรวจจับการเรียกฟังก์ชัน API ที่ครอบคลุม เพื่อเพิ่มคำจำกัดความของฟังก์ชัน อาร์กิวเมนต์ และประเภทข้อมูล ตลอดจนข้อมูลเสริมอื่นๆ ซึ่งใกล้เคียงกับสิ่งที่คุณได้รับจากเครื่องมือวิเคราะห์ OllyDbg เพื่อให้เข้าใจได้ง่ายยิ่งขึ้นสำหรับ ผู้ใช้ก่อนที่จะเริ่มงานดีบั๊ก
คุณสมบัติหลักและการปรับปรุงบางประการ ได้แก่:
การวิเคราะห์การเรียกใช้ฟังก์ชันเพิ่มเติม (คำจำกัดความของ API มากกว่า 13,000 รายการจาก DLL เกือบ 200 รายการ)
ฟังก์ชัน อาร์กิวเมนต์ ชนิดข้อมูลที่กำหนดและทั่วไป และการรับรู้ข้อมูลการดีบักเพิ่มเติม
การตรวจจับลูปอัตโนมัติ
ผู้ใช้ดูแลรักษาไฟล์คำจำกัดความ
ก่อน xAnalyzer
หลังจาก xAnalyzer
ดาวน์โหลดไบนารีรุ่นล่าสุดที่นี่
ดาวน์โหลด x64dbg เวอร์ชันล่าสุด
แยก apis_def.zip
คัดลอก xAnalyzer.dp32/xAnalyzer.dp64 และโฟลเดอร์ apis_def ไปยังไดเรกทอรีปลั๊กอินที่เกี่ยวข้องใน x64dbg
ดูใต้เมนู " Plugins " ในหน้าต่างหลัก x64dbg หรือในเมนูรองในหน้าต่าง Disasm รวมถึงรายการ " xAnalyzer "
xAnalyzer มีตัวเลือกบางอย่างให้เลือกเพื่อปรับแต่งประสบการณ์การใช้งานให้มากยิ่งขึ้น ใช้งานเมื่อคุณต้องการและวิธีที่คุณต้องการ ตัวเลือกปลั๊กอินมีดังนี้:
การวิเคราะห์อัตโนมัติ : เมื่อตัวเลือกนี้เปิดอยู่ ปลั๊กอินจะเริ่มการวิเคราะห์อัตโนมัติเต็มรูปแบบเหนือโค้ดปฏิบัติการทุกครั้งที่เข้าถึงจุดเริ่มต้นเมื่อโหลดบนดีบักเกอร์ ด้วยการใช้ตัวเลือกนี้ คุณจะเข้าใกล้ลักษณะการวิเคราะห์เริ่มต้นของ OllyDbg บน x64dbg มากขึ้น
Extended Analysis : ตัวเลือกนี้จะบังคับให้ xAnalyzer ทำการวิเคราะห์เพิ่มเติมในส่วนโค้ดทั้งหมดของโปรแกรมที่แก้ไขข้อบกพร่องแล้ว คำเตือน!!! เมื่อเปิดใช้งานตัวเลือกนี้ กระบวนการวิเคราะห์อาจใช้เวลาและทรัพยากรมากขึ้นในการดำเนินการให้เสร็จสิ้น นอกจากนี้ หน่วยความจำ RAM จำนวนมากอาจถูกใช้โดย x64dbg ขึ้นอยู่กับขนาดของส่วนและจำนวนข้อมูลเพิ่มเติมที่เพิ่มลงในการแยกชิ้นส่วนแบบสแตติกปฏิบัติการที่แก้ไขข้อบกพร่องแล้ว
วิเคราะห์ฟังก์ชันที่ไม่ได้กำหนด : โดยการเลือกตัวเลือกนี้ xAnalyzer จะใช้การวิเคราะห์ทั่วไปและประเภทอาร์กิวเมนต์สำหรับการเรียก API/ฟังก์ชันทั้งหมดที่ไม่ได้กำหนดไว้ในไฟล์คำจำกัดความของ API และยังเรียกใช้เช่น:
CALL {REGISTER}
CALL {REGISTER + DISPLACEMENT}
CALL {DYNAMIC_POINTER}
xAnalyzer มีคำสั่งและตัวเลือกเมนูให้เลือกเมื่อทำงานกับไฟล์ปฏิบัติการ:
โดยการเลือกคำสั่งต่างๆ ในหน้าต่างแยกชิ้นส่วนของ x64dbg และเลือกเมนูนี้ การวิเคราะห์อย่างรวดเร็วจะดำเนินการในบรรทัดที่เลือก คุณยังสามารถใช้คำสั่ง xanal Selection เพื่อเปิดใช้ตัวเลือกนี้ หรือแม้แต่ตั้งค่าปุ่มลัดของคุณเองใน x64dbg gui
หากคุณอยู่ระหว่างการใช้งานบางฟังก์ชัน คุณสามารถใช้รายการเมนูนี้เพื่อวิเคราะห์ฟังก์ชันทั้งหมดและเฉพาะฟังก์ชันนั้นเท่านั้น การใช้คำสั่งที่คุณเลือกเป็น xAnalyzer อ้างอิงจะประมวลผลจากที่นั่นทุกบรรทัดภายในบล็อกโค้ด คุณยังสามารถใช้คำสั่ง xanal เพื่อเรียกใช้การวิเคราะห์ประเภทนี้ หรือแม้แต่ตั้งค่าปุ่มลัดของคุณเองใน x64dbg gui
คำสั่งนี้จะเริ่มการวิเคราะห์แบบเต็มทั่วทั้งโมดูล คุณลักษณะนี้จะนำตัวเลือก การวิเคราะห์แบบขยาย มาพิจารณาถึงความลึกของการวิเคราะห์ที่จะใช้ คุณสามารถใช้คำสั่ง xanal module เพื่อดำเนินการได้เช่นกัน หรือแม้แต่ตั้งค่าปุ่มลัดของคุณเองใน x64dbg gui
ในกรณีเหล่านี้ เมนูทั้งหมดเหล่านี้จะตรงกันข้ามกับคำสั่งก่อนหน้านี้ ในกรณีที่คุณต้องการกำจัดข้อมูลเพิ่มเติมการวิเคราะห์ในบางส่วนของโค้ดหรือในไฟล์ปฏิบัติการทั้งหมด หากต้องการ คุณยังสามารถใช้คำสั่ง: xanalremove Selection/function/module
xAnalyzer มีระบบไฟล์คำจำกัดความ API ที่ขยายได้ ไฟล์เหล่านี้มีอยู่ในโฟลเดอร์ "api_def" และ "api_def/headers" ซึ่งควรมีไฟล์ทั้งหมดที่มีโครงสร้าง .ini และมีบรรทัดฐานเป็น:
" filename ": นี่คือชื่อของโมดูลที่มีฟังก์ชัน API อยู่
" filename.h ": นี่คือส่วนหัวที่มีข้อมูลประเภทข้อมูล (แฟล็กและแจงนับ)
ส่วนขยาย " .api ": ระบุว่าเป็นไฟล์คำจำกัดความ โดยจะไม่รู้จักนามสกุลอื่น (kernel32.api, shell32.api ฯลฯ)
ไฟล์ ini ทั้งหมดนี้มีข้อมูลที่สำคัญสำหรับปลั๊กอิน เช่น ฟังก์ชันต้นแบบ ประเภทอาร์กิวเมนต์ ฯลฯ ข้อมูลทั้งหมดนี้ถูกใช้โดย xAnalyzer เพื่อตั้งค่าข้อมูลเพิ่มเติมเกี่ยวกับโค้ดคงที่ รายการเดียวในไฟล์เหล่านี้จะเป็นดังนี้:
ไฟล์ user32.api
[MessageBox]
1=HANDLE hWnd
2=LPCTSTR lpText
3=LPCTSTR lpCaption
4=[MessageBoxType] uType
ParamCount=4
Header=shell.h.api;
@=MessageBox
ไฟล์ shell.h.api
[MessageBoxType]
TypeDisplay=UINT
Base=UINT
Type=Flag
Const1=MB_ABORTRETRYIGNORE
Value1=0x00000002
Const2=MB_CANCELTRYCONTINUE
Value2=0x00000006
Const3=MB_HELP
Value3=0x00004000
Const4=MB_OK
Value4=0x00000000
Const5=MB_OKCANCEL
...
อาร์กิวเมนต์ระหว่างวงเล็บหมายความว่านี่เป็นประเภทข้อมูลเฉพาะ (แจงนับหรือแฟล็กไบนารี) และสิ่งนี้จะถูกกำหนดในไฟล์ส่วนหัว .h ที่เหมาะสมซึ่งระบุในคีย์ " ส่วนหัว "
สำหรับไฟล์ส่วนหัว รูปแบบจะค่อนข้างเหมือนกัน มีเพียงคีย์สองสามคีย์ เช่น " TypeDisplay " นี่เป็นการระบุประเภทข้อมูลที่เหมาะสมที่จะแสดงในความคิดเห็น dbg จากนั้นมา " Base " และจะชี้ไปที่ประเภทข้อมูลพื้นฐานที่ใช้โดยรายการหลัก ในกรณีที่มีประเภทข้อมูลที่เชื่อมโยง ซึ่งอาจอยู่ระหว่างวงเล็บดังนี้ ดี. ปุ่ม " Type " คือประเภทของโครงสร้างข้อมูลที่เป็นอยู่ และอาจเป็น "Flag" หรือ "Enum" ในที่สุดชื่อตัวแปรและค่าทั้งหมดก็เข้ามา
หากคุณพบว่าคำจำกัดความการเรียก API บางอย่างไม่ได้รับการตรวจพบหรือตรวจพบไม่ถูกต้องโดย xAnalyzer อาจหมายความว่าไม่มีอยู่ในไฟล์คำจำกัดความหรือมีการกำหนดไว้ไม่ถูกต้อง ดังนั้นในกรณีนี้ อาจมีการเพิ่มหรือแก้ไขเพื่อรวม ฟังก์ชันหรืออาร์กิวเมนต์ที่ขาดหายไปตราบใดที่มีโครงสร้างเดียวกัน สามารถปรับแต่งได้ 100%
การเรียกที่ไม่ได้กำหนดครั้งแรกพร้อมกับอาร์กิวเมนต์ทั่วไปในฟังก์ชันจะไม่ได้รับการประมวลผล เว้นแต่ว่าจะมีการกระโดดนำหน้า เนื่องจากไม่มีวิธีที่จะบอกจำนวนอาร์กิวเมนต์ที่จะใช้โดยไม่ผิดกฎหมายโดยใช้คำสั่งเปิดฟังก์ชัน เฉพาะการโทรที่มีเอกสารเท่านั้นที่จะได้รับการประมวลผลที่จุดเริ่มต้นของฟังก์ชันหรือฟังก์ชันที่ไม่ได้กำหนดซึ่งมีการกระโดดเป็นประธาน
ฟังก์ชัน "ที่ไม่ธรรมดา" บางฟังก์ชันมีข้อโต้แย้งระหว่างการข้าม ดังนั้นตามการออกแบบที่แท้จริงของปลั๊กอิน (ไม่มีการข้ามระหว่างอาร์กิวเมนต์ของฟังก์ชัน) การเรียกเหล่านี้จะไม่ถูกประมวลผล เนื่องจากทุกครั้งที่พบการข้าม คำแนะนำในสแต็กจะถูกล้าง
การโทรที่ซ้อนกันจะทำงานได้อย่างถูกต้องเฉพาะเมื่อ:
1-) มีการกำหนดการโทรภายใน
2-) หากการเรียกภายในที่ไม่ได้กำหนดจะไม่รับอาร์กิวเมนต์ของสแต็กมากกว่าอาร์กิวเมนต์ที่ต้องการโดยการเรียกภายนอก
ตรวจพบเฉพาะลูปภายในฟังก์ชัน (ขอบเขตฟังก์ชัน Prologs/RETs) หากฟังก์ชันมี RET อยู่ตรงกลางโค้ด ฟังก์ชันนั้นจะถูกตรวจพบว่าเป็นจุดสิ้นสุดของฟังก์ชันและสแต็กลูปจะถูกล้าง
การวิเคราะห์อาจล้มเหลวหากปฏิบัติการที่กำลังดีบั๊กมีหลายจุดในชื่อ
การตรวจจับลูปไม่ถูกต้องสำหรับส่วนที่มีการข้ามแบบไม่มีเงื่อนไขอยู่ข้างใน (ดู #7)
บรรทัดอาร์กิวเมนต์ที่ซ้อนกัน (xAnalyzer รองรับอาร์กิวเมนต์ที่ซ้อนกัน แต่ x64dbg ในขณะนี้ไม่รองรับ)
เพิ่มการวิเคราะห์เอนโทรปี
การสแกนการวิเคราะห์การไหลแทนเชิงเส้น (การจำลองการติดตาม)
การตรวจจับสวิตช์เคส
xAnalyzer 2.5.4
- อัปเดตโครงการเป็น VS2017
- แก้ไขปัญหาเมื่อประมวลผลคำสั่งอาร์กิวเมนต์ที่เกี่ยวข้องกับตัวชี้สแต็ก (เวอร์ชัน x64)
- แก้ไขลำดับอาร์กิวเมนต์ที่ไม่ถูกต้องที่เกี่ยวข้องกับตัวชี้สแต็ก (เวอร์ชัน x64)
- แก้ไขข้อบกพร่องในการรับรู้อาร์กิวเมนต์ของฟังก์ชันที่ไม่ได้กำหนดซึ่งมีการลงทะเบียนซ้ำเป็นอาร์กิวเมนต์ที่แตกต่างกัน (เวอร์ชัน x64)
- เปลี่ยนการรับรู้ args การโทรที่ไม่ได้กำหนด โดยจะคาดการณ์ได้เพียง 4 args ที่ไม่ได้กำหนดตามค่าเริ่มต้น (เวอร์ชัน x86)
- การปรับโครงสร้างโค้ดบางส่วน
xAnalyzer 2.5.3
- การตรวจจับชื่อฟังก์ชันใน x64dbg เวอร์ชันใหม่กว่าได้รับการแก้ไขแล้ว
xAnalyzer 2.5.2
- ใช้บรรทัด disasm ที่เลือกในปัจจุบันสำหรับการวิเคราะห์โมดูลแทน cip
- แก้ไขการพิมพ์บางอย่างในรายการปลั๊กอิน
- การรีแฟคโค้ดบางส่วน
- แก้ไขคำสั่ง "xanal/xanalremove exe" เป็น "xanal/xanalremove module"
xAnalyzer 2.5.1
- แก้ไขข้อขัดข้องในรูปแบบคำสั่ง mov
xAnalyzer 2.5.0
- ลบคำสั่ง [EBP+/-] ออกจากอาร์กิวเมนต์ของผู้เรียกฟังก์ชันที่เป็นไปได้
- ลบคำนำหน้า "0x" ของค่าอาร์กิวเมนต์ของฟังก์ชันทั้งหมดเนื่องจากอนุมานเลขฐานสิบหก
- แก้ไขข้อโต้แย้งที่ตัวแปรตัวชี้จะไม่แสดงอย่างถูกต้องเป็นตัวชี้ แต่เป็นประเภทข้อมูลพื้นฐานแทน
- เพิ่มการรับรู้การใช้งานตัวชี้สแต็ก (ESP) เป็นอาร์กิวเมนต์ที่เป็นไปได้สำหรับการเรียกใช้ฟังก์ชัน (x86)
- เพิ่มการใช้ชื่อประเภทข้อมูลที่ถูกต้องในอาร์กิวเมนต์แทนชื่อประเภทข้อมูลทั่วไป/ฐาน
- เพิ่มฟังก์ชันการติดตามอัจฉริยะ (การคาดการณ์อัจฉริยะและการจดจำการเรียกใช้ฟังก์ชันทางอ้อม เช่น: CALL {REGISTER}, CALL {POINTER})
- เพิ่มชื่อของตัวชี้ฟังก์ชันเป็นพารามิเตอร์ (หากตรวจพบชื่อฟังก์ชันทั้งหมดจะถูกนำมาใช้แทนที่อยู่)
xAnalyzer 2.4.3
- เพิ่มการจดจำคำสั่ง MOV บน x86
- เพิ่มการจดจำฟังก์ชันด้วยคำต่อท้าย "Stub"
- แก้ไขข้อผิดพลาดใน "การวิเคราะห์อัตโนมัติ" (เพิ่มเงื่อนไขการตรวจสอบ EP เพิ่มเติม)
- ล้างตัวเลือกความคิดเห็นอัตโนมัติ/ป้ายกำกับอัตโนมัติที่ทำเครื่องหมายไว้ตามค่าเริ่มต้นแล้ว
xAnalyzer 2.4.2
- แก้ไข BoF เมื่อความคิดเห็นเกี่ยวกับการตั้งค่าสถานะอาร์กิวเมนต์เกิน MAX_COMMENT_SIZE
- แก้ไขข้อบกพร่องในการค้นหาชื่อฟังก์ชันเมื่อคำจำกัดความอยู่ในไฟล์ .api ไฟล์ที่สอง
xAnalyzer 2.4.1
- เพิ่มรูปแบบปุ่มลัดใหม่
- เพิ่มตัวเลือกใหม่เพื่อควบคุมข้อมูลการวิเคราะห์ก่อนหน้านี้ที่ควรลบ (ทำให้มีความเป็นไปได้ที่จะทำงานได้อย่างราบรื่นกับปลั๊กอินตัวโหลดแผนที่ เช่น SwissArmyKnife เป็นต้น)
- เพิ่มคำสั่งใหม่ (อันเก่าเลิกใช้แล้ว)
การเลือก xanal : ทำการวิเคราะห์การเลือก
ฟังก์ชัน xanal : ทำการวิเคราะห์ฟังก์ชัน
xanal exe : ทำการวิเคราะห์ปฏิบัติการทั้งหมด
xanalremove Selection : ลบการวิเคราะห์การเลือกก่อนหน้า
ฟังก์ชัน xanalremove : ลบการวิเคราะห์ฟังก์ชันก่อนหน้า
xanalremove exe : ลบการวิเคราะห์ที่ปฏิบัติการได้ก่อนหน้านี้ทั้งหมด
xanal help : นำข้อความช่วยเหลือบางส่วนขึ้นมาที่หน้าต่างบันทึก
- แก้ไขการวิเคราะห์อัตโนมัติไม่เริ่มทำงานเมื่อเริ่มต้น (ปิด #18)
- แก้ไขไฟล์คำจำกัดความ API ต่างๆ (ปิด #17)
xAnalyzer 2.4
- ไฟล์คำจำกัดความ API ใหม่และปรับปรุงพร้อมรูปแบบที่ปรับเปลี่ยนเล็กน้อย (13,000 API จากเกือบ 200 DLL)
- ระบบการรู้จำสัญลักษณ์สำหรับอาร์กิวเมนต์คำจำกัดความ API แต่ละรายการที่ใช้ (ประเภทข้อมูล enum มากกว่า 1,000 รายการและแฟล็ก 800+ รายการ)
- การรับรู้ประเภทข้อมูลพารามิเตอร์ (BOOL, NUMERIC, NON-NUMERIC)
- การตรวจจับ VB "DllFunctionCall" stubs
- สตริงที่ส่งผ่านเป็นอาร์กิวเมนต์นั้นสะอาดขึ้นแล้ว (ความคิดเห็นของดีบักเกอร์ตอนนี้ได้ตัดส่วนที่อยู่ออกแล้ว)
- เพิ่มสรุปการดำเนินการในหน้าต่างบันทึก
- คุณสมบัติปุ่มลัดถูกลบออก (จะถูกรวมไว้ในการแก้ไขในอนาคต) เนื่องจากบางส่วนขัดแย้งกับ x64dbg
- แก้ไขข้อบกพร่องต่างๆ
xAnalyzer 2.3.1
- แก้ไขข้อผิดพลาดเมื่อเปิดเมนู "วิเคราะห์การเลือก" โดยเลือกบรรทัดเดียว สิ่งที่ทำให้เกิดข้อยกเว้น dbg อย่างกะทันหัน (ขอบคุณ @blaquee)
- ตรวจสอบว่ามีโฟลเดอร์ไฟล์คำจำกัดความ "apis_def" และไฟล์คำจำกัดความอยู่ภายในหรือไม่ ก่อนที่จะโหลดปลั๊กอิน
- เปลี่ยนปุ่มลัดเป็น Ctrl+Shift+X เพื่อเลือก และ Ctrl+X สำหรับฟังก์ชัน
xAnalyzer 2.3
- เพิ่มตัวเลือก "วิเคราะห์ฟังก์ชันที่ไม่ได้กำหนด" (ปิดโดยค่าเริ่มต้น สิ่งใดก็ตามที่ไม่ได้อยู่ในไฟล์คำจำกัดความจะไม่ถูกวิเคราะห์)
- เพิ่มตัวเลือก "การวิเคราะห์อัตโนมัติ" (ปิดโดยค่าเริ่มต้น ทำการวิเคราะห์เมื่อเปิดตัวที่ EP ของปฏิบัติการที่แก้ไขข้อบกพร่องแล้ว)
- เพิ่มคุณสมบัติ "วิเคราะห์การเลือก" (ทำการวิเคราะห์คำแนะนำที่เลือก ซึ่งรองรับการโทรที่เลือกหลายสาย)
- เพิ่มฟีเจอร์ "วิเคราะห์ฟังก์ชัน" (ค้นหาและวิเคราะห์ฟังก์ชันปัจจุบันจากที่อยู่ที่เลือกโดยอัตโนมัติ)
- เพิ่มฟีเจอร์ "ลบการวิเคราะห์" จากการเลือก/ฟังก์ชัน/ปฏิบัติการ
- เพิ่มทางลัดคำสั่ง
- เพิ่มไอคอนใหม่
- เพิ่มการกำหนดค่าการบันทึกลงในไฟล์ .ini
- เพิ่มการใช้อักษรตัวพิมพ์ใหญ่ของค่าอาร์กิวเมนต์เลขฐานสิบหก
- คุณสมบัติที่ปรับโครงสร้างใหม่ "วิเคราะห์ปฏิบัติการได้" (ทำให้การวิเคราะห์เต็มรูปแบบของปฏิบัติการปัจจุบัน)
- เมนูที่ปรับโครงสร้างใหม่
- ใหม่เกี่ยวกับกล่องโต้ตอบตอนนี้จะแสดงหมายเลขเวอร์ชันเพื่อติดตามการอัปเดต
- แก้ไขข้อบกพร่องเล็กๆ น้อยๆ บางประการ
- แก้ไขและรวมไฟล์คำจำกัดความ API บางไฟล์เข้าด้วยกัน
- การปรับปรุงความเร็วและความเสถียร
xAnalyzer 2.2
- เพิ่มตัวบ่งชี้ความคืบหน้าการวิเคราะห์
- เพิ่มโหมดเชิงลึกการวิเคราะห์ใหม่
- ขณะนี้การวิเคราะห์อัตโนมัติจะดำเนินการเฉพาะในกรณีที่ไม่มีฐานข้อมูลสำรองอยู่
- แก้ไขข้อบกพร่องแล้ว
xAnalyzer 2.1.1
- อาร์กิวเมนต์ทั่วไปสำหรับฟังก์ชันที่ไม่ได้กำหนดและส่วนย่อยภายใน
- ความคิดเห็นและอาร์กิวเมนต์ของฟังก์ชันอัจฉริยะ (กำลังประมวลผลเฉพาะฟังก์ชันที่มีอาร์กิวเมนต์บนสแต็กเท่านั้น) ซึ่งช่วยให้ xAnalyzer มองเห็นโค้ดได้ชัดเจนขึ้นโดยเพียงแค่ประมวลผลและแสดงความคิดเห็นฟังก์ชันเหล่านั้นด้วยอาร์กิวเมนต์จริง
- การตรวจจับการเรียกใช้ฟังก์ชันทางอ้อมด้วย Scheme CALL -> DYNAMIC_MEMORY -> API
- การตรวจจับการเรียกใช้ฟังก์ชันทางอ้อมด้วย Scheme CALL -> REGISTER/REGISTER + DISPLACEMENT -> API
- การตรวจจับการเรียกใช้ฟังก์ชันทางอ้อมด้วย Scheme CALL -> JMP -> JMP -> API
- การตรวจจับลูปอัตโนมัติ
- แก้ไขข้อบกพร่องของผู้เยาว์
- การจัดเรียงโค้ดใหม่
xAnalyzer 2.0
- รองรับ x64 บิต
- รองรับการเปลี่ยนแปลงลำดับอาร์กิวเมนต์การเรียก API ใน x64 บิต
- รองรับข้อมูลเพิ่มเติมไฟล์ PDB ในการเรียก API
- รองรับการเรียก API โดยตรง/โดยอ้อม
- รองรับการเรียกฟังก์ชัน API แบบคงที่ไปยังโค้ดโมดูลหลัก
- แก้ไขลำดับอาร์กิวเมนต์การเรียก API ที่ไม่ถูกต้องหลายรายการในไฟล์คำจำกัดความ ขณะนี้สามารถตรวจพบการโทรและแสดงความคิดเห็นได้มากขึ้น
- การปรับปรุงบางอย่างและการเขียนโค้ดที่ดีขึ้น
- แก้ไขข้อผิดพลาดต่างๆ
xAnalyzer 1.2
- อัปเดตไฟล์คำจำกัดความของ API
- เพิ่มการรองรับไฟล์ปฏิบัติการ vc6+
xAnalyzer 1.1.1
- แก้ไขปัญหาที่ไม่แสดงข้อมูลของ API บนไฟล์ปฏิบัติการ VC++ เนื่องจากไม่ได้ทำความสะอาดโครงสร้าง BASIC_INSTRUCTION_INFO อย่างถูกต้องก่อน/หลังใช้งานในลูป
- เพิ่ม/อัพเดตไฟล์คำจำกัดความของ API
- แก้ไขข้อบกพร่องแล้ว
xAnalyzer 1.0
- การเปิดตัวครั้งแรก
ยินดีสนับสนุนการมีส่วนร่วมทุกประเภท ไม่เพียงแต่เป็นการประชาสัมพันธ์เท่านั้น แต่ยังรวมถึงการรายงานจุดบกพร่อง เอกสารประกอบ ฯลฯ
โปรดคำนึงถึงสิ่งต่อไปนี้:
ขอขอบคุณที่ใช้ปลั๊กอิน xAnalyzer...และขอให้มีความสุขกับทุกคน!