المشاركات : 418
المواضيع 50
:
: 0
الإنتساب : Sep 2009
مثال جميل ولكنه لا يعمل على DXE
إقتباس :if MapAndLoad(PChar(FileName), nil, @imageinfo, True, True) then
بسبب PChar
وعند تغيره الى PِAnsiChar
لا تعطي اي نتيجة
هناك سؤال!!
عندما تكون هناك الالاف Methods
كيف اجد ضالتي؟
المشاركات : 9
المواضيع 1
:
: 0
الإنتساب : Jul 2010
أخي cargem فقط مشغول قليلاً هذه الأيام
متى كنت فارغ سأبحث عن كيفية التحويل للدلفي, ولكن لا تتوقع مني الكثير لأنني لا زلت صاحب أسبوعين في الدلفي
المشاركات : 563
المواضيع 28
:
: 0
الإنتساب : Dec 2008
'عندما تكون هناك الالاف Methods'
- أنت ما هدفك ؟ كل الدوال أم دالة أم بلوك أم ......
- ماذا تريد بالظبط أخي ؟
المشاركات : 418
المواضيع 50
:
: 0
الإنتساب : Sep 2009
لقد وجدت اسم الروتين
إقتباس :?Calculation@Fproj@@mngty@k
والان كيف ننفذ دالة تحتوي على رموز مثل ؟ و@
لقد حاولت تغير اسم الدالة في قائمة export
عن طريق hex workshop
ولكن بدون فائدة
ما الحل؟
كيف تنفيذ دالة عن طريق indix الدالة؟
المشاركات : 418
المواضيع 50
:
: 0
الإنتساب : Sep 2009
index of procedure=2345
كود :
procedure TForm1.Button1Click(Sender: TObject);
Var
dll_Handle: THandle;
?Calculation@Fproj@@mngty@k: procedure(w, n, u: Char);
Begin
dll_Handle := LoadLibrary(PChar(ExtractFilePath(ParamStr(0)) +
'nameofdll.Dll'));
If dll_Handle <> 0 Then
@?Calculation@Fproj@@mngty@k := GetProcAddress(dll_Handle,
'?Calculation@Fproj@@mngty@k');
If @?Calculation@Fproj@@mngty@k <> Nil Then
?Calculation@Fproj@@mngty@k('A', 'B', 'H'); // Else .... .
FreeLibrary(dll_Handle);
// Else ....;
End;
المشاركات : 842
المواضيع 49
:
: 65
الإنتساب : Jun 2010
السلام عليكم
بالنسبة لـ
إقتباس :مثال جميل ولكنه لا يعمل على dxe
اقتباس:
If mapandload(pchar(filename), nil, @imageinfo, true, true) then
بسبب pchar
جرب
إقتباس : if mapandload(pansichar(filename), nil, @imageinfo, true, true) then
بالتوفيق
المشاركات : 418
المواضيع 50
:
: 0
الإنتساب : Sep 2009
22-06-2011, 05:24 PM
(آخر تعديل لهذه المشاركة: 24-06-2011, 02:59 PM بواسطة kachwahed.)
الحل هو كما علمتنا استاذ
كود :
if mapandload(pansichar(ansistring(filename)), nil, @imageinfo, true,
true) then
ثم
كود :
name := pansichar(imagervatova(imageinfo.fileheader,
imageinfo.mappedaddress, pnamervas^[i], pdummy));
list.add(name);
انت تريد ان تختبرني هههه
المشاركات : 418
المواضيع 50
:
: 0
الإنتساب : Sep 2009
22-06-2011, 07:11 PM
(آخر تعديل لهذه المشاركة: 22-06-2011, 09:37 PM بواسطة kachwahed.)
كيف نستخرج عنوان Method
وننفذه
كود :
procedure ListDLLExports(const FileName: string; List: TStrings);
type
TDWordArray = array [0 .. $FFFFF] of DWORD;
var
imageinfo: LoadedImage;
pExportDirectory: PImageExportDirectory;
dirsize: Cardinal;
pDummy: PImageSectionHeader;
i: Cardinal;
pNameRVAs: ^TDWordArray;
Name, AddressOfFunctions: string;
begin
List.Clear;
(* function MapAndLoad(ImageName, DllPath: LPSTR; LoadedImage: PLoadedImage;
DotDll, ReadOnly: Bool): Bool; stdcall; *)
if MapAndLoad(PAnsiChar(AnsiString(FileName)), nil, @imageinfo, True,
True) then
begin
try
// Form1.Label2.Caption :='Address Of Dll = ' + AnsiString(@imageinfo) ;
pExportDirectory := ImageDirectoryEntryToData(imageinfo.MappedAddress,
False, IMAGE_DIRECTORY_ENTRY_EXPORT, dirsize);
if (pExportDirectory <> nil) then
begin
pNameRVAs := ImageRvaToVa(imageinfo.FileHeader, imageinfo.MappedAddress,
DWORD(pExportDirectory^.AddressOfNames), pDummy);
for i := 0 to pExportDirectory^.NumberOfNames - 1 do
begin
Name := PAnsiChar(ImageRvaToVa(imageinfo.FileHeader,
imageinfo.MappedAddress, pNameRVAs^[i], pDummy));
// AddressOfFunctions := PAnsiChar(pExportDirectory^.AddressOfFunctions) ;
List.Add(Name);
end;
end;
finally
UnMapAndLoad(@imageinfo);
end;
end;
end;
المشاركات : 418
المواضيع 50
:
: 0
الإنتساب : Sep 2009
لقد حليت المشكلة
تحياتي للجميع