שְׁאֵלָה:
ממשק API של Java
Avery3R
2014-06-12 11:50:40 UTC
view on stackexchange narkive permalink

בקוד מקורי ב- Windows ניתן להתחבר לפונקציות על ידי החלפת הפרולוג שלה בהוראת JMP .

האם יש דרך לעשות משהו דומה ביישום כתוב ב- Java? בסופו של דבר אני רוצה להקליט את כל הנתונים שנשלחו אל / מ- javax.net.ssl.SSLSocket.

אני לא יכול לשנות את קובץ ה- jar או את ה- JRE בדיסק, מכיוון שהוא יעבור בערבות אם החשיפות לא יתאימו, אבל אני יכול להתחבר לכל פונקציה מקוד מקורי במהלך זמן הריצה.

יש לי פתרון עבודה כרגע, אבל זה מאוד מבולגן ולא כל כך גמיש. אני מתחבר ל- JNI_CreateJavaVM ומכניס -Djavax.net.debug = all לוויכוחים שהועברו אליו. זה גורם לכל הנתונים שנשלחו דרך השקע להיכתב לדיסק ואז אני מתחבר WriteFile ליירט את הנתונים לפני שהם נכתבים לדיסק.

מצאתי משהו ש נראה קרוב למה שאני רוצה, הפרמטר -javaagent , אך עד שהסוכן שלי נטען כל הספרייה הסטנדרטית של Java נטענת כך שאני לא רואה דרך לחבר אותו באמצעות סוכן.

במקרה הספציפי של שקע רשת, wireshark לא תהיה חלופה טובה יותר להתעסק עם שיעורי Java? לחלופין, אם אינך יכול לגרום ל- wireshark לפענח את התנועה מכיוון שאין לך גישה למפתח הפרטי של השרת, משהו כמו mitmproxy (http://www.mitmproxy.org/) או כנר (http: //www.telerik .com / כנר)?
האם שקלת לבנות את ה- JVM מהמקור ולהוסיף מכשור ל- JVM עצמו?
שתיים תשובות:
ekse
2014-06-12 19:43:26 UTC
view on stackexchange narkive permalink

עריכה : שאלה זו חופפת ל מכשור Java דינמי?

Jeong Wook אה האם מצגת ב- Blackhat 2012 הוא הסביר כיצד להתחקות אחר Java תוכניות על ידי שינוי קוד הבטט לשיטות קריאת וו, עיין בסעיף "אוטומציה" בעיתון. אין שום מקור או כלי זמין עד כמה שידוע לי.

יש גם כלי שנקרא Javasnoop שיש, לא בדקתי את זה. הוא משתמש ב- "צרף API" כדי לפקח על שיחות API. שיטה זו נראית נקייה יותר עבור מה שאתה רוצה לעשות.

מהקול של זה, שינוי סביר של bytecode לא צפוי לעבוד כאן בגלל היישומים שבוחנים את עצמם.
לגבי הכפילות, IMO זה תלוי אם אתה מחשיב מעקב ומכשור כמו חיבור. משמעות המילים: הוקינג לי היא הכנסת פיסת קוד כלשהי שיכולה גם לשנות את הפרמטרים, את הפלט של הפונקציה ולהשפיע על מצב התוכנית. בהחלט יש חפיפה מסוימת, אך הכוונה, אולי תקופת זמן ריצה מקובלת והדרישות ברמת האינטראקציה של המשתמש עשויות להיות שונות מאוד.
אתה צודק, שכפול לא היה המונח הנכון, זאת אומרת שזה כ"קפד לבדוק גם שאלה זו כדי לקבל תשובות ". ניסחתי את זה מחדש ל"שאלה זו חופפת ".
offbyseveral
2014-06-19 19:45:00 UTC
view on stackexchange narkive permalink

השתמשתי בעבר ב- javasnoop בעבודות. השתמש ב- AspectJ, יש לכך גם עקומת למידה אבל זה בהחלט הפיתרון הנכון עבורך.

האם יש לך סימוכין כיצד להשתמש ב- AspectJ לחיבור / מכשור?
זה כל מה שהוא עושה. התיעוד הרשמי.


שאלה ותשובה זו תורגמה אוטומטית מהשפה האנגלית.התוכן המקורי זמין ב- stackexchange, ואנו מודים לו על רישיון cc by-sa 3.0 עליו הוא מופץ.
Loading...