DLL - nó là gì và làm thế nào để mở nó. Thông tin thêm về thư viện tĩnh và động

Dll là phần mở rộng của các tệp thuộc loại những tài liệu tham khảo khi thực hiện các chương trình nhất định. Tên loại tệp là viết tắt của “ thư viện liên kết động". Các thư viện động này có thể được sử dụng bởi các ứng dụng khác nhau cùng một lúc. Theo một cách nào đó, chúng cũng tương tự nhau. đến các tệp thực thi tuy nhiên, khác nhau về ý nghĩa của một số trường. Ví dụ nổi bật nhất là tệp trình điều khiển, mô tả các quy tắc tương tác giữa thiết bị và hệ điều hành.

Cách mở DLL

Trước khi nói về cách mở các tệp này, bạn nên thu hút sự chú ý của người dùng đến thực tế là không có điểm cụ thể nào khi mở loại thư viện này. Chúng chứa thông tin cần thiết để chương trình thực thi. Rất hiếm khi các biến quan trọng (và không phải cách chúng được gọi) hoặc dữ liệu được lưu trữ trong loại tệp này. Mặc dù, công bằng mà nói, chúng tôi lưu ý rằng có một số công ty vẫn quản lý để xác định thông tin cần thiết để các chương trình hoạt động trong dll.

Thư viện động, thực sự đôi khi được hiển thị dịch ngượcđể có được các quy tắc và nguyên tắc làm việc được lưu trữ trong đó. Đối với điều này, có một số đặc biệt chương trình.

Ưu điểm của chương trình cũng là khả năng làm việc với các loại tệp khác nhau thư viện và thậm chí chỉnh sửa một số trong số chúng. Nhưng cần phải nhắc lại một lần nữa - thông tin này được gửi hoàn toàn cho làm quen Cố gắng thay đổi tệp bằng phần mở rộng ..dll là một trong những ý tưởng tồi tệ nhất mà người dùng có thể nghĩ ra.


Chương trình này có phẩm giá? Một số lượng lớn - phạm vi tác phẩm có thể được thực hiện trên đó chỉ bị giới hạn bởi trí tưởng tượng của chủ sở hữu. MỘT khuyết điểm chỉ một, nhưng quan trọng - hàng năm đăng ký là khoảng $ 500.

Phương pháp cài đặt trong hệ thống

Nhưng nếu chúng ta không phải viết và chỉnh sửa thư viện, như những người dùng bình thường, thì kiến ​​thức về cài đặt của chúng có thể hữu ích. Thực tế là không phải tất cả các chương trình đều được cung cấp đầy đủ các thư viện cần thiết và người ta cho rằng cùng với chúng là các thành phần riêng lẻ được cài đặt (một chi tiết rất phổ biến khi cài đặt trò chơi) đã bị người dùng quên. Sau đó, nó cần bộ, hay đúng hơn Đăng ký tệp dll.

Trước tiên, bạn cần phải tìm tệp chính nó. May mắn thay, với việc tìm kiếm cẩn thận, nó không quá khó và các thư viện cần thiết được tìm thấy khá thường xuyên, thậm chí tách biệt với gói, điều này không ảnh hưởng đến công việc của họ. Điều đáng chú ý là trong trường hợp trò chơi, đây là d3dx.dll có thể không có mặt trên hệ thống - trong trường hợp này, tốt hơn là cài đặt gói DirectX và không cài đặt 150 thư viện theo cách thủ công.

Nhưng nếu cần Đăng ký dll mới để chạy chương trình, tốt hơn là đặt nó trong thư mục với chương trình. Trong Windows 7 trở lên, có khả năng mở dòng lệnh từ danh mục, trong các trường hợp khác, nó sẽ mở ra dòng lệnh và sử dụng lệnh đĩa CDđến thư mục mong muốn.

Đối với các phiên bản hệ điều hành được chỉ định, nó là đủ mở ra thư mục mong muốn và giữ phím shift, nhấp vào một khoảng trống kích chuột phải... Đáp lại, một menu ngữ cảnh thuộc loại sau sẽ bật lên trước mặt chúng ta:

Bấm vào " mở cửa sổ lệnh". Một dòng lệnh sẽ xuất hiện trước mặt chúng ta, nơi chúng ta cần đăng ký những điều sau:

regsvr32 dllname.dll

Lệnh này sẽ thêm thư viện vào danh sách các thư viện được hệ thống sử dụng, tiết kiệm thời gian cho các phương pháp cài đặt khác. Đến sự hủy bỏđăng ký, bạn nên sử dụng lệnh sau:

regsvr32 -u dllname.dll

Điều quan trọng cần lưu ý dllname.dll được nhập làm ví dụ và thay vì mọi thứ được viết ở bên trái dấu chấm (nghĩa là thay vì dllname), bạn nên nhập tên tệp của mình. Hình ảnh hiển thị một tệp dll được thêm vào Windows 10 bởi directX8.

Bằng cách đơn giản như vậy, bạn có thể cài đặt thư viện trên hệ thống. Tuy nhiên, nếu quan sát thấy các trục trặc hoặc lỗi nhỏ nhất, thì bạn nên thực hiện ngay một lệnh khác, xóa đăng ký và liên hệ với chuyên gia về chương trình có vấn đề.

Tệp DLL có thể được mở bằng phần mềm đặc biệt. Có 2 loại định dạng DLL, mỗi định dạng sẽ mở bằng các chương trình khác nhau. Để mở loại định dạng được yêu cầu, hãy nghiên cứu mô tả của các tệp và tải xuống một trong các chương trình được đề xuất.

Cách mở tệp dll

HELPER.DLL sẽ giúp bạn tìm và cài đặt bất kỳ DLL nào bị thiếu hoặc bị hỏng.

Tệp DLL chứa các cài đặt cho các liên kết đến các tài nguyên khác nhau được chương trình sử dụng, chẳng hạn như các biểu tượng. DLL dành riêng cho Windows. Trên các hệ điều hành khác, các tệp như vậy chỉ có thể được mở bằng trình giả lập (ngoại trừ các ứng dụng đa nền tảng cho Mac OS). Cần nhớ rằng các chương trình hiện đại không hỗ trợ tệp cho kiến ​​trúc 16-bit.

Các biện pháp phòng ngừa

Trong hầu hết các trường hợp, người dùng không cần mở các tệp định dạng DLL, vì chúng chỉ dành cho các nhà phát triển. Việc chỉnh sửa tệp này có thể ảnh hưởng xấu đến hiệu suất của các chương trình riêng lẻ và hệ điều hành, vì lý do này, bạn cần tìm tệp Dll và tạo một bản sao của nó.

Công cụ mở tệp DLL

Xem mã nguồn

Một trong những cách phổ biến nhất để xem tiện ích mở rộng Dll là. Chương trình có sẵn các chức năng để dịch ngược một số tệp, vì vậy bạn có thể gỡ lỗi dlls, và quan trọng nhất là nó hoàn toàn miễn phí. Tất nhiên, không thể đảm bảo hiển thị đúng mã cho tất cả các tệp.

Ngoài ra, bạn có thể sử dụng trình dịch ngược dotPeek. Nó cũng miễn phí, nhưng nó có thể hoạt động độc quyền với các chương trình được viết bằng C #.

Cấu hình giao diện chương trình

Phù hợp nhất cho mục đích này. Với chương trình này, bạn có thể dễ dàng thay đổi các biểu tượng, hộp thoại hoặc thiết lập hoạt ảnh của riêng bạn. Thật không may, chương trình được trả tiền ngay cả khi sử dụng phi thương mại. Xin lưu ý rằng sự cố có thể xảy ra với các tệp lớn (khoảng 1 GB trở lên).

Gỡ lỗi

Cách dễ nhất là sử dụng Visual Studio của Microsoft. Đây là một công cụ khá chức năng, có các tính năng bao gồm gỡ lỗi chương trình, nhưng nó sẽ chỉ hữu ích nếu tệp không được bảo vệ.

Nếu bạn chỉ cần tải xuống một tệp DLL thay vì một tệp bị hỏng (hoặc không có Dll), thì DLL-helper - một chương trình hoàn toàn miễn phí sẽ giúp bạn ở đây.

Các trang web động

Có một định dạng DLL khác - các tệp tạo mã cho các trang web. Các thư viện như vậy có thể được mở trong bất kỳ môi trường phát triển thuận tiện nào, ví dụ: Visual Studio... Trình duyệt sẽ giúp bạn kiểm tra chúng trong hoạt động. Tốt hơn là sử dụng các phiên bản mới nhất của các trình duyệt phổ biến, nếu không tệp có thể không hiển thị chính xác.

Một trang web được tạo tự động khi người dùng được truy cập. Có thể kết hợp các tập lệnh phía máy chủ như Perl hoặc tạo -code cho các trang web.

Các trang web trong tệp mở rộng DLL thường được lưu trữ trên máy chủ web Microsoft IIS. Phần mở rộng DLL phải được ánh xạ tới công cụ tạo tập lệnh máy chủ thích hợp để trang hiển thị chính xác.

Tệp thư viện đã biên dịch có chứa một tập hợp các thủ tục và / hoặc trình điều khiển được tham chiếu và thực thi bởi một chương trình. Cho phép các chương trình khác nhau truy cập các chức năng hệ thống có sẵn công khai thông qua các thư viện tiêu chuẩn. Có thể được liên kết động trong một chương trình khi nó đang chạy.

Nhiều tệp DLL (được đọc bởi DLL) được cung cấp bởi hệ điều hành Windows, những tệp khác được bao gồm trong các chương trình Windows. Chúng cũng cung cấp các chức năng phần mềm khác nhau như kết nối với các thiết bị bên ngoài và đầu vào và đầu ra đĩa cứng. Chúng cũng có thể được tham chiếu bởi các ứng dụng Mac đa nền tảng.

Lưu ý: Việc xóa hoặc sửa đổi nội dung của tệp DLL có thể gây ra lỗi trong chương trình liên kết đến tệp. Do đó, không nên mở hoặc chỉnh sửa tệp DLL.

Bạn ở đây vì bạn có một tệp có phần mở rộng tệp kết thúc bằng .dll. Các tệp có phần mở rộng .dll chỉ có thể được khởi chạy bởi một số chương trình. Có thể các dlls là các tệp dữ liệu chứ không phải tài liệu hoặc phương tiện, có nghĩa là chúng hoàn toàn không được dùng để xem.

tệp & nbsp.dll & nbsp là gì?

Các tệp DLL này còn được gọi là tệp Thư viện liên kết động và nội dung của tệp được đính kèm với phần mở rộng .dll là tập hợp các tài nguyên đã biên dịch như chỉ thị, quy trình và thư viện trình điều khiển được các ứng dụng Windows nhúng và thứ ba yêu cầu các chương trình bên được phát triển cho Microsoft Windows. Các tệp DLL này cho phép các chương trình Windows chia sẻ tài nguyên trong thư viện đã biên dịch với các ứng dụng khác. Trong thời gian chạy, một số ứng dụng này có thể được liên kết với các tài nguyên DLL này. Hầu hết các tệp DLL này đã được đóng gói với hệ thống Microsoft Windows, mặc dù một số chương trình cung cấp tài nguyên DLL của riêng chúng sau khi cài đặt. Một số tệp DLL này tạo điều kiện giao tiếp giữa hệ thống Windows, các ứng dụng nhúng hoặc bên thứ ba tương ứng và tài nguyên trình điều khiển cần thiết cho các thiết bị I / O bên ngoài và bên trong.

làm thế nào để mở tệp .dll?

Tệp Start.dll hoặc bất kỳ tệp nào khác trên PC của bạn bằng cách nhấp đúp vào tệp đó. Nếu các liên kết tệp của bạn là chính xác, ứng dụng dùng để mở tệp dll của bạn sẽ mở nó. Bạn có thể cần tải xuống hoặc mua ứng dụng chính xác. Cũng có thể bạn có ứng dụng chính xác trên máy tính của mình, nhưng các tệp the.dll chưa được liên kết với nó. Trong trường hợp này, khi bạn cố gắng mở tệp .dll, bạn có thể cho Windows biết ứng dụng nào phù hợp với tệp đó. Từ đó, mở tệp .dll sẽ mở ứng dụng chính xác.

ứng dụng mở tệp .dll

Hệ điều hành Microsoft Windows

Nền tảng Hệ điều hành Microsoft Windows chủ yếu sử dụng các tệp có phần mở rộng .ANI, một định dạng tệp đồ họa được sử dụng cho con trỏ chuột động, cũng được định nghĩa là Con trỏ hoạt hình Windows. Các tệp này có cùng chức năng với định dạng tệp CUR hoặc được gọi là Con trỏ tĩnh; sự khác biệt của nó là trở thành một con trỏ hoạt ảnh với việc sử dụng các chuỗi hình ảnh để hiển thị hoạt ảnh. Định dạng này dựa trên định dạng tệp RIFF của Microsoft, được sử dụng làm bộ nhớ để giữ các khung hình riêng lẻ, là biểu tượng Windows điển hình của hoạt ảnh. Loại tệp này thường được tích hợp trong một chủ đề tùy chỉnh cho máy tính để bàn và rất hữu ích để cá nhân hóa hệ thống CPU. Hoạt ảnh cuối cùng của nó được thiết kế với một số khung biểu tượng được sử dụng để hiển thị một hình ảnh duy nhất này đến hình ảnh khác để tạo hoạt ảnh. Mặc dù có một số khung hình sử dụng định dạng biểu tượng, một phần dữ liệu được lưu trữ trong tệp con trỏ hoạt ảnh sẽ xử lý thứ tự của bước, độ dài, tiêu đề và tác giả của hoạt ảnh.

lời cảnh báo

Hãy cẩn thận không đổi tên phần mở rộng thành tệp & nbsp.dll & nbsp hoặc bất kỳ tệp nào khác. Điều này sẽ không thay đổi loại tệp. Chỉ một chương trình chuyển đổi chuyên dụng mới có thể thay đổi tệp từ loại tệp này sang loại tệp khác.

phần mở rộng tệp là gì?

Phần mở rộng tệp là tập hợp ba hoặc bốn ký tự ở cuối tên tệp, trong trường hợp này, & nbsp.dll. & Nbsp Phần mở rộng tệp cho bạn biết đó là loại tệp nào và cho Windows biết chương trình nào cần mở. Windows thường liên kết một chương trình mặc định cho mỗi phần mở rộng tệp, để khi bạn bấm đúp vào tệp, chương trình sẽ tự động khởi động. Trong khi chương trình không còn trên máy tính của bạn, đôi khi bạn có thể nhận được thông báo lỗi khi cố gắng mở tệp tương ứng.

DLL là tên viết tắt của Thư viện liên kết động. Thư viện tài nguyên và quy trình động cho phép bạn sử dụng lại các mô-đun đã viết trước đó. Tệp thư viện có thể bao gồm, ví dụ, thủ tục, biểu tượng. Nó được yêu cầu cho hoạt động của hệ điều hành Windows.

Thư viện lập trình là một tập hợp các chương trình mà bạn có thể tham khảo khi phát triển phần mềm. Một tập hợp các chương trình nhỏ được bao gồm động trong một tập hợp lớn khi được gọi là một phần cấu thành. Ưu điểm của tệp DLL là không chiếm RAM, nhưng được tải nếu cần thiết trong quá trình hoạt động (Run-time), giúp tiết kiệm RAM đáng kể. Chương trình DLL có thể hoạt động với các thiết bị: máy in, máy quét. Khi làm việc với văn bản trong MS Word, không cần sự hiện diện liên tục của máy in DLL. Nếu tài liệu được in, thì MS Word truy cập thư viện liên kết động và gọi chương trình DLL tương ứng cho máy in.


Một tập hợp các quy trình động có thể được sử dụng đồng thời trong một số chương trình đang chạy - đây là một điểm cộng khác. Đó là lý do tại sao chúng vẫn được gọi là "thư viện công cộng". Điểm mấu chốt là chỉ một bản sao của thư viện động được tải vào RAM và tất cả các chương trình hiện đang hoạt động đều truy cập vào nó. Điều này cũng dẫn đến việc tiết kiệm tài nguyên RAM. Ngoài các chương trình con quan trọng, DLL chứa các chức năng bổ sung. Chúng có thể được sử dụng làm Plug-in, do đó nhân rộng chức năng của chương trình. Sự vắng mặt của mô-đun cần thiết trong DLL làm cho chương trình chính không thể hoạt động. Đây là chất lượng tiêu cực của một thư viện động.


Các tệp từ thư viện động có phần mở rộng tiêu chuẩn trong mỗi hệ điều hành: trong OS / 2 và MS Windows - ".dll"; Mac OS - ".dylib"; UNIX - ".so". Các tệp như vậy được lưu trữ ở một vị trí cụ thể. Ví dụ: trong "System32". Khi viết một ứng dụng, người lập trình chỉ định tên của hàm cần thiết và tên của thư viện mà nó nằm trong đó. Bản thân mã chương trình con không được viết bằng mã nguồn, điều này giúp đơn giản hóa quá trình lập trình rất nhiều. Nguyên tắc này dựa trên mã hóa mô-đun phổ biến trước đây. Các chương trình đơn giản được thiết kế dưới dạng các mô-đun riêng biệt, điều này khiến bạn không thể viết lại chúng mỗi lần, mà có thể đưa chúng vào mã của một chương trình mới ở dạng hoàn thiện - một mô-đun đã biên dịch.


Ngoài mã thực thi của các thủ tục và hàm, thư viện động có thể lưu trữ các tệp đồ họa và video. Việc sử dụng chúng cho phép bạn tiết kiệm không chỉ RAM mà còn cả dung lượng ổ đĩa. Nhiều ưu điểm của thư viện DLL không bị giảm bởi một nhược điểm - cần thêm thời gian để tải các mô-đun. Ưu điểm của chúng là rõ ràng, do đó chúng được các lập trình viên sử dụng rộng rãi trong hầu hết các chương trình.


Hãy hết sức cẩn thận khi làm việc: không bao giờ thay đổi phần mở rộng ".dll" thành một cái gì đó khác, không chuyển các tệp này sang một thư mục khác. Việc gán hậu tố ".dll" cho tệp sẽ không thay đổi kiểu của nó. Một ứng dụng đặc biệt được yêu cầu để chuyển đổi. Thông thường, các lỗi trong Windows liên quan đến việc không có tệp ".dll" được yêu cầu.

Và IBM OS / 2; một thư viện động cho phép sử dụng nhiều ứng dụng phần mềm khác nhau. DLL cũng bao gồm các điều khiển và trình điều khiển ActiveX. Trong thế giới UNIX, các chức năng tương tự được thực hiện bởi cái gọi là. đối tượng được chia sẻ ("đối tượng được chia sẻ").

Định dạng tệp DLL tuân theo các quy ước giống như định dạng tệp thực thi, kết hợp mã, bảng và tài nguyên.

Mục tiêu tiêm DLL

Ý tưởng ban đầu là sự ra đời của các tệp DLL sẽ tổ chức hiệu quả bộ nhớ và không gian đĩa chỉ sử dụng một phiên bản của mô-đun thư viện cho các ứng dụng khác nhau. Điều này đặc biệt quan trọng đối với các phiên bản đầu tiên của Microsoft Windows với các hạn chế nghiêm trọng về bộ nhớ.

Hơn nữa, nó được cho là sẽ cải thiện hiệu quả của việc phát triển và sử dụng các công cụ hệ thống do tính mô-đun. Việc thay thế các chương trình DLL từ phiên bản này sang phiên bản khác được cho là cho phép hệ thống phát triển độc lập mà không ảnh hưởng đến các ứng dụng. Ngoài ra, các tệp DLL có thể được sử dụng bởi các loại ứng dụng khác nhau - ví dụ: Microsoft Office, Microsoft Visual Studio, v.v.

Sau đó, ý tưởng về mô-đun đã phát triển thành khái niệm COM.

Trên thực tế, lợi ích đầy đủ của việc tiêm DLL đã không đạt được do một hiện tượng được gọi là địa ngục DLL. DLL Hell xảy ra khi nhiều ứng dụng yêu cầu các phiên bản DLL khác nhau, không hoàn toàn tương thích cùng một lúc, điều này khiến các ứng dụng này gặp sự cố. Khi hệ thống phát triển đến một kích thước nhất định, số lượng DLL bắt đầu vượt quá hàng nghìn, không phải tất cả chúng đều có độ tin cậy và khả năng tương thích hoàn toàn, và xung đột DLL Hell bắt đầu phát sinh rất thường xuyên, làm giảm đáng kể độ tin cậy tổng thể của hệ thống. Các phiên bản sau của Microsoft Windows bắt đầu cho phép sử dụng đồng thời các phiên bản DLL khác nhau, điều này đã phủ nhận những ưu điểm của nguyên tắc mô đun ban đầu. Việc sử dụng các phiên bản Dll khác nhau trở nên khả thi nhờ tệp kê khai, tệp này được lưu trữ trong tài nguyên ứng dụng hoặc dưới dạng tệp riêng biệt trong cùng thư mục với ứng dụng.

Ví dụ về việc sử dụng DLL trong các ngôn ngữ khác nhau

Xuất sang DLL

Delphi

thư viện Ví dụ; (Chúng tôi thực hiện một số thao tác và trả về kết quả) function AddNumbers (a, b: Double): Double; cdecl; begin AddNumbers: = a + b end; (Hàm này được xuất) xuất AddNumbers; (Bộ khởi tạo DLL, tương tự của hàm main () trong C và C ++) bắt đầu kết thúc.

C và C ++

#bao gồm #define DLLEXPORT extern "C" __declspec (dllexport) // extern "C" biểu thị việc sử dụng chữ ký hàm đơn giản // thế hệ (C-style) khi truy xuất tệp đối tượng. Đặc biệt, nó cấm trình biên dịch C ++ // để "trang trí" (hoặc "trang trí") tên hàm // với các ký hiệu bổ sung khi xuất sang DLL / * Hàm này được xuất * / DLLEXPORT double AddNumbers (double a, double b) // Nguyên mẫu hàm (hàm không có nội dung). Theo chữ ký hàm được khai báo này, việc tìm kiếm nội dung của nó // khi liên kết sẽ được thực hiện bên dưới hoặc trong một tệp nhị phân khác; / * Hàm khởi tạo DLL, tương tự của hàm main () * / bool APIENTRY DllMain (HANDLE hModule, DWORD dwReason, LPVOID lpReserved) (trả về TRUE;) / * Nội dung (triển khai) của nguyên mẫu hàm được khai báo ở trên. Thực hiện một số hành động và trả về kết quả * / DLLEXPORT double AddNumbers (double a, double b) (return a + b;)

Nhập DLL

Delphi

chương trình Ví dụ; ($ APPTYPE CONSOLE) (Chúng tôi chỉ ra rằng hàm nằm trong DLL) function AddNumbers (a, b: Double): Double; cdecl; bên ngoài "Example.dll"; (Chúng tôi sử dụng hàm như bình thường) var result: Double; kết quả bắt đầu: = AddNumbers (1, 2); Writeln ("Kết quả là:", kết quả) kết thúc.

C và C ++

#bao gồm / * * Chúng tôi chỉ ra rằng phần thân của hàm nằm trong một tệp khác. * Đừng quên về mô-đun đối tượng DLL khi liên kết! * / extern "C" __declspec (dllimport) double AddNumbers (double a, double b); / * Sử dụng hàm như bình thường * / int main (int argc, char ** argv) (double result = AddNumbers (1, 2); printf ("Kết quả là:% f \ n", result); return 0; )

Tải và nhập từ DLL trong thời gian chạy

Delphi

chương trình Ví dụ; ($ APPTYPE CONSOLE) var kết quả: Double; LibHandle: Hmodule; AddNumbers: function (a, b: Double): Double; begin LibHandle: = LoadLibrary ("Ví dụ.dll"); // tải DLL nếu LibHandle<>0 then begin @AddNumbers: = GetProcAddress (LibHandle, "AddNumbers"); // ghi nhớ địa chỉ // của hàm bắt buộc if @AddNumbers<>nil then begin result: = AddNumbers (1, 2); // sử dụng hàm Writeln ("Kết quả là:", result); kết thúc; FreeLibrary (LibHandle); // dỡ bỏ kết thúc DLL; kết thúc.

C và C ++

#bao gồm #bao gồm / * * Loại hàm được sử dụng * (kết hợp các loại tham số và giá trị trả về) * / typedef double (* importFunction) (double, double); int main (int argc, char ** argv) (importFunction addNumbers; double result; / * Nạp DLL vào bộ nhớ * / HINSTANCE hinstLib = LoadLibrary ("Example.dll"); if (hinstLib == NULL) (printf ("LỖI : không thể tải DLL \ n "); return 1;) / * Lấy con trỏ đến hàm * / addNumbers = (importFunction) GetProcAddress (hinstLib," AddNumbers "); if (addNumbers == NULL) (printf (" LỖI : không thể tìm thấy hàm DLL \ n "); return 1;) / * Gọi hàm thông qua một con trỏ * / result = addNumbers (1, 2); / * * Tải xuống DLL (về nguyên tắc, điều này sẽ được thực hiện * tự động khi chương trình thoát) * / FreeLibrary (hinstLib); / * Hiển thị kết quả * / printf ("Kết quả là:% f \ n", result); return 0;)

Các lỗ hổng công cụ DLL

Lỗ hổng nằm ở thực tế là nhiều chương trình, khi gọi hàm LoadLibrary (), không kiểm tra tính đúng đắn của đường dẫn mà thư viện này có thể được tải. Do đó, chúng cho phép bạn thay thế thư viện thực thi. Điều này là do thực tế là việc tìm kiếm thư viện đã tải được thực hiện chủ yếu trong thư mục chứa hình ảnh của tệp thực thi đã tạo ra quá trình (thư viện được thay thế được thực thi với các đặc quyền của người dùng đã bắt đầu quá trình).