עבור לתוכן

כלי שיאפשר לי למצוא פונקציה ספציפית בתוך DLL

Featured Replies

פורסם

שלום אנשים,

אני רוצה לערוך DLL מסויים (לא להוסיף פקודות אלא רק לשנות קבועים שהוגדרו כדי להגן על תוכנה מהיתקעות כשהיא מורצת על מחשבים חלשים משלי)

אני יודע את שם הפונקציה שאני רוצה לערוך ב- DLL, אבל לצערי אני לא מוצא אותה. למען האמת - אין לי מושג איך לחפש.

ניסיתי סוגי חיפושים שונים בעזרת OllyDbg אבל לצערי לא הצלחתי למצוא את הפונקציה הספציפית שאני מחפש

יש עצות? תוכנה יותר מתאימה לצרכיי אולי?

תודה ויום טוב

פורסם

ב-Dependency Walker אתה יכול לראות בדיוק איזה פונקציות יש ב-DLL ואת הכתובות שלהן. אני מניח שברגע שיש לך את הכתובת אתה יכול לפתוח את ה-DLL ב-Ollydbg ולהמשיך משם.

פורסם
  • מחבר

תודה! לצערי, לא מצאתי את הפונקציה שחיפשתי שם, מה שמוזר, כי מצאתי רפרנס אליה בקבצי סקריפט, וכשאני פותח את הDLL כקובץ TXT ועושה חיפוש רגיל, אני מוצא את הפונקציה שם...

אבל היא לא מופיעה בצורה של Function@Something@@Something Else כמו כל הפונקציות שהתוכנה מביאה לי... עכשיו כשאני חושב על זה, יכול להיות שטעיתי - כי הפונקציה נקראת מתוך אובייקט שהוא חלק מ- DATABASE (אובייקט שנוצר בעזרת SQL)

ועכשיו כשהסתכלתי על ה- DLL, אני רואה שלא רחוק (יחסית) משם הפונקציה שאני מחפש (שאגב, לפניה ואחריה מופיעים עוד הרבה שמות של פונקציות, לפני הסדר המילוני) יש התייחסות לקבצי H (נראה לי שמתוך ה-DLL עצמו)...

אז אני מניח שזה סוג של קומפילציה בזמן הריצה של התכנית? יותר מסובך ממה שציפיתי?

אם אין לך במקרה איזו תובנה בנושא שתעזור לי, אני כנראה אוותר עכשיו ואחכה שישחררו את קוד המקור של המשחק (Civilization 5, שמעתי ששחררו את קוד המקור של 4 ושמתכננים גם לשחרר מתישהו את זה של 5...) כי זה כנראה הרבה מעבר לרמה של קורס בארגון המחשב ושפות סף וקורס במערכות הפעלה..

בעצם, לפני שאני מוותר, יש דבר אחד אחרון שאני צריך לנסות - ובשביל זה אני צריך לדעת: מה זה ה- Odrinal ו- Hint? ואיך זה עוזר לי למצוא את מה שאני מחפש? כשאני פותח את ה- DLL עם OllyDbg, הכתובות שם הן כולן מספרים גדולים מאוד, מעבר למספרים שכתובים לי שם

ניסיתי להעזר ב- HELP של התוכנית, אבל משום מה זה לא נפתח לי...

פורסם

פשוט תחפש את הקבועים בקובץ ותקבע נקודת עצירה בכל פקודה שניגשת לקבועים

אם הקבוע בשימוש בפונקציה מסויימת אז לא יהיו הרבה נקודות כאלו ותמצא את המקום

שצריך לשנות מהר

פורסם
  • מחבר

פשוט תחפש את הקבועים בקובץ ותקבע נקודת עצירה בכל פקודה שניגשת לקבועים

אם הקבוע בשימוש בפונקציה מסויימת אז לא יהיו הרבה נקודות כאלו ותמצא את המקום

שצריך לשנות מהר

זה DLL גדול מאוד... טוב, תודה על העזרה אבל ויתרתי, זה מעבר לרמה שלי כנראה...

  • 2 שבועות מאוחר יותר...
פורסם

כתבתי לעצמי קוד כזה שעוזר לי לכתיבת shellcodes תהנה:

#include <windows.h>
#include <stdio.h>


int main()
{
HMODULE hmod_libname;
FARPROC fprc_func;
char * dll_name = "User32.dll";
char * func_name = "MessageBoxA";


hmod_libname = LoadLibrary(dll_name);
fprc_func = GetProcAddress(hmod_libname,func_name);


printf("%s is located at 0x%08x in %s\n",func_name,(unsigned int)fprc_func,dll_name);


}

פורסם

הקוד שלך שגוי.

מהסיבה הפשוטה שמיקום של קובצי dll או הקרנל לא קבועים בין גרסאות שונות של וינדוס

הערך שהתוכנית שלך תדפיס יהיה שונה כאשר עוברים לגירסה אחרת של וינדוס,ולכן shellcode

שישתמש בערך הזה יעבוד רק על גירסה אחת ויתרסק בגרסאות אחרות.

אם המטרה שלך היא לכתוב shellcode מומלץ לכתוב קוד שמוצא את הקרנל בצורה דינמית

אח"כ מוצא את loadlibrary/gerprocaddress בצורה דינמית ומשתמש בהם לטעון עוד פונקציות

פורסם

תודה רבה על המידע שלך על ASLR, ולא לא פניתי לעזרה בכתיבת shellcode, סך הכל סיפקתי לבחור משהו שחשבתי שעונה לו על הצרכים שלו

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים