1. Если вы только начинаете программировать на ассемблере и не знаете с чего начать, тогда попробуйте среду разработки ASM Visual IDE
    (c) на правах рекламы
    Скрыть объявление

Вызвать SystemPrng

Тема в разделе "WASM.NT.KERNEL", создана пользователем M0rg0t, 14 дек 2020.

  1. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.300
  2. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.466
    M0rg0t,

    Там внизу либы:

    Обычно если описана апи то она и в экспорте есть. Ну а если нет в экспорте тогда будем решать как обычно блэком.
     
  3. HoShiMin

    HoShiMin Active Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    842
    Адрес:
    Россия, Нижний Новгород
    Запусти командную строку VS (или из Пуска, или в cmd запусти vcvars32.bat/vcvars64.bat, в зависимости от того под какую архитектуру будешь собирать драйвер) ->
    -> скопируй cng.sys из C:\Windows\System32\drivers в какую-нибудь папку ->
    -> перейди в эту папку в запущенной на первом шаге командной строке ->
    -> введи "dumpbin.exe /EXPORTS cng.sys > cng.exports" ->
    -> открой cng.exports, там будут все экспорты cng.sys ->
    -> создай cng.def с таким форматом:
    Код (Text):
    1.  
    2. EXPORTS
    3.     SystemPrng
    4.     AnotherFunctionYouNeed
    5.     YetAnother
    6.  
    -> в той же командной строке введи "lib /def:cng.def /subsystem:native /name:cng.sys /machine:x64 /out:cng.lib" ->
    -> создастся cng.lib, который тебе надо подключить в свой проект:
    upload_2020-12-14_23-43-23.png

    Затем импортируешь функцию, как обычно (если пишешь на C, то extern "C" не нужен):
    Код (C):
    1.  
    2. #pragma once
    3.  
    4. #include <wdm.h>
    5.  
    6. typedef unsigned long BOOL;
    7.  
    8. extern "C" NTSYSAPI BOOL NTAPI SystemPrng(
    9.     unsigned char pbRandomData,
    10.     size_t        cbRandomData
    11. );
    12.  
    И можешь вызывать:
    Код (C):
    1.  
    2. NTSTATUS DriverEntry(...)
    3. {
    4.     SystemPrng(0, 0);
    5. }
    6.  
    После сборки увидишь, что твой драйвер зависит от cng.sys:
    upload_2020-12-14_23-53-18.png
     
    Последнее редактирование: 15 дек 2020
    hiddy, MaKaKa, M0rg0t и ещё 1-му нравится это.