WindowsAPI & DLL: Difference between revisions
Created page with "WindowsAPI adalah interface pemrograman yang digunakan oleh suatu aplikasi untuk berkomunikasi langsung dengan OS. Mencangkup beberapa function yang memungkinkan aplikasi untuk mengakses fitur Windows seperti manajemen file, grafis, networking, dll Ringkasan WindowsAPI: * Windows API beroperasi dalam ''user mode'' , bukan ''kernel mode'' . * Memberikan akses ke fitur sistem operasi seperti file system, registry, dan UI tanpa langsung berinteraksi dengan kernel Windows...." |
|||
| (2 intermediate revisions by the same user not shown) | |||
| Line 33: | Line 33: | ||
<span id="application-programming-interface-api"></span> | <span id="application-programming-interface-api"></span> | ||
= | = Application Programming Interface (API) = | ||
API adalah function yang diekspor dari DLL dan bisa digunakan oleh program lain. Setiap program memiliki '''import table''' yang mencantumkan nama DLL dan API yang dibutuhkan. Sementara di dalam DLL, '''export table''' berisi daftar API beserta ordinal number dan ''Relative Virtual Address (RVA)'' -nya. | API adalah function yang diekspor dari DLL dan bisa digunakan oleh program lain. Setiap program memiliki '''import table''' yang mencantumkan nama DLL dan API yang dibutuhkan. Sementara di dalam DLL, '''export table''' berisi daftar API beserta ordinal number dan ''Relative Virtual Address (RVA)'' -nya. | ||
| Line 40: | Line 40: | ||
<span id="dynamic-api-resolution"></span> | <span id="dynamic-api-resolution"></span> | ||
= Dynamic API Resolution = | = Dynamic API Resolution = | ||
| Line 51: | Line 52: | ||
Teknik ini sangat efektif dalam menghindari deteksi oleh sistem keamanan berbasis tanda tangan dan analisis statis, sehingga mempersulit proses investigasi dan mitigasi terhadap malware. | Teknik ini sangat efektif dalam menghindari deteksi oleh sistem keamanan berbasis tanda tangan dan analisis statis, sehingga mempersulit proses investigasi dan mitigasi terhadap malware. | ||
=== Baca Juga === | |||
*[[Linker pada Compiler]] | |||
*[[Cara membuat DLL sendiri]] | |||
<span id="referensi"></span> | <span id="referensi"></span> | ||
=== Referensi === | === Referensi === | ||
* https://attack.mitre.org/techniques/T1027/007/ | * https://attack.mitre.org/techniques/T1027/007/ | ||
* https://attack.mitre.org/techniques/T1106/ | * https://attack.mitre.org/techniques/T1106/ | ||
Latest revision as of 06:43, 10 April 2025
WindowsAPI adalah interface pemrograman yang digunakan oleh suatu aplikasi untuk berkomunikasi langsung dengan OS. Mencangkup beberapa function yang memungkinkan aplikasi untuk mengakses fitur Windows seperti manajemen file, grafis, networking, dll
Ringkasan WindowsAPI:
- Windows API beroperasi dalam user mode , bukan kernel mode .
- Memberikan akses ke fitur sistem operasi seperti file system, registry, dan UI tanpa langsung berinteraksi dengan kernel Windows.
Evolusi WindowsAPI:
- 16-bit API : API awal untuk versi Windows lama (Windows 1.0 hingga Windows 3.x).
- Win32 API : API untuk Windows 32-bit (Windows 95, NT, XP, dll.).
- Windows API (64-bit) : API yang mendukung arsitektur 64-bit.
- WinRT (Windows Runtime) : API modern untuk aplikasi Windows 8 dan yang lebih baru.
Sebagian besar WindowsAPI diimplementasikan menggunakan DLL. Ketika sebuah program ingin menggunakan Windows API, dia sebenarnya memanggil fungsi yang diekspor oleh berbagai DLL bawaan Windows.
DLL (Dynamic Link Library)
Dynamic Link Libraries (DLL) adalah file Portable Executable (PE) yang berisi berbagai function dan dapat digunakan oleh program lain tanpa harus menyertakan kode sumbernya secara langsung. DLL memiliki export table yang mencantumkan semua fungsi yang bisa diakses dari luar, tetapi tidak semua fungsi dalam DLL diekspor—beberapa hanya digunakan secara internal. Jadi mungkin DLL mirip dengan library pada pemrograman umumnya, dimana kita tidak perlu menuliskan code berulang-ulang
Windows menyediakan berbagai DLL untuk mengakses fitur sistem, seperti:
- kernel32.dll → Operasi dasar seperti membaca/menulis file.
- ntdll.dll → Menyediakan native API Windows, sering dimanfaatkan malware untuk mengakses fungsi yang tidak terdokumentasi.
- user32.dll → Menangani GUI Windows.
- advapi32.dll → Berhubungan dengan registry dan enkripsi.
- shell32.dll → Menjalankan atau membuka file ( shell operations ).
- ws2_32.dll → Komunikasi jaringan melalui sockets .
- wininet.dll → Fungsi HTTP dan FTP, termasuk dukungan proxy.
- urlmon.dll → Tambahan untuk wininet.dll , menangani URL dan web compression .
- gdi32.dll → Menangani fungsi grafis dasar.
Application Programming Interface (API)
API adalah function yang diekspor dari DLL dan bisa digunakan oleh program lain. Setiap program memiliki import table yang mencantumkan nama DLL dan API yang dibutuhkan. Sementara di dalam DLL, export table berisi daftar API beserta ordinal number dan Relative Virtual Address (RVA) -nya.
API tidak hanya bisa diekspor melalui DLL, tetapi juga bisa melalui .exe. Biasanya .exe merupakan program yang berjalan secara mandiri, tetapi di beberapa kasus .exe dapat berfungsi sebagai library yang menyediakan API, atau bahkan dipanggil dari DLL lain.
Dynamic API Resolution
Hacker sering menggunakan teknik obfuscation dan dynamic API resolution untuk menyembunyikan fungsi API yang digunakan oleh malware mereka. Teknik ini bertujuan untuk menghindari deteksi oleh alat keamanan dan mempersulit analisis oleh peneliti keamanan. Dalam sistem operasi, malware biasanya memanfaatkan Native API untuk melakukan berbagai tugas, seperti manipulasi proses, file, dan elemen sistem lainnya.
Secara normal, panggilan ke fungsi API dalam malware dapat meninggalkan artefak statis, seperti string nama function dalam file payload atau informasi dalam Import Address Table (IAT) yang menunjukkan fungsi mana yang digunakan oleh sebuah binary. Static Analysis terhadap artefak ini dapat membantu researcher dalam mendeteksi aktivitas mencurigakan.
Untuk menghindari analisis semacam itu, hacker menggunakan teknik dynamic API resolution , yang menyembunyikan function API yang digunakan hingga saat runtime. Dengan cara ini, malware tetap tidak mencantumkan langsung nama function API dalam bentuk teks yang dapat dianalisis secara statis.
Ada beberapa metode yang digunakan untuk menyamarkan pemanggilan API. Salah satunya adalah dengan menyimpan hash dari nama fungsi API sebagai pengganti string mentahan. Saat dijalankan, malware menggunakan teknik seperti GetProcAddress() dan LoadLibrary() untuk menemukan dan memanggil function API yang diperlukan berdasarkan hash tersebut. Selain itu, hash ini dapat diperkuat lagi menggunakan enkripsi atau teknik manipulasi string, yang memerlukan proses deobfuscation saat runtime agar fungsi dapat dieksekusi.
Teknik ini sangat efektif dalam menghindari deteksi oleh sistem keamanan berbasis tanda tangan dan analisis statis, sehingga mempersulit proses investigasi dan mitigasi terhadap malware.
Baca Juga