Systrace สำหรับ Windows


87

ฉันกำลังมองหาเทียบเท่าของ Windows Systraceหรืออย่างน้อยstrace ฉันรู้จัก StraceNTแต่สงสัยว่ามีทางเลือกอื่นอีกหรือไม่ โดยเฉพาะอย่างยิ่งฉันกำลังมองหาวิธีที่เฉพาะเจาะจงในการบังคับใช้นโยบายการโทรระบบโดยทางโปรแกรมแม้ว่าจะเป็นไปตามข้อเท็จจริงแทนที่จะหยุดดำเนินการอย่างจริงจัง

มีวิธีที่ดีในการดำเนินการนี้หรือไม่?


ที่เกี่ยวข้องด้วย - stackoverflow.com/questions/864839/…
sashoalm

คำตอบ:


28

Logger.exe ของ WinDbg ใกล้เคียงกับ strace มากที่สุด: https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/logger-and-logviewer

แก้ไข: นอกจากนี้ยังมี wt ของ windbg: https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/wt--trace-and-watch-data-


4
อย่างไรก็ตามมันเหมือน ltrace มากกว่า strace เพราะจับการเรียกไลบรารีมากกว่า syscalls
Michael

@BrunoMartinez: คุณไม่จำเป็นต้องระบุที่อยู่หน่วยความจำสำหรับการใช้ strace
user2284570

41

ตัวเลือกบางอย่าง:

การตรวจสอบกระบวนการ

ดูบทความนี้เกี่ยวกับเครื่องมือที่มีอยู่ใน Windows 7:

เครื่องมือ Core OS


3
ฉันเพิ่งใช้ ProcessMonitor เพื่อค้นหาว่าเหตุใดกระบวนการจึงหยุดทำงาน - ปรากฎว่ามันพยายามเข้าถึงไฟล์ที่ไม่สามารถลบได้ ... จะไม่มีทางคิดได้เลยหากไม่มี ProcMon
Jamie Cook

2
ฉันใช้ strace ค่อนข้างน้อยบน Linux และเจอคำถามนี้ในขณะที่กำลังมองหาเครื่องมือที่คล้ายกันบน Windows เพื่อแก้ไขปัญหาที่ฉันพบกับ NANT ฉันลองใช้ Process Monitor ตั้งค่าตัวกรองให้รวมเฉพาะ Nant.exe และไม่รวมทุกอย่างอื่นนอกจากนี้ยังตั้งค่าตัวกรองสำหรับการเข้าถึงการลงทะเบียนเฉพาะที่ที่ฉันมีปัญหาและค้นหาปัญหาที่ฉันพบได้อย่างรวดเร็ว ขอแนะนำ Process Monitor
hshib

@ djhaskin987: ในกรณีของฉันฉันมีโปรแกรมที่โหลดไฟล์บางไฟล์ บัฟเฟอร์ให้เป็นʀᴀᴍ (จึงไม่เหลือที่จับ)และเกิดข้อผิดพลาด เนื่องจากไม่มีตัวตรวจสอบกระบวนการด้านซ้ายจึงไม่มีความช่วยเหลือ
user2284570

@hshib: ปัญหาเกี่ยวกับการตรวจสอบกระบวนการคือกระบวนการไม่จำเป็นต้องมีหมายเลขอ้างอิงในการเข้าถึงไฟล์ ดังนั้นในกรณีเช่นของฉัน(พยายามดูว่าไฟล์ config ใดทำให้เกิดข้อขัดข้อง)ก็ไม่ช่วยอะไร
user2284570

15

เครื่องมือ Dr. Memory ( http://drmemory.org ) มาพร้อมกับเครื่องมือติดตามการโทรของระบบที่เรียกว่า drstrace ซึ่งแสดงรายการการเรียกระบบทั้งหมดที่ทำโดยแอปพลิเคชันเป้าหมายพร้อมกับอาร์กิวเมนต์: http://drmemory.org/strace_for_windows.html

สำหรับการบังคับใช้นโยบายการเรียกระบบโดยใช้โปรแกรมคุณสามารถใช้เอ็นจิ้นพื้นฐานเดียวกันกับ drstrace: แพลตฟอร์มเครื่องมือ DynamoRIO ( http://dynamorio.org ) และไลบรารีการตรวจสอบการโทรระบบ DrSyscall ( http://drmemory.org/docs/page_drsyscall html ) สิ่งเหล่านี้ใช้เทคโนโลยีการแปลไบนารีแบบไดนามิกซึ่งจะมีค่าใช้จ่ายบางส่วน (20% -30% ในสถานะคงที่ แต่สูงกว่ามากเมื่อเรียกใช้โค้ดใหม่เช่นการเปิดแอปเดสก์ท็อปขนาดใหญ่) ซึ่งอาจเหมาะหรือไม่เหมาะกับวัตถุประสงค์ของคุณ


11

API Monitorดูมีประโยชน์มากสำหรับจุดประสงค์นี้


นี่เป็นโปรแกรมที่ยอดเยี่ยมแสดงพารามิเตอร์ของฟังก์ชันโดยละเอียด / ค่าที่ส่งคืนช่วยให้คุณสามารถเบรกพอยต์เมื่อตรงตามเงื่อนไขบางประการวิธีการเชื่อมต่อที่แตกต่างกันจำนวนมากจึงสามารถใช้กับกระบวนการจำนวนมากที่ไม่ต้องการให้ตรวจสอบ
yuikonnu

6

นี่เป็นบทความที่น่าสนใจฉันไม่รู้ว่ามันตรงกับเป้าหมายที่คุณกำลังมองหาหรือไม่ แต่ฉันคิดว่าคุณอาจพบว่ามันนำคุณไปในทิศทางที่คุณต้องการ

http://jbremer.org/intercepting-system-calls-on-x86_64-windows/


1
ขอบคุณนั่นเป็นสิ่งที่ดี ฉันเดาว่ามันหมายความว่าเรายังคงอยู่ห่างไกลจาก strace ที่ดีและใช้งานได้บน Windows ...
static_rtti

3

strace สามารถใช้ได้จาก Cygwin ในแพคเกจ Cygwin คุณสามารถดาวน์โหลดได้จากมิเรอร์ Cygwinตัวอย่างเช่น:

http://mirrors.sonic.net/cygwin/x86_64/release/cygwin/cygwin-2.0.2-1.tar.xz
#      |                      |                              |     |
#      +-----------+----------+                              +--+--+
#                  |                                            |
#               mirror                                       version

strace เป็นหนึ่งในโปรแกรม Cygwin เพียงไม่กี่โปรแกรมที่ไม่ต้องพึ่งพา Cygwin DLL ดังนั้นคุณควรคัดลอกstrace.exeไปยังที่ที่คุณต้องการและใช้งานได้


7
เป็นสิ่งที่ดี แต่ดูเหมือนว่าจะใช้ได้กับโปรแกรม cygwin อื่น ๆ เท่านั้น strace notepadคุณไม่สามารถ มันเปิดตัว notepad แต่ไม่ได้จับการเรียกระบบ
Michael Fox

3
@MichaelFox: ใช่มันจับเฉพาะการโทรไปที่ cygwin1.dll
user2284570

2

มีเครื่องมือมากมายที่สร้างขึ้นรอบ ๆ Xperf มันค่อนข้างซับซ้อน แต่มีประสิทธิภาพมาก - ดูคู่มือเริ่มต้นอย่างรวดเร็ว มีแหล่งข้อมูลที่มีประโยชน์อื่น ๆ ในหน้าการวิเคราะห์ประสิทธิภาพของ Windows


4
strace ไม่เกี่ยวข้องกับประสิทธิภาพ เพียงแค่พิมพ์ที่ระบบเรียกว่ากระบวนการทำให้ เครื่องมือประสิทธิภาพดูเหมือนจะไม่ทำเช่นนั้น
ม.ค. Hudec

1

straceรองรับโดยGitเนื่องจาก Michael Fox Mention อาจไม่มีประโยชน์สำหรับซอฟต์แวร์ที่ซับซ้อน / windows


1
นั่นคือโปรแกรมลินุกซ์ ใช้งานได้กับซอฟต์แวร์ / syscalls ของ Linus เท่านั้น
Henk Poley

0

คุณสามารถใช้การตรวจสอบกระบวนการที่เขียนโดย Mark Russinovich นี่เป็นแอปพลิเคชั่นเล็ก ๆ ที่ยอดเยี่ยมที่จะช่วยให้คุณสามารถเชื่อมต่อกับกระบวนการทำงานใด ๆ ในระบบและดูการเรียกใช้ระบบทั้งหมดที่กำลังดำเนินการอยู่

https://technet.microsoft.com/en-us/sysinternals/processmonitor.aspx


3
djhaskin987 ได้กล่าวถึง Process Monitor ในคำตอบก่อนหน้านี้แล้ว คุณควรแก้ไขคำตอบของเขาและแก้ไขคำอธิบายของคุณลงในคำตอบนั้น
unforgettableidSupportsMonica
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.