Basically what it does is pass EAX = 0x52 with stack arguments pointer dịch - Basically what it does is pass EAX = 0x52 with stack arguments pointer Việt làm thế nào để nói

Basically what it does is pass EAX

Basically what it does is pass EAX = 0x52 with stack arguments pointer in EDX to the function, stored in TIB at offset 0xC0. The call switches the CPU mode from 32-bit to 64-bit and executes the syscall in Ring0 to NtCreateFile. 0x52 is the syscall for NtCreateFile on my Windows 7 system, but the syscall numbers are different between Windows versions and even between Service Packs, so it is never a good idea to rely on these numbers. You can find more information about syscalls on Simone Margaritelli blog here.

Most protection software will hook ntdll.dll API as it is the lowest level that you can get to, right in front of the kernel's doorstep. For example if you only hook CreateFileW in kernel32.dll which eventually calls ZwCreateFile in ntdll.dll, you will never catch direct API calls to ZwCreateFile. Although a hook in ZwCreateFile API will be triggered every time CreateFileW or CreateFileA is called as they both eventually must call the lowest level API that communicates directly with the kernel.

There is always one loaded instance of any imported DLL module. That means if any AV or sandbox solution wants to hook the API of a chosen DLL, they will find such module in current process' imported modules list. Following the DLL module's export table, they will find and hook the exported API function of interest.

Now, to the interesting part. What if we copied the code snippet, I pasted above from ntdll.dll, and implemented it in our own application's code. This would be an identical copy of ntdll.dll code that will execute a 0x52 syscall that was executed in our own code section. No user-mode protection software will ever find out about it.
It is an ideal method of bypassing any API hooks without actually detecting and unhooking them!

Thing is, as I mentioned before, we cannot trust the syscall numbers as they will differ between Windows versions. What we can do though is read the whole ntdll.dll library file from disk and manually map it into current process' address space. That way we will be able to execute the code which was prepared exclusively for our version of Windows, while having an exact copy of ntdll.dll outside of AV's reach.

I mentioned ntdll.dll for now as this DLL doesn't have any other dependencies. That means it doesn't have to load any other DLLs and call their API. Its every exported function passes the execution directly to the kernel and not to other user-mode DLLs. It shouldn't stop you from manually importing any other DLL (like kernel32.dll or user32.dll), the same way, if you make sure to walk through the DLLs import table and populate it manually while recursively importing all DLLs from the library's dependencies.
That way the manually mapped modules will use only other manually mapped dependencies and they will never have to touch the modules that were loaded into the address space when the program was started.

Afterwards, it is only a matter of calling the API functions from your manually mapped DLL files in memory and you can be sure that no AV or sandbox software will ever be able to detect such calls or hook them in user-mode.
0/5000
Từ: -
Sang: -
Kết quả (Việt) 1: [Sao chép]
Sao chép!
Về cơ bản những gì nó là vượt qua EAX = 0x52 với chồng con trỏ đối số trong EDX đến chức năng, được lưu trữ trong TIB lúc bù đắp 0xC0. Cuộc gọi chuyển chế độ CPU từ 32 bit đến 64-bit và thực hiện syscall của trong Ring0 để NtCreateFile. 0x52 là syscall cho NtCreateFile trên hệ thống Windows 7 của tôi, nhưng các con số của syscall là khác nhau giữa các phiên bản Windows và thậm chí giữa các gói dịch vụ, do đó, nó không bao giờ là một ý tưởng tốt để dựa vào những con số này. Bạn có thể tìm thêm thông tin về syscalls trên Simone Margaritelli blog ở đây.Hầu hết các phần mềm bảo vệ sẽ nối ntdll.dll API như nó là mức thấp nhất có thể, ngay trước ngưỡng cửa của hạt nhân. Ví dụ: nếu bạn chỉ treo CreateFileW trong kernel32.dll mà cuối cùng gọi là ZwCreateFile trong ntdll.dll, bạn sẽ không bao giờ bắt trực tiếp các cuộc gọi API để ZwCreateFile. Mặc dù một móc trong ZwCreateFile API sẽ được kích hoạt mỗi khi CreateFileW hoặc CreateFileA được gọi là cả hai cuối cùng phải gọi cho các API cấp thấp nhất mà liên lạc trực tiếp với các hạt nhân.Luôn luôn là một ví dụ nạp của bất kỳ mô đun DLL nhập khẩu. Có nghĩa là nếu có bất kỳ giải pháp AV hoặc sandbox muốn treo API được lựa chọn một DLL, họ sẽ tìm thấy mô-đun như vậy trong quá trình hiện tại đã nhập các mô-đun danh sách. Sau các mô-đun DLL xuất khẩu bảng, họ sẽ tìm và móc hàm API xuất quan tâm.Bây giờ, để phần thú vị. Điều gì nếu chúng tôi sao chép đoạn mã, tôi dán trên từ ntdll.dll, và thực hiện nó trong mã riêng của chúng tôi ứng dụng. Đây sẽ là một bản sao giống hệt nhau của mã ntdll.dll sẽ thực hiện một syscall 0x52 đã được thực hiện trong phần mã riêng của chúng tôi. Phần mềm bảo vệ chế độ người dùng không bao giờ sẽ tìm hiểu về nó. Nó là một phương pháp lý tưởng để bỏ qua bất kỳ API móc mà không thực sự phát hiện và unhooking họ!Điều là, như tôi đã đề cập trước đó, chúng tôi không thể tin tưởng những con số syscall như họ sẽ khác nhau giữa các phiên bản Windows. Những gì chúng tôi có thể mặc dù đọc các tập tin thư viện toàn bộ ntdll.dll từ đĩa và theo cách thủ công trên bản đồ vào quá trình hiện tại địa chỉ không gian. Bằng cách đó chúng ta sẽ có thể để thực thi mã mà đã được chuẩn bị dành riêng cho chúng tôi phiên bản của Windows, trong khi có một bản sao chính xác của ntdll.dll ngoài tầm với của AV.Tôi đã đề cập ntdll.dll bây giờ như DLL này không có bất kỳ quan hệ phụ thuộc. Có nghĩa là nó không phải tải bất kỳ file DLL khác và gọi API của họ. Mỗi chức năng xuất khẩu của nó đi thực hiện trực tiếp hạt nhân và không để các file DLL chế độ người dùng. Nó không nên ngăn chặn bạn nhập theo cách thủ công bất kỳ DLL khác (như kernel32.dll hoặc user32.dll), theo cùng một cách, nếu bạn chắc chắn phải đi bộ qua các file DLL nhập bảng và điền bằng tay trong khi đệ quy nhập khẩu tất cả các file DLL từ sự phụ thuộc của thư viện. Như vậy các mô-đun được ánh xạ thủ sẽ sử dụng chỉ là khác phụ thuộc được ánh xạ thủ và họ sẽ không bao giờ có để liên lạc các mô-đun đã nạp vào không gian địa chỉ khi chương trình được bắt đầu.Sau đó, nó chỉ là một vấn đề gọi chức năng API từ các tập tin DLL được ánh xạ bằng tay trong bộ nhớ và bạn có thể chắc chắn rằng không có phần mềm AV hoặc sandbox sẽ bao giờ có thể phát hiện các cuộc gọi hoặc treo chúng trong chế độ người dùng.
đang được dịch, vui lòng đợi..
Kết quả (Việt) 2:[Sao chép]
Sao chép!
Về cơ bản những gì nó làm là vượt qua EAX = 0x52 với đối số con trỏ ngăn xếp trong EDX đến chức năng, được lưu trữ trong TIB tại offset 0xC0. Các cuộc gọi chuyển mạch chế độ CPU từ 32-bit lên 64-bit và thực thi các syscall trong Ring0 để NtCreateFile. 0x52 là syscall cho NtCreateFile trên hệ thống Windows 7 của tôi, nhưng những con số syscall là khác nhau giữa các phiên bản Windows và thậm chí giữa các gói dịch vụ, vì vậy nó không bao giờ là một ý tưởng tốt để dựa vào những con số này. Bạn có thể tìm thêm thông tin về syscalls trên Simone Margaritelli blog ở đây.

Phần mềm Hầu hết các bảo vệ sẽ hook API ntdll.dll vì nó là mức thấp nhất mà bạn có thể tới, ngay trước ngưỡng cửa của hạt nhân. Ví dụ, nếu bạn chỉ treo CreateFileW trong kernel32.dll mà cuối cùng gọi ZwCreateFile trong ntdll.dll, bạn sẽ không bao giờ bắt cuộc gọi API trực tiếp để ZwCreateFile. Mặc dù một cái móc ở ZwCreateFile API sẽ được kích hoạt mỗi khi CreateFileW hoặc CreateFileA được gọi là khi cả hai cuối cùng phải gọi các API mức thấp nhất để giao tiếp trực tiếp với các hạt nhân.

Bạn luôn luôn có một trường hợp tải của bất kỳ thành phần DLL nhập khẩu. Điều đó có nghĩa là nếu có AV hoặc sandbox giải pháp muốn để treo các API của một DLL chọn, họ sẽ tìm thấy mô-đun như vậy trong quá trình hiện tại, danh sách module nhập khẩu. Sau bảng xuất module DLL, họ sẽ tìm và nối các hàm API xuất khẩu quan tâm.

Bây giờ, đến phần thú vị. Nếu chúng ta sao chép đoạn mã, tôi dán trên từ ntdll.dll, và thực hiện nó trong mã ứng dụng của riêng của chúng tôi. Đây sẽ là một bản sao giống hệt nhau của mã ntdll.dll mà sẽ thực hiện một syscall 0x52 đã được thực hiện trong phần mã của chúng ta. Không có phần mềm bảo vệ người sử dụng chế độ bao giờ sẽ tìm hiểu về nó.
Nó là một phương pháp lý tưởng bỏ qua bất cứ móc API mà không thực sự phát hiện và unhooking họ!

Thing là, như tôi đã đề cập trước đây, chúng ta không thể tin tưởng vào số syscall như họ sẽ khác nhau giữa Windows phiên bản. Những gì chúng ta có thể làm mặc dù được đọc toàn bộ tập tin thư viện ntdll.dll từ đĩa và tự bản đồ nó vào quá trình 'không gian địa chỉ hiện tại. Bằng cách đó chúng ta sẽ có thể thực thi mã đó đã được chuẩn bị riêng cho phiên bản của chúng tôi của Windows, trong khi có một bản sao chính xác của bên ngoài ntdll.dll tầm AV.

Tôi đã đề cập ntdll.dll cho bây giờ như DLL này không có bất kỳ khác phụ thuộc. Điều đó có nghĩa là nó không phải tải bất kỳ DLL khác và gọi API của họ. Chức năng hàng xuất khẩu của mình qua việc thực hiện trực tiếp với hạt nhân và không để DLL sử dụng chế độ khác. Nó không nên ngăn cản bạn bằng tay nhập khẩu bất kỳ DLL khác (như kernel32.dll hoặc user32.dll), cùng một cách, nếu bạn chắc chắn rằng để đi bộ qua các file DLL nhập khẩu bảng và cư nó bằng tay trong khi đệ quy nhập khẩu tất cả các file DLL từ thư viện của phụ thuộc.
Bằng cách đó các module tự ánh xạ sẽ chỉ sử dụng phụ thuộc tay ánh xạ khác và họ sẽ không bao giờ phải chạm vào các mô-đun được nạp vào không gian địa chỉ khi chương trình được bắt đầu.

Sau đó, nó chỉ là vấn đề của việc gọi các hàm API từ file DLL tự ánh xạ của bạn trong bộ nhớ và bạn có thể chắc chắn rằng không có AV hoặc phần mềm sandbox sẽ bao giờ có thể phát hiện các cuộc gọi đó hoặc treo chúng trong chế độ người dùng.
đang được dịch, vui lòng đợi..
 
Các ngôn ngữ khác
Hỗ trợ công cụ dịch thuật: Albania, Amharic, Anh, Armenia, Azerbaijan, Ba Lan, Ba Tư, Bantu, Basque, Belarus, Bengal, Bosnia, Bulgaria, Bồ Đào Nha, Catalan, Cebuano, Chichewa, Corsi, Creole (Haiti), Croatia, Do Thái, Estonia, Filipino, Frisia, Gael Scotland, Galicia, George, Gujarat, Hausa, Hawaii, Hindi, Hmong, Hungary, Hy Lạp, Hà Lan, Hà Lan (Nam Phi), Hàn, Iceland, Igbo, Ireland, Java, Kannada, Kazakh, Khmer, Kinyarwanda, Klingon, Kurd, Kyrgyz, Latinh, Latvia, Litva, Luxembourg, Lào, Macedonia, Malagasy, Malayalam, Malta, Maori, Marathi, Myanmar, Mã Lai, Mông Cổ, Na Uy, Nepal, Nga, Nhật, Odia (Oriya), Pashto, Pháp, Phát hiện ngôn ngữ, Phần Lan, Punjab, Quốc tế ngữ, Rumani, Samoa, Serbia, Sesotho, Shona, Sindhi, Sinhala, Slovak, Slovenia, Somali, Sunda, Swahili, Séc, Tajik, Tamil, Tatar, Telugu, Thái, Thổ Nhĩ Kỳ, Thụy Điển, Tiếng Indonesia, Tiếng Ý, Trung, Trung (Phồn thể), Turkmen, Tây Ban Nha, Ukraina, Urdu, Uyghur, Uzbek, Việt, Xứ Wales, Yiddish, Yoruba, Zulu, Đan Mạch, Đức, Ả Rập, dịch ngôn ngữ.

Copyright ©2024 I Love Translation. All reserved.

E-mail: