ИИ в IDA Pro

5noop

Новичок
Регистрация
09.11.2025
Сообщения
3
В интернете я нашел плагин от mrexodia на ida (ida-pro-mcp)

Довольно хорошая вещь, для примера я взял лоадер кряка скита (hrisitosense)

В итоге что он сделал -
1. Пропатчил авторизацию, а точнее написал как лучше пропатчить с помощью MinHook
2. Сделал мини дампер длл файлов на powershell по адресам
3. Нашел ключи декодирования XOR, по которым в итоге достал длл (3 дллки) и декодировал их


C#:
# dump_payloads.ps1
$exe = "ddd.exe"
$base = 0x400000
$keySpecs = @(
    @{va=0x48B640; size=0x63;   xv=0xA5; off=0},
    @{va=0x48B5C0; size=0x7E;   xv=0x12; off=163},
    @{va=0x48B580; size=0x40;   xv=0xF9; off=520},
    @{va=0x48B360; size=0x9E;   xv=0x5A; off=584},
    @{va=0x48B400; size=0xE7;   xv=0xBA; off=289},
    @{va=0x48B4E8; size=0x92;   xv=0x39; off=742},
    @{va=0x48B6A8; size=0x88;   xv=0x24; off=888},
    @{va=0x48B730; size=0x40;   xv=0x1B; off=99}
)
$payloads = @(
    @{va=0x176FB20; size=0xB600;   out="payload1.dll"},
    @{va=0x58D720; size=0xD37200; out="payload2.dll"},
    @{va=0x12C4920; size=0x4AB200; out="payload3.dll"}
)

[byte[]]$bytes = [System.IO.File]::ReadAllBytes($exe)

function Get-Sections {
    param([byte[]]$data)
    $e_lfanew = [BitConverter]::ToUInt32($data, 0x3C)
    $numSec   = [BitConverter]::ToUInt16($data, $e_lfanew + 6)
    $optSize  = [BitConverter]::ToUInt16($data, $e_lfanew + 20)
    $secBase  = $e_lfanew + 24 + $optSize
    $secs = @()
    for ($i=0; $i -lt $numSec; $i++) {
        $off = $secBase + 40*$i
        $virtSize = [BitConverter]::ToUInt32($data, $off+8)
        $virtAddr = [BitConverter]::ToUInt32($data, $off+12)
        $rawSize  = [BitConverter]::ToUInt32($data, $off+16)
        $rawPtr   = [BitConverter]::ToUInt32($data, $off+20)
        $secs += @{va=$virtAddr; vs=$virtSize; rp=$rawPtr; rs=$rawSize}
    }
    return $secs
}

function Va-ToRaw {
    param([UInt32]$va, [UInt32]$size, $sections)
    $rva = $va - $base
    foreach ($s in $sections) {
        if ($rva -ge $s.va -and $rva -lt ($s.va + $s.vs)) {
            $off = $s.rp + ($rva - $s.va)
            return [pscustomobject]@{Off=[int]$off; Size=[int]$size}
        }
    }
    throw "RVA not in sections: $(('{0:X}' -f $va))"
}

$sections = Get-Sections -data $bytes

$key = New-Object byte[] 1024
foreach ($k in $keySpecs) {
    $map = Va-ToRaw $k.va $k.size $sections
    $off = $map.Off; $sz = $map.Size
    for ($i=0; $i -lt $sz; $i++) {
        $b = [int]$bytes[$off + $i]
        $key[$k.off + $i] = [byte]($b -bxor [int]$k.xv)
    }
}

foreach ($p in $payloads) {
    $map = Va-ToRaw $p.va $p.size $sections
    $off = $map.Off; $sz = $map.Size
    $out = New-Object byte[] $sz
    for ($i=0; $i -lt $sz; $i++) {
        $b = [int]$bytes[$off + $i]
        $out[$i] = [byte]($b -bxor [int]$key[$i % 1024])
    }
    [IO.File]::WriteAllBytes($p.out, $out)
    Write-Host "$($p.out) dumped"
}

с помощью данного скрипта я достал длл чита не имея сабки, эти длл лежали просто в лоадере, этот лоадер я смотрел с помощью ИИшки чисто для примера
 
Последнее редактирование:
Назад
Верх Низ