> 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/fonksiyonlar/heartbeat.md).

# Heartbeat

Kimlik doğrulama sunucusuna güvenli bir bağlantı kurar ve oturumu başlatır.

{% hint style="danger" %}
Bu fonksiyon, diğer herhangi bir lisans doğrulama işleminden önce başarıyla çağrılmalıdır.
{% endhint %}

## İmza (Signature)

```cpp
int Connect(QPCTX c);
```

## Parametreler

| Parametre | Tür     | Açıklama                            | Zorunlu |
| --------- | ------- | ----------------------------------- | ------- |
| `c`       | `QPCTX` | İstemci bağlam (context) işaretçisi | Evet    |

## Dönüş Değeri

**Tür:** `int`

| Değer | Açıklama                   |
| ----- | -------------------------- |
| `1`   | Bağlantı başarıyla kuruldu |
| `0`   | Bağlantı başarısız oldu    |

## Açıklama

`Connect` aşağıdaki güvenlik ve ağ başlatma adımlarını gerçekleştirir:

1. **TCP Bağlantısı**: Güvenli soketler kullanarak kimlik doğrulama sunucusuna bağlanır.
2. **ECDH El Sıkışması (Handshake)**: Güvenli, zaman senkronizasyonlu paket üretimi için geçici Diffie-Hellman anahtar değişimi yapar.
3. **Donanım Kaydı**: Yerel HWID özelliklerini aktif oturumla birlikte kaydeder.
4. **Güvenlik Kuralları**: Web panelinde belirlenen yapılandırma ayarlarını alır.

## Temel Kullanım Örneği

```cpp
#include <iostream>
#include "qPapelLib.h"

int main() {
    if (!qpapel::Init()) return 1;
    
    QPCTX ctx = qpapel::CreateContext();
    qpapel::SetConfig(ctx, "pk_your_api_key", "", 0, "1.0.0");
    
    std::cout << "Kimlik doğrulama sunucusuna bağlanılıyor..." << std::endl;
    
    if (qpapel::Connect(ctx)) {
        std::cout << "Güvenli bağlantı kuruldu!" << std::endl;
    } else {
        char* err = qpapel::GetLastStatus(ctx);
        std::cerr << "Bağlantı başarısız: " << (err ? err : "Bilinmeyen Hata") << std::endl;
        if (err) qpapel::FreeString(err);
        
        qpapel::DestroyContext(ctx);
        return 1;
    }
    
    qpapel::DestroyContext(ctx);
    return 0;
}
```

## Güvenlik Taraması ve İzleme İş Parçacıkları (Watchdog)

Bağlantı kurulduktan sonra, tehditleri (hata ayıklayıcılar, bellek dökümleri ve dosya değişiklikleri) taramak için arka plan iş parçacıkları çalıştırabilirsiniz:

```cpp
void SecurityWatchdog(QPCTX ctx) {
    while (true) {
        // Hata ayıklayıcı (debugger) kontrollerini çalıştır
        if (qpapel::CheckDebugger(ctx) != 0) {
            qpapel::ReportEvent(ctx, "dbgdthigh", "ban", "{\"screenshot\":true}");
            std::this_thread::sleep_for(std::chrono::seconds(2));
            std::exit(-1);
        }
        
        qpapel::OptimizeClock(ctx);
        std::this_thread::sleep_for(std::chrono::seconds(5));
    }
}
```

{% hint style="warning" %}
**VMProtect / OLLVM / Packer Uyumluluğu**

Nihai yükleyici ikili dosyanızı VMProtect veya Themida gibi ticari paketleyicilerle korumayı planlıyorsanız:

* İzleme döngünüzde (watchdog loop) `qpapel::CheckIntegrity(ctx)` fonksiyonunu **çağırmayın**. Paketleyiciler `.text` segmentinizi sanallaştırır (virtualize), değiştirir (mutate) ve şifreler; bu da ikili (binary) kodu değiştirir. Bu durum `CheckIntegrity` fonksiyonunun başarısız olmasına ve yanlışlıkla kurcalama karşıtı yasakları (anti-tamper ban) tetiklemesine neden olacaktır.
* Ticari paketleyicilerin hata ayıklama karşıtı (anti-debugging) özellikleri `qpapel::CheckDebugger(ctx)` ile çakışabilir. VMProtect'in hata ayıklama karşıtı seçeneklerini yapılandırıyorsanız döngünüzden `CheckDebugger` fonksiyonunu kaldırın.
  {% endhint %}

## Web Paneli Yapılandırması

Hata ayıklayıcı ve bütünlük taramalarına ilişkin tüm eylemler [papelship.com](https://papelship.com/) adresindeki panelinizden yapılandırılır:

1. **Bütünlük (Integrity) Sekmesi**: Hash değerini hesaplamak için derlenmiş release ikili dosyanızı yükleyin.
2. **Kara Liste (Blacklist) Sekmesi**: Yasaklı işlem adlarını ekleyin (örn: `x64dbg.exe`, `cheatengine.exe`).
3. **Eylem Yapılandırması**: Tespit durumunda SDK'nın ne yapacağını belirleyin (Uygulamayı Kapat / BSOD).
