Vector35 / Vector35/binaryninja-api

Type information for functions in IDirect3D9VTable are missing `__stdcall`

Abierto
#5,801 0 comentarios 1 reacción 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Component: Type Libraries Effort: Low Impact: Low
Lenguaje dominante
C++
Estrellas
1.3k
Forks
298
Merge medio
5 d 5 h
PR fusionados (30 d)
19

Descripción

This is the info in our type library:


struct __base(IUnknownVTable, 0) IDirect3D9VTable
{
    __inherited HRESULT (* `IUnknownVTable::QueryInterface`)(struct IUnknown* `this`, GUID* riid, void** ppvObject);
    __inherited uint32_t (* `IUnknownVTable::AddRef`)(struct IUnknown* `this`);
    uint32_t (* Release)(struct IUnknown* `this`);
    HRESULT (* RegisterSoftwareDevice)(struct IDirect3D9* `this`, void* pInitializeFunction);
    uint32_t (* GetAdapterCount)(struct IDirect3D9* `this`);
    HRESULT (* GetAdapterIdentifier)(struct IDirect3D9* `this`, uint32_t Adapter, uint32_t Flags, struct D3DADAPTER_IDENTIFIER9* pIdentifier);
    uint32_t (* GetAdapterModeCount)(struct IDirect3D9* `this`, uint32_t Adapter, enum D3DFORMAT Format);
    HRESULT (* EnumAdapterModes)(struct IDirect3D9* `this`, uint32_t Adapter, enum D3DFORMAT Format, uint32_t Mode, struct D3DDISPLAYMODE* pMode);
    HRESULT (* GetAdapterDisplayMode)(struct IDirect3D9* `this`, uint32_t Adapter, struct D3DDISPLAYMODE* pMode);
    HRESULT (* CheckDeviceType)(struct IDirect3D9* `this`, uint32_t Adapter, enum D3DDEVTYPE DevType, enum D3DFORMAT AdapterFormat, enum D3DFORMAT BackBufferFormat, BOOL bWindowed);
    HRESULT (* CheckDeviceFormat)(struct IDirect3D9* `this`, uint32_t Adapter, enum D3DDEVTYPE DeviceType, enum D3DFORMAT AdapterFormat, uint32_t Usage, enum D3DRESOURCETYPE RType, enum D3DFORMAT CheckFormat);
    HRESULT (* CheckDeviceMultiSampleType)(struct IDirect3D9* `this`, uint32_t Adapter, enum D3DDEVTYPE DeviceType, enum D3DFORMAT SurfaceFormat, BOOL Windowed, enum D3DMULTISAMPLE_TYPE MultiSampleType, uint32_t* pQualityLevels);
    HRESULT (* CheckDepthStencilMatch)(struct IDirect3D9* `this`, uint32_t Adapter, enum D3DDEVTYPE DeviceType, enum D3DFORMAT AdapterFormat, enum D3DFORMAT RenderTargetFormat, enum D3DFORMAT DepthStencilFormat);
    HRESULT (* CheckDeviceFormatConversion)(struct IDirect3D9* `this`, uint32_t Adapter, enum D3DDEVTYPE DeviceType, enum D3DFORMAT SourceFormat, enum D3DFORMAT TargetFormat);
    HRESULT (* GetDeviceCaps)(struct IDirect3D9* `this`, uint32_t Adapter, enum D3DDEVTYPE DeviceType, struct D3DCAPS9* pCaps);
    HMONITOR (* GetAdapterMonitor)(struct IDirect3D9* `this`, uint32_t Adapter);
    HRESULT (* CreateDevice)(struct IDirect3D9* `this`, uint32_t Adapter, enum D3DDEVTYPE DeviceType, HWND hFocusWindow, uint32_t BehaviorFlags, struct D3DPRESENT_PARAMETERS* pPresentationParameters, struct IDirect3DDevice9* ppReturnedDeviceInterface);
};

These functions miss __stdcall attibute

Binary: https://github.com/user-attachments/files/16398713/CrackME.exe.zip

Related to https://github.com/Vector35/binaryninja-api/issues/5800

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Start with the attached CrackME.exe and the related issue #5800, then inspect how the type library represents IDirect3D9VTable function pointers. Verify the generated declarations against the expected __stdcall calling convention; done means the affected functions expose that attribute in the type information.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
cpp
Área
reverse-engineering
Tipo de issue
Error
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
45/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.