בקוד מקורי ב- Windows ניתן להתחבר לפונקציות על ידי החלפת הפרולוג שלה בהוראת JMP
.
האם יש דרך לעשות משהו דומה ביישום כתוב ב- Java? בסופו של דבר אני רוצה להקליט את כל הנתונים שנשלחו אל / מ- javax.net.ssl.SSLSocket
.
אני לא יכול לשנות את קובץ ה- jar או את ה- JRE בדיסק, מכיוון שהוא יעבור בערבות אם החשיפות לא יתאימו, אבל אני יכול להתחבר לכל פונקציה מקוד מקורי במהלך זמן הריצה.
יש לי פתרון עבודה כרגע, אבל זה מאוד מבולגן ולא כל כך גמיש. אני מתחבר ל- JNI_CreateJavaVM
ומכניס -Djavax.net.debug = all
לוויכוחים שהועברו אליו. זה גורם לכל הנתונים שנשלחו דרך השקע להיכתב לדיסק ואז אני מתחבר WriteFile
ליירט את הנתונים לפני שהם נכתבים לדיסק.
מצאתי משהו ש נראה קרוב למה שאני רוצה, הפרמטר -javaagent
, אך עד שהסוכן שלי נטען כל הספרייה הסטנדרטית של Java נטענת כך שאני לא רואה דרך לחבר אותו באמצעות סוכן.