> For the complete documentation index, see [llms.txt](https://qpapel.papelship.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://qpapel.papelship.com/documentation/tr-documentation/proje-ayarlama/hizli-baslangic.md).

# Hızlı Başlangıç

Uygulamanızı qPapel Auth ile birkaç dakika içinde çalışır hale getirin.

{% hint style="info" %}
Bu kılavuz, [Kurulum](broken://pages/98ff278c8cc2bc89f696582e4f74fe366e03ec6f) adımlarını zaten tamamladığınızı varsayar.
{% endhint %}

Derlemeye hazır, tam çalışan bir depo için GitHub'daki resmi C++ Konsol Örneğimize göz atın:\
👉 [**GitHub: ProtectedAuth-CPP-Console-Example**](https://github.com/PapelShip/ProtectedAuth-CPP-Console-Example)

## Adım 1: API Anahtarlarınızı Alın

{% tabs %}
{% tab title="Panel" %}
{% stepper %}
{% step %}
[papelship.com](https://papelship.com/) adresindeki web panelinize giriş yapın.
{% endstep %}

{% step %}
**Panel → API Entegrasyonları → API Anahtarları** sayfasına gidin.
{% endstep %}

{% step %}
Anahtarlarınızı kopyalayın:

* **API Anahtarı** (`pk_` ile başlar)
* **Ürün Gizli Anahtarı (Product Secret Key)**
* **Ürün HMAC Anahtarı (Product HMAC Key)**
  {% endstep %}
  {% endstepper %}
  {% endtab %}

{% tab title="Örnek Anahtarlar" %}

```
API Anahtarı: pk_00000073_1381695181994e4ea94eabf54911520b
```

{% hint style="warning" %}
Bu yalnızca bir örnek anahtardır. Panelden aldığınız gerçek API anahtarlarınızı kullanın.
{% endhint %}
{% endtab %}
{% endtabs %}

## Adım 2: İlk Uygulamanızı Oluşturun

Projenizin `Source` dizininde yeni bir `main.cpp` dosyası oluşturun:

{% code title="main.cpp" %}

```cpp
#include <iostream>
#include <string>
#include <thread>
#include <chrono>
#include "qPapelLib.h"

// Statik kütüphaneleri kod üzerinden bağlayın (veya proje ayarlarından yapılandırın)
#pragma comment(lib, "qPapelLib.lib")
#pragma comment(lib, "libsodium.lib")

int main() {
    std::cout << "--- PapelShip C++ Demo ---\n" << std::endl;
    std::cout << "[Loader] Başlatılıyor..." << std::endl;

    // 1. Yükleyici saplamasını başlat (qPapelAuth DLL'ini bellekte şifresini çözüp haritalandırır)
    if (!qpapel::Init()) {
        std::cout << "[HATA] Çekirdek saplama başlatma başarısız oldu." << std::endl;
        return 1;
    }

    // 2. İstemci bağlamı (context) oluştur
    QPCTX ctx = qpapel::CreateContext();
    if (!ctx) {
        std::cout << "[HATA] QPCTX tahsis edilemedi." << std::endl;
        return 1;
    }

    // 3. Kimlik bilgilerini yapılandır (API Anahtarı, Sunucu IP [varsayılan için boş], Port [varsayılan için 0], İstemci Sürümü)
    qpapel::SetConfig(ctx, "pk_your_api_key_here", "", 0, "1.0.0");

    // 4. Yerel bütünlük kontrollerini çalıştır
    qpapel::CheckIntegrity(ctx);

    // 5. Güvenli kimlik doğrulama sunucularına bağlan
    if (qpapel::Connect(ctx)) {
        std::cout << "[BAŞARILI] Güvenli bağlantı kuruldu." << std::endl;
        std::cout << "\n[Kilitli] Lisans Anahtarını Girin: ";

        std::string licenseKey;
        std::cin >> licenseKey;

        std::cout << "[Auth] Anahtar doğrulanıyor..." << std::endl;

        // 6. Lisansı doğrula
        char* sessionToken = qpapel::Authenticate(ctx, licenseKey.c_str());

        if (sessionToken != nullptr) {
            std::cout << "[BAŞARILI] Lisans Doğrulandı!" << std::endl;
            std::cout << "Oturum Token'ı: " << sessionToken << std::endl;
            
            // Kullandıktan sonra tahsis edilen token belleğini serbest bırakın
            qpapel::FreeString(sessionToken);

            // --- Korumalı uygulama mantığınız buraya gelir ---
            std::cout << "\nKorumalı uygulamanıza hoş geldiniz!" << std::endl;
            std::this_thread::sleep_for(std::chrono::seconds(3));
        }
        else {
            char* err = qpapel::GetLastStatus(ctx);
            std::cout << "[HATA] Kimlik doğrulama başarısız: " << (err ? err : "Geçersiz Anahtar") << std::endl;
            if (err) qpapel::FreeString(err);
        }
    }
    else {
        char* err = qpapel::GetLastStatus(ctx);
        std::cout << "[HATA] Bağlantı başarısız: " << (err ? err : "Bilinmeyen ağ hatası") << std::endl;
        if (err) qpapel::FreeString(err);
    }

    // 7. Bağlamı temizle
    qpapel::DestroyContext(ctx);
    return 0;
}
```

{% endcode %}

## Adım 3: API Anahtarlarını Değiştirin

{% hint style="danger" %}
`"pk_your_api_key_here"` yer tutucusunu web panelinden aldığınız gerçek API anahtarınızla değiştirin!
{% endhint %}

```cpp
qpapel::SetConfig(ctx, "pk_00000073_1381695181994e4ea94eabf54911520b", "", 0, "1.0.0");
```

## Adım 4: Derleyin ve Paketleyin

{% hint style="info" %}
Geleneksel kütüphanelerin aksine, derlenen `.exe` dosyanızı doğrudan çalıştıramazsınız. Önce kimlik doğrulama kodunu şifrelemek ve gömmek için `qPapelPacker` aracından geçirmeniz gerekir.
{% endhint %}

{% tabs %}
{% tab title="Derleme" %}
{% stepper %}
{% step %}
Visual Studio'da **Release | x64** moduna geçin.
{% endstep %}

{% step %}
**F7** tuşuna basın veya **Build → Build Solution** seçeneğine tıklayın.
{% endstep %}

{% step %}
Kurulum rehberinde Post-Build Event yapılandırdıysanız, `dist/projeniz_final_x64.exe` dosyası otomatik olarak oluşturulacaktır.

Beklenen çıktı:

```
Embedding qPapelAuth DLL into target executable...
[OK] Pack complete! Distribute only: yourproject_final_x64.exe
========== Build: 1 succeeded, 0 failed ==========
```

{% endstep %}
{% endstepper %}
{% endtab %}

{% tab title="Manuel Paketleme" %}
Post-build event yapılandırmadıysanız, bu komutu terminalde manuel olarak çalıştırın:

```bash
qPapelTools\qPapelPacker.exe --dll qPapelTools\qPapelAuth64.dll --input bin\example.exe --output dist\example_packed.exe
```

{% endtab %}
{% endtabs %}

## Adım 5: Test Lisansı Oluşturun

{% tabs %}
{% tab title="Panel" %}
{% stepper %}
{% step %}
Web Panelinizde **Panel → Anahtarlar (Keys)** sayfasına gidin.
{% endstep %}

{% step %}
**"Yeni Anahtar Oluştur" (Generate New Key)** düğmesine tıklayın.
{% endstep %}

{% step %}
Yapılandırın:

* **Süre**: 30 gün
* **Maksimum Cihaz**: 1
* **Not**: "Test Lisansı"
  {% endstep %}

{% step %}
**"Oluştur" (Create)** düğmesine tıklayın.
{% endstep %}

{% step %}
Oluşturulan lisans anahtarını kopyalayın.
{% endstep %}
{% endstepper %}
{% endtab %}

{% tab title="Örnek Anahtar" %}
Oluşturulan anahtar örneği:

```
A1B2-C3D4-E5F6-G7H8
```

{% endtab %}
{% endtabs %}

## Adım 6: Çalıştırın ve Doğrulayın

**Paketlenmiş** nihai çalıştırılabilir dosyayı (`dist/` dizininden) başlatın ve lisans anahtarınızı girin:

```
--- PapelShip C++ Demo ---

[Loader] Başlatılıyor...
[BAŞARILI] Güvenli bağlantı kuruldu.

[Kilitli] Lisans Anahtarını Girin: A1B2-C3D4-E5F6-G7H8
[Auth] Anahtar doğrulanıyor...
[BAŞARILI] Lisans Doğrulandı!

Korumalı uygulamanıza hoş geldiniz!
```

{% hint style="success" %}
Tebrikler! Uygulamanız artık güvenli bir şekilde korunuyor ve aktif!
{% endhint %}

## Sonraki Adımlar

Temel doğrulama akışını tamamladığınıza göre, gelişmiş özellikleri uygulayabilirsiniz:

* **Gerçek Zamanlı Heartbeat İzleme**: Standart iş parçacıkları aracılığıyla sürekli arka plan bütünlük/hata ayıklayıcı kontrolleri ekleyin (bkz. [Heartbeat Entegrasyonu](broken://pages/46b17e81679e093501c4d85a95666ab2129bfe46)).
* **Sunucu Taraflı Stringler**: Gizli verileri sunucuda saklayın ve bellekte güvenli bir şekilde çekin (bkz. [Sunucu Taraflı Stringler](broken://pages/8e711b9ce4ccabaed9604ff95a31379ead554a15)).
* **Sunucu Taraflı Dosyalar**: Uzak bağımlılıkları güvenli bir şekilde indirin ve çalıştırın (bkz. [Sunucu Taraflı Dosyalar](broken://pages/4a98fe3738227501e06d4f821ec300914f852df8)).
* **İşlem Yükleyicisi (PE Injection)**: Dinamik eklentileri veya oyun hilelerini sorunsuzca enjekte edin ve çalıştırın (bkz. [PE Loader Entegrasyonu](broken://pages/0b3c3be80d333bf45026f537b5b292dc91819e41)).
