老司机夜插-理伦理片-理伦片免费-理伦片免费观看-理伦片免费看-理伦日韩-理论福利片-理论片第一页-理论片电影-理论片理论

金喜正规买球

加密解密軟件VMProtect教程:將許可制度集成到應用程序

翻譯|使用教程|編輯:安雯斯|2023-05-23 14:26:24.093|閱讀 329 次

概述:VMProtect是新一代軟件保護實用程序。本文分享VMProtect入門使用教程許可證部分,歡迎查閱~

# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>

相關鏈接:

VMProtect是新一代軟件保護實用程序。VMProtect支持德爾菲、Borland C Builder、Visual C/C++、Visual Basic(本機)、Virtual Pascal和XCode編譯器。

 同時,VMProtect有一個內置的反匯編程序,可以與Windows和Mac OS X可執行文件一起使用,并且還可以鏈接編譯器創建的MAP文件,以快速選擇要保護的代碼片段。

為了輕松實現應用程序保護任務的自動化,VMProtect實現了內置腳本語言。VMProtect完全支持Windows系列的32/64位操作系統(從Windows 2000開始)和Mac OSX(從版本10.6開始)。重要的是,無論目標平臺如何,VMProtect都支持所有范圍的可執行文件,即Windows版本可以處理Mac OS X版本的文件,反之亦然。有其他問題請咨詢加密解密技術QQ群:766135708

VMProtect最新版下載

VMProtect 是保護應用程序代碼免遭分析和破解的可靠工具,但只有在正確構建應用程序內保護機制并且沒有可能破壞整個保護的典型錯誤的情況下才能最有效地使用。

許可制度

“許可制度”包含以下小節:

許可系統功能
許可系統如何運作
管理許可證
如何將系統集成到您的應用程序的示例
自動序列號生成

集成到應用程序

 在下面描述的幾個步驟中,我們將創建一個查詢許可系統的測試應用程序:向其提供序列號,接收序列號的狀態及其內容。第一階段,我們在測試模式下使用許可系統;第二階段我們使用它,因為它會在實際實踐中使用。

許可制度的工作模式

 建筑保護總是經歷兩個主要步驟:開發和發布。至于許可,首先您創建一個應用程序,將保護集成到其中,然后添加檢查和功能限制。只有經過全面測試,您才能將產品提供給用戶并開始第二階段。受保護應用程序的測試是一個復雜的過程,因為您需要確保所有檢查和條件跳轉都正確運行。為所有可能的測試用例制作“真實的”序列號是不方便的。這就是許可系統也提供“開發者模式”(又名“測試模式”)的原因。在這種工作模式下,不對應用程序進行保護,系統對提供的序列號的反應在配置文件中進行調整。當應用程序沒有錯誤并且可以正確地與許可系統一起工作時,VMProtect 將“測試”許可模塊替換為執行真實序列號檢查的真實許可模塊。這是在應用程序受到保護時完成的,因此您不能錯誤地避免這一步。

第一階段:測試模式

 在測試模式下,許可系統(狀態和它返回的數據)對提供的序列號的所有反應都在配置文件中描述。該文件名為 VMPLicense.ini,應位于應用程序的工作文件夾中。在下面提供的 10 個步驟中,我們將從創建最簡單的應用程序到在具有硬件鎖定和限制免費升級期限的測試模式下使用許可系統的全功能。

  • 步驟 1.1:創建受保護的應用程序

 第一步是創建一個應用程序。這將是一個簡單的應用程序,沒有任何用戶界面,也沒有重要的功能。我們的目標是將序列號傳遞給許可系統并接收其答案。

#include <windows.h>
#include <stdio.h>
bool is_registered(const char *serial)
{
return serial && serial[0] == 'X';
}
int main(int argc, char **argv)
{
char *serial = "Xserialnumber"; // we set the serial number directly in the code, for simplicity
if (!is_registered(serial))
{
printf("please register!\n");
return 0;
}
printf("We are registered.\n");
return 0;
}

該程序使用一種非常簡單的方法來檢查序列號。is_registered ()函數將序列號的第一個符號與“X”進行比較,如果它們匹配則認為該數字是正確的。對于錯誤的序列號,會顯示一條注冊消息,而如果用戶輸入正確的密鑰,則會顯示“我們已注冊”。改為顯示

下一步是添加代碼以使用 VMProtect 的許可系統檢查序列號

  • 步驟 1.2:添加許可證檢查代碼

 如果您以前沒有這樣做,是時候將 VMProtect SDK 包含到您的項目中了。SDK包含三個文件:頭文件(VMProtectSDK.h)、庫文件(VMProtectSDK32.lib)和帶實現的dll文件(VMProtectSDK32.dll)。對于 64 位系統,庫和 dll 文件有單獨的實現。

 將 dll 文件、頭文件和庫文件放入我們應用程序的工作文件夾中,源文件所在的位置,并將頭文件包含到主文件中:

#include <windows.h>
#include <stdio.h>
#include "VMProtectSDK.h"

構建項目并確保它像以前一樣編譯和運行。許可系統尚未激活。

將序列號發送到許可系統

現在,在序列號行的正下方,我們添加對許可系統的 SDK 函數的調用:

char *serial = "Xserialnumber"; // we set the serial number directly in the code, for simplicity
int res = VMProtectSetSerialNumber(serial);
printf("res = 0x%08X\n", res);

 如果執行此操作后程序停止并提示缺少所需的 dll 文件,請確保將相應的 DLL 文件放入我們應用程序的工作文件夾中。如果執行成功,您應該會看到以下消息:

 2 對應于API 中描述的SERIAL_STATE_FLAG_INVALID 標志。這意味著許可系統認為我們的密鑰不正確,這是真的,因為我們沒有向系統“解釋”哪些密鑰是正確的,哪些不是。

[TestLicense] AcceptedSerialNumber=Xserialnumber

 現在,再次運行我們的程序。如果您仍然收到“2”錯誤代碼,請確保 ini 文件位于應用程序的工作文件夾中。這次我們應該收到“0”。這是許可系統接受并批準序列號的標志。現在我們可以從代碼中刪除is_registered()函數——許可系統現在負責檢查序列號:

#include <windows.h>
#include <stdio.h>
#include "VMProtectSDK.h"

int main(int argc, char **argv)
{
char *serial = "Xserialnumber"; // we set the serial number directly in the code, for simplicity
int res = VMProtectSetSerialNumber(serial);
printf("res = 0x%08X\n", res);
if (res)
{
printf("please register!\n");
return 0;
}
printf("We are registered.\n");
return 0;
}
  • 步驟 1.3:檢索序列號狀態標志

打印標志的便捷功能

首先,我們需要一個方便的函數來將標志的數值轉換為序列號的可理解狀態。下面是這個函數的代碼:

#define PRINT_HELPER(state, flag) if (state & flag) printf("%s ", #flag)
void print_state(INT state)
{
if (state == 0)
{
printf("state = 0\n");
return;
}
printf("state = ");
PRINT_HELPER(state, SERIAL_STATE_FLAG_CORRUPTED);
PRINT_HELPER(state, SERIAL_STATE_FLAG_INVALID);
PRINT_HELPER(state, SERIAL_STATE_FLAG_BLACKLISTED);
PRINT_HELPER(state, SERIAL_STATE_FLAG_DATE_EXPIRED);
PRINT_HELPER(state, SERIAL_STATE_FLAG_RUNNING_TIME_OVER);
PRINT_HELPER(state, SERIAL_STATE_FLAG_BAD_HWID);
PRINT_HELPER(state, SERIAL_STATE_FLAG_MAX_BUILD_EXPIRED);
printf("\n");
}

 盡管大小不一,但功能非常簡單——一一檢查所有位標志并打印狀態變量中存在的所有內容。在檢查調用print_state的序列號后替換代碼中的printf,并更改我們傳遞給許可系統的序列號:

char *serial = "Xserialnumber1"; // we set the serial number directly in the code, for simplicity
int res = VMProtectSetSerialNumber(serial);
print_state(res);

現在,如果我們運行這個程序,下面的消息將被打印到控制臺:

state = SERIAL_STATE_FLAG_INVALID
please register!

現在,我們通過刪除“1”放回舊密鑰并再次運行程序:

state = 0 We are registered.

現在,我們可以看到序列號的狀態標志,讓我們開始從序列號中檢索標志和數據。

檢索序列號狀態

 您可以通過三種方式獲取序列號的狀態:通過調用VMProtectSetSerialNumber()、通過調用VMProtectGetSerialNumberState()或通過調用VMProtectGetSerialNumberData() – 狀態標志被放入結構的字段之一。每種方法都旨在在特定時間使用。第一次檢查序列號是在安裝期間執行的。此時應拒絕錯誤號碼、過期號碼、黑名單號碼等。一些限制,例如,程序的最長運行時間或序列號到期日期也應在運行時檢查。和VMProtectGetSerialNumberState()方法是這里最快和最方便的方法。如果您需要接收有關序列號的完整信息,您可以使用更強大的VMProtectGetSerialNumberData()函數。

  • 步驟 1.4:檢索用戶的姓名和電子郵件

 讓我們從簡單的事情開始。我們想從序列號中獲取用戶的姓名和電子郵件,以便在“關于”窗口(或其他任何地方)中顯示它們。為此,我們必須在 ini 文件中再添加兩行:

[TestLicense]
AcceptedSerialNumber=Xserialnumber
UserName=John Doe
EMail=john@doe.com

而在程序中,如果注冊成功,我們獲取這些數據并輸出到屏幕:

VMProtectSerialNumberData sd = {0};
VMProtectGetSerialNumberData(&sd, sizeof(sd));
printf("name = %ls,\ne-mail = %ls\n", sd.wUserName, sd.wEMail);

該結構包含 UNICODE 數據,因此printf()使用 %ls 說明符而不是 %s。該程序應在屏幕上打印以下文本:

state = 0
We are registered.
name = John Doe,
e-mail = john@doe.com
  • 步驟 1.5:檢查序列號的到期日期

現在按照以下格式在 ini 文件中添加一個新行:ExpDate=YYYYMMDD。例如:

ExpDate=20000101

此行中指定的日期必須已經過去,即最大日期是昨天。當我們運行程序時,我們應該看到以下內容:

state = SERIAL_STATE_FLAG_DATE_EXPIRED please register!

現在讓我們在顯示“請注冊”消息和程序存在之前獲取更多信息:

if (res)
{
VMProtectSerialNumberData sd = {0};
VMProtectGetSerialNumberData(&sd, sizeof(sd));
printf("exp. date: y = %d, m = %d, d = %d\n", sd.dtExpire.wYear, sd.dtExpire.bMonth, sd.dtExpire.bDay);
printf("please register!\n");
return 0;
}

該應用程序的第二次運行現在為我們提供了更多詳細信息:

state = SERIAL_STATE_FLAG_DATE_EXPIRED
exp. date: y = 2000, m = 1, d = 1
please register!

 好的,現在從 ini 文件中刪除 ExpDate=… 行,這樣它就不會影響我們要做的其他事情。

  • 步驟1.6:限制程序的運行時間

 您可以限制程序從啟動的那一刻開始運行。這對于演示目的很有用:您向用戶提供了一個真實的序列號,但該程序的運行時間不超過 5 分鐘。許可系統不會強制關閉此類程序,而只是設置狀態標志。因此,讓我們通過將以下行添加到 ini 文件來將最長工作時間設置為一分鐘:

TimeLimit=1

并修改程序如下:

int main(int argc, char **argv)
{
char *serial = "Xserialnumber"; // we set the serial number directly in the code, for simplicity
int res = VMProtectSetSerialNumber(serial);
print_state(res);
if (res) return 0;
VMProtectSerialNumberData sd = {0};
VMProtectGetSerialNumberData(&sd, sizeof(sd));
printf("I will run for %d minute(s)\n", sd.bRunningTime);
print_state(VMProtectGetSerialNumberState());
Sleep(60 * 1000 * sd.bRunningTime);
printf("After %d minute(s):\n", sd.bRunningTime);
print_state(VMProtectGetSerialNumberState());
return 0;
}

 該程序在啟動時打印序列號的狀態,然后計算最長運行時間并等待其到期。然后再次打印序列號狀態。將最大操作時間設置為一分鐘后,我們應該會收到以下結果:

state = 0
I will run for 1 minute(s)
state = 0
After 1 minute(s):
state = SERIAL_STATE_FLAG_RUNNING_TIME_OVER

 受保護程序應定期分析序列號的狀態,并在設置標志時關閉。許可系統不會自動執行此操作,因為程序可能需要釋放內存、將數據保存到文件等。此外,您可能希望程序在操作時間到期后不要停止,而是切換到更受限制的模式。許可系統將此留給開發人員。

  • 步驟 1.7:限制免費升級期限

怎么運行的

 當 VMProtect 保護應用程序時,它會記錄日期。許可系統將此日期視為應用程序的構建日期。您可以將此序列號可以使用的最大構建日期放入序列號中。因此,如果您將當前日期加上一年作為序列號,它將適用于您將在一年內發布的所有程序版本。一年零一天后發布的版本將無法使用此序列號,用戶可以選擇:使用舊版本的程序或購買新密鑰以使用最新版本的程序再使用一年.

讓我們試試

將格式為 MaxBuildDate=YYYYMMDD 的行放入 ini 文件中:

MaxBuildDate=20000101

 在測試模式下,許可系統將今天視為構建日期,因此這一行中指定的日期已經過去很重要。也就是說,最大日期是昨天。修改main()函數的代碼,使其看起來像這樣:

int main(int argc, char **argv)
{
char *serial = "Xserialnumber"; // we set the serial number directly in the code, for simplicity
int res = VMProtectSetSerialNumber(serial);
print_state(res);
if (res)
{
VMProtectSerialNumberData sd = {0};
VMProtectGetSerialNumberData(&sd, sizeof(sd));
printf("max. build date: y = %d, m = %d, d = %d\n", sd.dtMaxBuild.wYear, sd.dtMaxBuild.bMonth, sd.dtMaxBuild.bDay);
printf("please register!\n");
return 0;
}
printf("I'm registered\n");
return 0;
}

然后,在程序運行時,您應該看到以下內容:

state = SERIAL_STATE_FLAG_MAX_BUILD_EXPIRED
max. build date: y = 2000, m = 1, d = 1
please register!

通過將 ini 文件中的日期替換為今天或明天,我們最終得到了“工作”程序:

state = 0
I'm registered

從 ini 文件中刪除 MaxBuildDate=… 行,這樣它就不會影響我們的進一步步驟。

  • 步驟 1.8:黑名單中的序列號

 許可系統不應接受在 VMProtect 中標記為“已阻止”的序列號。當您下次重建您的應用程序時,VMProtect 會將黑名單序列號的哈希值添加到受保護的應用程序中。因此,應用程序的許可系統將來會拒絕這些序列號。

首先,讓我們最小化main()函數的內容:

int main(int argc, char **argv)
{
char *serial = "Xserialnumber"; // we set the serial number directly in the code, for simplicity
int res = VMProtectSetSerialNumber(serial);
print_state(res);
return 0;
}

現在,運行程序并確保許可系統接受我們的序列號:

int main(int argc, char **argv)
{
char *serial = "Xserialnumber"; // we set the serial number directly in the code, for simplicity
int res = VMProtectSetSerialNumber(serial);
print_state(res);
return 0;
}

現在,將這個序列號添加到許可系統的黑名單中。將以下行添加到 ini 文件中:

BlackListedSerialNumber=Xserialnumber

并再次運行程序:

state = SERIAL_STATE_FLAG_BLACKLISTED

 我們是否應該通知用戶他或她輸入的序列號被列入黑名單?它是由你決定。您可以簡單地告訴序列號不正確或通知用戶密鑰已泄露。許可系統只是通知程序有關使用黑名單序列號的事實。

  • 步驟 1.9:硬件鎖

接收硬件標識符

 在我們鎖定硬件之前,我們必須收到一個硬件標識符。標識符被放入序列號中,當序列號傳遞給許可系統時,它會檢查標識符是否匹配。因此,首先我們需要接收硬件的標識符。讓我們將main()函數減少到最低限度:

int main(int argc, char **argv)
{
int nSize = VMProtectGetCurrentHWID(NULL, 0);
char *buf = new char[nSize];
VMProtectGetCurrentHWID(buf, nSize);
printf("HWID: %s\n", buf);
delete [] buf;
return 0;
}

通過運行該程序,我們會收到一個默認的測試硬件標識符:

HWID:myhwid

要更改標識符,請將以下行添加到 ini 文件中:

MyHWID=test

如果我們之后運行程序,我們可以看到系統認為“test”是我們 PC 的硬件標識符:

HWID: test

重要的!只有經過 VMProtect 處理后,程序才會顯示真實的硬件標識符。

硬件鎖定序列號

 要將我們的測試序列號鎖定到硬件,我們應該在 ini 文件中再添加一行。這次我們定義“放入”序列號的標識符:

KeyHWID=test

然后我們將main()復雜化一點。現在它將傳遞一個序列號并分析它得到的結果:

int main(int argc, char **argv)
{
int nSize = VMProtectGetCurrentHWID(NULL, 0);
char *buf = new char[nSize];
VMProtectGetCurrentHWID(buf, nSize);
printf("HWID: %s\n", buf);
delete [] buf;
char *serial = "Xserialnumber";
int res = VMProtectSetSerialNumber(serial);
print_state(res);
return 0;
}

運行代碼后我們會看到如下結果:

HWID: test
state = 0

 許可系統已將當前硬件標識符與序列號中寫入的標識符進行比較。標識符相等,因此VMProtectSetSerialNumber()函數返回 0——序列號匹配。

 現在讓我們嘗試在另一個硬件上“運行”我們的程序。我們只需將 ini 文件中 MyHWID 參數的值從“test”更改為“new test”。再次運行程序:

HWID: new test
state = SERIAL_STATE_FLAG_BAD_HWID

 這次許可系統返回了 SERIAL_STATE_FLAG_BAD_HWID 標志,這意味著真實的硬件標識符與存儲在序列號中的不匹配。我們在屏幕上看到的當前標識符是“new test”,而序列號是“test”。如果我們將 ini 文件中的 KeyHWID 參數更改為“new test”,我們也可以讓我們的序列號在這個“硬件”上工作。

  • 步驟 1.10:用戶數據

序列號最多可容納 255 個字節的任意數據,許可系統按原樣傳遞給程序。數據可以包含有關銷售的任何其他信息、完整版操作所需的數據或其他內容。讓我們修改我們的main()函數,讓它從序列號中讀取數據并將它們顯示在屏幕上:

int main(int argc, char **argv)
{
char *serial = "Xserialnumber";
int res = VMProtectSetSerialNumber(serial);
print_state(res);
if (res) return 0;
VMProtectSerialNumberData sd = {0};
VMProtectGetSerialNumberData(&sd, sizeof(sd));
printf("Serial number has %d byte(s) of data\n", sd.nUserDataLength);
for (int i = 0; i < sd.nUserDataLength; i++)
printf("%02X ", sd.bUserData[i]);
printf("\n");
return 0;
}

我們還將 Ini 文件縮減為:

[TestLicense]
AcceptedSerialNumber=Xserialnumber

現在,我們運行程序并確保我們的序列號正常工作,但不包含任何數據:

state = 0
Serial number has 0 byte(s) of data

 要將新的用戶數據添加到序列號中,我們需要在 ini 文件中創建 UserData 變量,并以 HEX 格式為其分配數據。符號必須成對出現,即一行的長度必須是 2 的倍數。像這樣:

UserData=010203A0B0C0D0E0

在這種情況下,如果我們運行該程序,我們將收到以下結果:

state = 0
Serial number has 8 byte(s) of data
01 02 03 A0 B0 C0 D0 E0

第二階段:實模式

 在實模式下,VMProtect 許可系統為受保護的應用程序放置了一個特殊的許可模塊。該模塊執行與 SDK 中的測試模塊相同的功能,但使用序列號的內容而不是配置 ini 文件。接下來的五個步驟說明了使用基于 VMProtect 和許可系統的全功能保護來保護簡單應用程序的過程。

  • 步驟 2.1:創建新的受保護應用程序

在第一階段,我們制作了幾個簡單的應用程序來測試許可系統的 API。現在,在第二階段,我們將只創建一個應用程序。它還將是一個控制臺應用程序,其foo()函數僅在注冊版本中有效。這是我們的測試應用程序的代碼:

#include <windows.h>
#include <stdio.h>
#include "VMProtectSDK.h"
#define PRINT_HELPER(state, flag) if (state & flag) printf("%s ", #flag)
void print_state(INT state)
{
if (state == 0)
{
printf("state = 0\n");
return;
}
printf("state = ");
PRINT_HELPER(state, SERIAL_STATE_FLAG_CORRUPTED);
PRINT_HELPER(state, SERIAL_STATE_FLAG_INVALID);
PRINT_HELPER(state, SERIAL_STATE_FLAG_BLACKLISTED);
PRINT_HELPER(state, SERIAL_STATE_FLAG_DATE_EXPIRED);
PRINT_HELPER(state, SERIAL_STATE_FLAG_RUNNING_TIME_OVER);
PRINT_HELPER(state, SERIAL_STATE_FLAG_BAD_HWID);
PRINT_HELPER(state, SERIAL_STATE_FLAG_MAX_BUILD_EXPIRED);
printf("\n");
}
char *read_serial(const char *fname)
{
FILE *f;
if (0 != fopen_s(&f, fname, "rb")) return NULL;
fseek(f, 0, SEEK_END);
int s = ftell(f);
fseek(f, 0, SEEK_SET);
char *buf = new char[s + 1];
fread(buf, s, 1, f);
buf[s] = 0;
fclose(f);
return buf;
}
// The foo() method is very short, but we need it to be an individual function
// so we asked the compiler to not compile it inline
__declspec(noinline) void foo()
{
printf("I'm foo!\n");
}
int main(int argc, char **argv)
{
char *serial = read_serial("serial.txt");
int res = VMProtectSetSerialNumber(serial);
delete [] serial;
if (res)
{
printf("serial number is bad\n");
print_state(res);
return 0;
}
printf("serial number is correct, calling foo()\n");
foo();
printf("done\n");
return 0;
}

 在沒有調試信息的情況下編譯程序,但在鏈接器設置中我們啟用了 MAP 文件的創建——我們將需要它與 VMProtect 一起工作。運行程序后,我們應該看到以下文本:

serial number is bad
state = SERIAL_STATE_FLAG_INVALID

 目前,許可系統仍在測試模式下運行,因為該文件未經過 VMProtect 處理,并且其中不包含許可模塊。在下一步中,我們將創建一個 VMProtect 項目并嘗試保護我們的應用程序。

  • 步驟 2.2:創建 VMProtect 保護項目

 現在,當我們的測試應用程序準備就緒、編譯并在同一文件夾中分配了一個 MAP 文件時,我們可以運行 VMProtect Ultimate 并打開可執行文件。我們需要向項目添加兩個函數:_main(這是 Visual Studio 重命名我們的 main() 的方式)和 foo()。這兩個函數都可以在 VMProtect 的“函數”部分的函數列表中看到。

  • 步驟 2.3:受保護產品的首次啟動

 許可系統已初始化,讓我們嘗試編譯 VMProtect 項目并運行受保護的文件。從命令行運行它后,我們將收到以下消息:

C:\test>dummy_app.vmp.exe
serial number is bad
state = SERIAL_STATE_FLAG_INVALID

 如果你運行 depends.exe 可以看到我們受保護的可執行文件不再使用 VMProtectSDK.dll。這意味著許可模塊已經內置到程序中。您還可以從 VMProtect 查看已用 DLL 的列表,在“詳細信息 | 進口”部分。

1

 我們的受保護程序從 serial.txt 文件中讀取序列號。由于還沒有這樣的文件,許可模塊收到一個被解釋為不正確的空序列號。現在我們切換到“許可證”部分并生成一個序列號。此處詳細描述了此過程,現在我們僅創建一個簡單的序列號,沒有任何限制。

1然后,我們復制序列號(在許可證屬性中選擇“序列號”字段并按下 Ctrl+C),在與受保護應用程序相同的文件夾中創建一個名為 serial.txt 的文件,并將復制的序列號粘貼到那里。現在,如果我們運行我們的應用程序,我們將看到:

C:\test>dummy_app.vmp.exe
serial number is correct, calling foo()
I'm foo
done


許可系統檢查了序列號并發現它是正確的。在下一步中,我們將嘗試應用一些限制并觀察結果。

  • 步驟 2.4:測試結果

序列號有效期

 讓我們創建另一個具有特定到期日期的序列號。例如,2005。這個日期已經過去了,因此我們的序列號一定是不正確的。切換到“許可證”部分,然后單擊工具欄上的“添加許可證”按鈕。在“Add license”對話框窗口中啟用“Expiration date”選項并指定 2005 年 9 月 30 日。創建序列號,將其復制并粘貼到 serial.txt,然后運行程序:

C:\test>dummy_app.vmp.exe
serial number is bad
state = SERIAL_STATE_FLAG_DATE_EXPIRED

 許可模塊返回“序列號已過期”標志。現在,將工作序列號放回 serial.txt 文件并確保許可模塊完全接受它。

C:\test>dummy_app.vmp.exe
serial number is correct, calling foo()
I'm foo
done

將序列號加入黑名單

 讓我們想象一下,我們的“好”序列號已經泄露到 Internet 并且現在已被泄露。我們需要阻止它,以便它在程序的未來版本中不起作用。為此,請在列表中選擇序列號并將主面板中的“已阻止”屬性設置為“是”。目前序列號還沒有被屏蔽,但是當你再次保護文件時,應用程序將不再接受這個序列號。讓我們確保這是真的。如果我們現在運行我們的程序,它應該毫無問題地接受被阻止的序列號,因為這是對被阻止的號碼一無所知的舊版本:

C:\test>dummy_app.vmp.exe
serial number is correct, calling foo()
I'm foo
done

 現在我們復制我們的程序并將其命名為“dummy_app1.vmp.exe”,然后打開 VMProtect 并再次保護應用程序。然后運行這個新版本:

C:\test>dummy_app.vmp.exe
serial number is bad
state = SERIAL_STATE_FLAG_BLACKLISTED

又是舊版本,為了比較:

C:\test>dummy_app1.vmp.exe
serial number is correct, calling foo()
I'm foo
done

舊版本不知道被阻止的序列號并且像以前一樣工作。

 在下一步中,我們將嘗試將代碼鎖定到序列號。但在我們繼續之前,取消阻止序列號并在 VMProtect 中重新對應用程序應用保護,使其再次接受該序列號。或者只是創建一個新的許可證。

  • 步驟 2.5:將代碼鎖定為序列號

 破解程序最常見的方法之一是定位檢查序列號的地方和緊隨其后的條件跳轉。如果序列號是正確的,程序將以一種方式執行,如果不正確,則以另一種方式執行。黑客找到了這個跳轉,并將其替換為“正確”方式的跳轉。讓我們使用這種技術“破解”我們的測試程序。當然,直接在源代碼中。讓我們“關閉”我們的條件跳轉:

char *serial = read_serial("serial.txt");
int res = VMProtectSetSerialNumber(serial);
delete [] serial;
if (false && res)
{

 現在,我們的程序接受任何序列號并正常工作。當然,如果文件被 VMProtect 保護,即使是經驗豐富的黑客也會像我們一樣花費數月的時間來定位和修改條件跳轉。并且考慮到程序會在不同條件下多次檢查序列號,即使是這種簡單的檢查也是相當安全的。但讓我們更進一步。

將代碼鎖定到序列號

 重要的!VMProtect 的演示版本對處理函數的數量有限制:只處理一個函數。所以如果你使用演示版,你應該只在項目中包含 foo() 函數,否則 VMProtect 的演示版可以選擇 main() 函數并且鎖定到序列號將不起作用。

VMProtect 的許可系統允許您將一個或多個功能的代碼鎖定到一個序列號,這樣,如果沒有提供正確的序列號,它們將無法工作。函數體被虛擬化,然后加密,只能用正確的序列號解密。這意味著,即使黑客發現并修復了序列號檢查中的條件跳轉,鎖定到序列號的功能仍然無法使用。讓我們試試這個。在“Functions”部分選擇foo()函數,然后在右側面板中將“Lock to Serial Number”選項更改為“Yes”。

1

 然后,保護應用程序。因為,我們已經“破解”了它,將任意文本放入 serial.txt 文件并運行應用程序。控制臺中出現以下文本

C:\test>dummy_app.vmp.exe
serial number is correct, calling foo()

這意味著,黑客“修復”了條件跳轉,程序以“正確”的方式運行。但是當調用foo()時,程序會顯示一條消息:

1

由于我們將foo()函數鎖定到序列號,而黑客并沒有它,因此試圖解密該函數的代碼導致出現故障,無法繼續執行程序。當按下“確定”時,程序關閉并且“完成”消息永遠不會顯示在控制臺中。

什么應該鎖定到一個序列號?

 將只應在程序的注冊版本中運行的功能鎖定到序列號是有意義的。由于鎖定需要虛擬化,因此您應該考慮到一些性能損失。例如,如果文本編輯器不允許在演示版本中保存結果,則可以將保存文檔功能鎖定為序列號。如果該函數在其運行期間調用其他函數,則沒有必要也將它們鎖定,因為如果沒有 main 函數,它們將沒有任何用處。

 您還應該記住,在沒有序列號的情況下調用鎖定功能會導致程序關閉,并且沒有機會保存工作結果。這就是為什么您應該徹底測試應用程序以確保它不會在試用模式下調用此類功能。在上面的示例中,文本編輯器必須在演示模式下禁用“保存”命令,并且不響應 Ctrl+S 快捷鍵。當然,它也不應該要求在退出時保存文檔。如果您不注意這一點,用戶可能會對您的“錯誤”演示版本感到失望。

鎖定序列號和無效序列號

 調用VMProtectSetSerialNumber()函數時,許可模塊會檢查傳遞給該函數的序列號。只有在檢查時序列號絕對正確時,才會執行加密的代碼片段——未列入黑名單、具有正確的硬件標識符、未過期等。在這種情況下,將執行所有加密過程,直到應用程序關閉,或再次調用VMProtectSetSerialNumber() 。

 一些限制可能會在程序執行過程中“觸發”:例如,程序的運行時間可能到期或序列號到期日期到來。在這種情況下,許可模塊仍然加密并執行鎖定到序列號的功能。之所以如此,是因為受保護的應用程序很難檢測到這些限制觸發的時刻并相應地更改行為(阻止相應的菜單項等)。如果許可模塊突然停止執行鎖定序列號的代碼片段,則極有可能導致應用程序出現故障。這就是為什么在設置序列號時做出決定,并選擇相應的執行模式。

附加信息

 所有位標志、結構格式和函數調用參數的值都可以在該幫助文件的許可系統 API部分找到。使用此部分作為參考,而上面提供的步驟有助于輕松實現典型的即用型保護。

 以上便是本篇文章的分享,如果您有任何疑問或者想獲取更多產品試用/授權/價格信息,可以咨詢我們的了解~


標簽:

本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn


為你推薦

  • 推薦視頻
  • 推薦活動
  • 推薦產品
  • 推薦文章
  • 慧都慧問
掃碼咨詢


添加微信 立即咨詢

電話咨詢

客服熱線
023-68661681

TOP
快播人人看电影网 | 蝌蚪网站免费观看 | 亚洲AV国产精品无码市川京子 | free chinese国产 | 彩色h中文漫画 | 午夜人妻熟女一区二区 | 亚洲欧美一区二区成人片色欲AV | 天天干天天干天天干天天干 | 91极品国产 | 国产精品专区免费观看 | 老太婆xxx| 美女黄网站永久免费观看网站 | 韩国高清乱理伦片在线观看 | 日日摸夜夜添夜夜添A片图片 | 色播影院性播影院私人影院 | 激情色播 | 九九九九热 | 日韩三级免费观看 | 亚洲AV国产爽歪歪无码 | 一区二区传媒有限公司 | 日本A级作爱片金瓶双艳 | 成午夜精品一区二区三区精品 | 中文字幕亚洲自拍 | 蜜臀AV国产精品久久久久 | 久久极品 | 久久精品视频网站 | 最近中文字幕无吗免费 | 一级一级特黄女人精品毛片视频 | 欧美xxxhd | 亚洲蜜桃AV色情精品成人 | 中文版在线乱码在线看 | 国产成人精品一区二区免费 | 最近中文字幕在线看免费完整版 | 嫩小xxxxbbbb | 国产特一级毛片 | 国产精品99久久久久久AV小说 | 蜜臀久久99精品久久久久久做爰 | 精品三级内地国产在线观看 | 99re8在线精品免费观看 | 综合色站 | 自由夫人在线观看 | 国产精品视频第一区二区三区 | 亚洲欧美丝袜制服 | WWW色情成人网站 | 毛茸茸熟女| 日本一卡二卡3卡四卡免费 日本一卡二卡三卡四卡免费观 | 99在线视频免费观看视频 | 欧美日韩免费大片 | 国产自产对白一区 | vodafone荷兰的app| 女人把腿张开叫男人桶免费视频 | 婷婷五月在线视频 | 日本高清免费一本视频在线观看 | 在线观看免费视频 | 一区二区三区好的精华液杨朝越 | 伦理片2488电影伦理片 | 99视频有精品视频高清 | 少妇刮伦人妇A片1级 | 人妻体内射精一区二区三区 | 男女生性毛片免费观看 | 免费播放美女一级毛片 | 亚洲三级无码经典三级 | 久久99久久99小草精品免视看 | www日韩在线 | 国产熟妇无码A片AAA毛片视频 | 精东视频影视传媒制作精品免费版 | 天天做天天爱天天爽综合网 | 无套内射在线无码播放 | 国产精品久久毛片A片软件爽爽 | 欧美视频在线观看欧美大片 | 国产人妻人伦精品久久久 | 性奴抽插乳中出精没射视频搜索 | 成人欧美一区二区三区白人 | 亚洲青春草| 欧美成人丝袜一区二区 | 久久不卡视频 | 亚洲αv久久久噜噜噜噜噜 亚洲xxx视频 | 99久久精品免费看国产漫画 | 久久国产高清一区二区三区 | 自拍电影| 久青草国产手机在线视频 | 国产美女被爽到高潮激情免费A片 | 精品国产一区二区三区四区阿崩 | 国产精品视频a | 日日噜噜夜夜狠狠tv视频免费 | 久久99国产精品成人 | 日本特黄无码毛片在线看 | 国产精品久久久久久久久久久久 | 国产成人无码精品久久久最新A片 | 2024国精产品一二二线精华液 | 强壮公次次弄得我好爽A片小说 | 少妇大叫又粗又大太爽A片 少妇大乳妓女毛片A片 | 欧美videos巨大hd | 又大又硬又粗再深一点 | 福利国产在线 | 久久9精品区-无套内射无码 | swag在线视频 | 久久久精品免费视频 | 亚洲精品乱码久久久久久蜜桃欧美 | 午夜视频在线观看免费观看在线观看 | 一级做a爱过程免费视频超级 | 播播网手机在线播放 | 四虎永久免费影院在线 | YELLOW影视免费 | 哪里看毛片 | 国产精品乱码一区二区三 | 分享一个无毒不卡免费国产 | 最新精品国偷自产在线69 | 50路60路老熟妇啪啪 | 激情明星合成图 | 国产精品毛片无码 | 国产乱子视频 | 制服丝袜 快播 | 婷婷精品视频 | 精品视频在线免费观看 | 97精品视频| 国产成人一区二区三中文 | 日本成人福利 | 中国一级特黄剌激爽毛片 | 色播在线电影 | 波多野吉衣在线观看 | 亚洲欧洲日韩国产一区二区三区 | 日韩欧美中文字幕送别 | 国产精品伦一区二区三级视频 | 草莓app色版 | 在线观看中文字幕国产 | 欧美午夜福利1000集2019年 | 苍井空波多野结衣AA片 | 日韩欧美一区二区不卡 | 国产精品爽爽va在线观看无码 | 天天天做天天天天爱天天想 | 美国vps毛片| 久久人妻国产高清 | 久亚洲AV无码专区A片 | 日本黄页网站免费大全 | 中文字幕乱码在线播放 | 在线不卡日本v二区三 | 日韩特级毛片免费观看视频 | 涩涩视频下载 | 乱码一卡2卡3卡4卡精品 | 四虎影视免费在线观看 | 久久久久久久国产精品影院 | 午夜三级黄色片 | 无尺码精品日本欧美 | 精品久久久久久久久久 | 蜜桃臀无码AV在线观看 | 欧美日本一道道一区二区三 | 2019毛片| 四虎影库在线永久影院免费观看 | 欧美精品18videosex性俄罗斯 | 成年人网站在线观看免费 | 99在线观看视频 | 免费永久在线观看黄网站 | 99久久精品免费国产一区二区三区 | 影音先锋每日最新AV资源网 | 老司机精品视频午夜免费视频 | 精品AV亚洲乱码一区二区 | 日韩一区精品视频一区二区 | 韩国黄色一级毛片 | 九九热伊人 | 欧美亚洲熟妇一区二区三区 | 日本黄色片网站 | 99久久精品免费看国产一区二区三区 | 亚洲AV国产精品无码A片APP | 王梦溪1.08g ed2k | 成人福利免费在线观看 | 97蜜桃小说及图片 | 日本免费在线 | 中文字幕一区在线观看视频 | 国产电影一曲二曲三曲 | 亚洲视频99 | 久久伊人影院 | 农村国产妇女精品一吃春药的效果 | 色情.WWW成人天堂 | 九一国产在线观看 | 国产精品国产香蕉在线观看网 | 精品国产自在现线看久久 | 夜夜骑天天操 | 成人妇女免费播放久久久 | 97视频免费| 特黄A又粗又大又爽A片 | 欧美人妇无码精品久久 | 色综合天天综合网国产成人网 | 欧美一级片在线免费观看 | 深夜成人福利视频 | 日本高清在线看片免费视频 | 忘忧草日本在线社区WWW电影 | 狠狠老司机 | 国产aaaaa一级毛片无下载 | 成人国产精品一级毛片了 | 一本久久综合亚洲鲁鲁五月天 | 动漫纯肉黄无码动漫日本 | 午夜精品久久久久久久第一页 | 亚洲m男在线中文字幕 | 精品手机在线视频 | 久久视频在线视频观看: | 久久久精品日韩免费观看 | 午夜久久免影院欧洲 | 国产SUV精二区69 | 艳妇臀荡乳欲伦交换H在线观看 | 1024国产欧美日韩精品 | 麻生希 qvod 麻婆豆传媒一区二区三 | 韩国色情高潮做大尺度电在线观看 | 无人视频在线观看免费播放下载 | 国产日本一线在线观看免费 | 大菠萝福利中心app 大尺度很黄很肉的小说 | 最好免费观看韩国+日本 | 日韩avdvd | 亚洲精品午夜视频 | 最近最新中文字幕免费1 | 亚洲精品国偷拍自产在线 | 国产在线欧美精品中文一区 | 色综合999| 91福利共享 | 岛国岛国免费V片在线观看 岛国精品无码少妇在线 | 在线黄色小视频 | 97久久伊人精品影院 | 日b视频免费看 | 98国产精品人妻无码免费 | 鲁一鲁色一色 | 肉欲系列短500篇小说合集 | 污视频app破解下载 污视频app网址丝瓜视频 | 国产XXXXX精品AV青椒 | 国产麻豆精选AV | 精品国产青草久久久久福利 | 国产成人亚洲精品91专区高清 | 老熟女交换五十路交换A片视频 | 最近新中文字幕大全高清 | 日韩毛片免费 | 免费高清岛国在线观看 | 边做边爱完整版免费视频播放视频 | 国产在线视频一区二区不卡 | 欧美日韩在线精品一区二区三区 | 在线高清无码欧美久章草 | 高清成人综合 | 99国精产品品质溯源网 | 久久国内精品 | 久久久午夜 | 国产互换人妻好紧HD无码 | 精品三级内地国产在线观看 | 天天综合网天天综合色不卡 | 国产123区在线视频观看 | 最近免费字幕高清在线观看 | 午夜精品福利在线导航小视频 | 91av欧美| 国产乱对白精彩在线播放 | 91精品国产高清91久久久久久 | 7777色 | 美味人妻2中文A片 | 一本久久道| 国产精品久久久久久久 | 一区二区三区影视 | 2020国产微拍精品一区二区 | 色-情-乱-交-二三区视频 | 一区二区人妻精品无码A片 一区二区人妻无码欧美 | 日本无码人妻丰满熟妇5G影院 | 亚洲精品无码AAAAAA片 | 九热视频| 高清网站 | 精品99卡1卡2卡3乱码 | 国产乱码人妻一区二区三区四区 | 99久久精品免费看国产免费 | 亚洲中文久久精品AV无码 | 欧美高清一区二区三区 | 99r在线 | 日韩在线黄色 | 香港aa三级久久三级不卡 | 我要看WWW免费看插插视频 | 四虎影视2024最新址 | 日韩美无码有码人妻精品 | 中文字幕精品久久久久人妻红杏1 | 在线欧美 精品 第1页 | 精品国产人妻一区二区三区免费 | 99久久99久久精品免费看子伦 | 午夜精品久久久内射近拍高清 | 伊人国产视频 | 欧美精品91 | 久久艳务乳肉豪妇荡乳A片 久久夜色噜噜噜亚洲AV0000 | 丁香花丁香五香天堂网 | 看全色黄大色黄大片爽一次 | 中文字幕在线观看免费视频 | 色撸橹图片2015最新版 | 91tv在线 | 在线色小说 | 亚洲欧美一区二区三区不卡 | 国产欧美日本在线 | 最新国产成人盗摄精品视频 | 国产自偷自拍 | 欧美一区视频在线 | 女人下边被添全过程A片图片 | 黄页视频网站 | 少妇性荡欲午夜性开放视频剧场 | 国产人久久人人人人爽 | 久久精品国产精品亚洲艾 | 91在线视频福利 | 日本jizz视频 | 三级韩国三级日产三级 | 亚洲欧美日韩中文字幕久久 | 中文字幕一区波多野结衣 | 国产一区二区三区四区精华液毛 | 日本三级观看高清免费 | 荡公乱妇第1章方情公憩系列大 | 精品人妻无码一区二区三区VOD | 国产精品爱久久久久久久小说 | 成人福利在线看 | 成人福利社 | 8x海外永久免费视频看看 | 国产97视频在线观看 | 又硬又粗进去好爽A片天美APP | 最近高清免费观看日本 | 性欧美高清短视频免费 | 欧美激情综合五月色丁香 | 深夜国产在线 | 中文字幕不卡免费高清视频 | 黄色网址免费观看视频 | 亚洲AV无码久久流水呻蜜桃久色 | 91精品国产高清久久久久 | 97在线视频精品 | 亚洲一卡2卡3卡4卡乱码 在线 | freesex呦交群乱| 97在线线免费观看视频在线观看 | 三级视频兔费看 | 色欲AV国产精品一区二区 | 一个人免费视频观看在线www | 女网址www女 | 亚洲精品色婷婷在线蜜芽 | 欧美日韩在线精品一区二区三区 | 古装无遮挡一级毛片 | 在线久 | 一本久道久久综合中文字幕 | 777爽死你无码一区二区 | 午夜一区二区免费视频 | 欧美精品网站 | 国产精品人妻一区二区三区无码 | 国产人妻无码鲁丝片久久麻豆 | 久久福利视频导航 | 国产中文精品无码欧美综合小说 | 大陆国语自产精品视频在 | 无限观看韩国动漫免费观看大全 | 久久99国产精品久久99小说 | 欧美精品第欧美第12页 | 久久这里只有精品6 | 欧美无人区码卡二三卡四卡 | 日本人妖miran护士 | 国产日韩精品一区在线观看播放 | 国产成人久久精品推最新 | 国产精品久久久久久99人妻绯闻 | jizz在线观看 | 亚洲欧洲校园自拍都市 | 欧美成人精品第一区二区三区 | 亚洲中文国产最新在线观看 | 亚洲一级在线 | 99久久久无码国产精品免费人妻 | 国产精品67人妻无码久久 | 国产精品女上位在线观看 | 麻豆精品一卡二卡三卡 | 全肉整夜不拔男男车文 | GV无套内射日本帅哥 | 色情婷婷 | va亚洲va日韩不卡在线观看 | 亚洲欧洲日产国无高清码图片 | 久久久久香蕉 | 超碰97人人做人人爱少妇 | 国产在线是视频有精品 | 久热在线这里只有精品 | 京野结衣免费一区二区 | 古装一级淫片a免费播放口 古装一级无遮当一级毛片 古装一级毛片手机免费看 古装一级毛片免费观看 | 极品销魂一区二区三区 | 欧美激情在线一区二区三区 | 99视频这里只有精品20 | 日本一区二区视频 | 中文字幕国产专区 | 日韩在线观看视频免费 | 岛国黄色| WWW亚洲精品久久久乳 | 午夜理论在线观看不卡大地影院 | 国产成人午夜性a一级毛片 国产成人午夜福在线观看 国产成人无精品久久久久国语 | 免费看少妇高潮A片特黄 | 强行征服丰满人妻 | 国内精品伊人久久久久 | 国内一本到不卡在线观看 | 宅男色影视亚洲人在线 | 久久综合久色欧美综合狠狠 | 中文无码不卡的岛国片 | 美女被抽插舔B到哭内射视频免费 | 日韩精品 欧美 | 91亚洲自偷手机在线观看 | 亚洲AV无码A片一二三区 | 国产一区二区三区不卡在线观看 | 近親五十路六十被亲子中出 | 成人做爰视频WWW在线观看 | 色情播播 | 99久久精品免费视频 | 久久久久久久久久久9精品视频 | 成年ssswww中国女人 | 日本女人下面毛茸茸 | 2024精品出轨人妻国产 | 成人性视频在线三级 | 午夜一级做a爰片久久毛片 午夜亚洲视频 | 国产一国产一级毛片古装 | 麻豆精品国产精华液好用吗 | 一级毛片免费在线观看网站 | 91福利国产在线观一区二区 | 在线视频www777788coom | 在线看免费无码A片视频 | 日本三级带日本三级带黄国产 | 69式在线观看免费视频播放 | 国产69精品久久久久99不卡 | 小明永久成人一区二区 | 琪琪see色原网色原网站 | 隔壁人妻偷人BD中字 | 再插深点嗯好大好爽 | 国精产品999永久中国有限公司 | 久久最新地址获取 | 免费观看的成年网站在线播放 | 高清国产天堂在线BT免费 | 久久97精品久久久久久久看片 | 性一交一乱一伦一A片 | 亚洲 欧美 综合 高清 在线 | 九九久久精品 | 亚洲国产精品久久久天堂 | 精品国产一区二区三区四区在线看 | 国产成人午夜精品影院 | 男女一边摸一边做爽爽的动态图 | 99久久免热在线观看6 | 国产亚洲精品VA片在线播放 | 亚州AV无码乱码色情 | 偷拍亚洲另类无码专区 | 午夜精品视频在线观看美女 | 乱码一卡二卡新区永久入口 | 公和我做爽死我了A片N | 亚洲精品中文幕一区二区 | 亚洲婷婷天堂在线综合 | 97免费观看视频 | 上色天天综合网 | 日本韩国亚洲欧美在线 | 精品91一区二区三区 | 西西人体做爰大胆图片 | 久碰久| 宅男噜噜66 | 开心婷婷丁香 | 成人亚洲区无码偷拍 | 青青自拍视频一区二区三区 | 91欧美一区二区三区综合在线 | 狠狠色色综合网站 | 欧美流行 在线播放 | 艳情短篇辣文合 | 69欧美xxxxx色护士视频 | 西部矿业网 | 草草CCY丫C0影院 | 国产三级在线 | 欧美做爰免费大片视频 | 中文字幕一区二区三区在线观看 | 亚洲精品一区二区在线看片 | 四虎www| 91网址在线 | 黑人两根一起强进30p | 久久精品一区二区免费看 | 丰满女邻居做爰BD电影 | 真实一级一级一片免费视频 | 国产精品A久久久久久久久 国产精品AV国片偷人妻麻豆 | 国产一卡2卡3卡4卡无卡免费视频 | 国产人妻高清国产拍精品 | 日本高清免费不卡在线 | 又长又粗又硬宝贝想要爽 | 免费一级淫片aaa片毛片a级 | 老司机免费视频福利0 | 99热久久久无码国产精品性麻豆 | 国产福利一区二区 | 日本三级网址 | 国色天香中文字幕视频 | 国产在线视频一区二区不卡 | 精品少妇一区二区三区A片 精品日本亚洲一区二区三区 | 美女大乳图片 | 国产香蕉在线观看 | 99re最新网址 | 男男腐文污高干嗯啊快点1V1 | 国内精品视频九九九九 | 免费国产精品视频在线 | xxxwww黄色| 日韩美无码有码人妻精品 | 国产成人免费福利网站 | 国内精品久久久久久久久久久久 | 日韩精品卡4卡5卡6卡7卡3卡 | 日本一在线中文字幕天堂 | 国产AV无码免费一区二区 | 国色天香视频在线社区 | 成人小视频在线观看 | 秋霞伦理机在线看片 | 亚洲精品国产不卡在线观看 | 亚洲黄色网页 | 久久精品国产99国产精品小说 | avtt天堂网影音先锋 | 微拍福利88 | 亚洲精品动漫免费二区 | 男人吃奶捏奶很爽视频免费 | 伊人电院网| 狠狠躁天天躁夜夜躁婷婷 | 丁香wyt| 久久精品国产精品亚洲毛片 | 新超碰97在线观人人澡 | 强被迫伦姧惨叫小说 | 蜜臀AV国产精品久久久久 | 国产人成高清在线视频99 | 乱人伦小说500篇目录 | 亚洲一区二区三区高清 | 日本六十路无码熟妇交尾 | 欧美另类老女人 | 国内视频自拍 | 国产久操视频 | 91福利视频合集 | 欧美日韩激情一区二区三区 | 男女激烈精交GIF动态图 | 亚洲欧美日韩中文综合v日本 | 亚洲中文字幕一二三四区苍井空 | 韩国黄色一级毛片 | 最新在线伦费观看中文 | 国产精品久久久久久久久99热 | 日韩深夜福利视频 | www在线小视频免费 XL上司带翻译不打马赛 | 做A爰片久久毛片A片的价格 | 国产麻豆视频免费观看 | 影音先锋中文字幕无码资源站 | 狠狠a| 站长推荐国产精品视频 | 豪妇荡乳1一5潘金莲2在线 | 日日撸网站 | 91亚洲精品国产自在现线 | 国产精品婷婷五月久久久久 | 国产日韩欧美在线播放 | 亚洲第一页在线播放 | 性生大片免费观看网站YY | 狠狠色伊人亚洲综合网站l 狠狠色伊人亚洲综合第8页 | 奇米影视777四色米奇影院 | 艳妇臀荡乳欲伦岳TXT免费下载 | 六月色婷婷| 欧美黄色小说 | 日本一区色情无码视频在线观看 | 成人在线视频网站 | 欧美日韩另类在线专区 | 日韩欧美一区二区三区在线 | 校园舂色另类小说经典色 | 色偷拍亚洲偷自拍 | 午夜福利小视频400 午夜副利电影手机高清在线直播app下载 | 国产亚洲精品久久久久久国 | 久久伊人中文字幕麻豆 | jizz亚洲 | 精品久久一区二区三区 | 四房播播 快播 | 97视频在线免费 | 国产女人18毛片水真多 | 人妻超级精品碰碰在线97视频 | 国产在线观看免费观看不卡 | 黄色在线观看视频 | 在线观看亚洲一区二区 | 国产熟妇搡BBBB搡BBBB搡 | 色姑娘久久综合网天天 | 最近中文字幕高清中文字幕网1 | 国产亚洲3p无码一区二区 | 欧美另类老妇 | 在线观看免费视频 | 中文字幕完整视频高清 | 久久久久国产精品免费看 | 一区二区三区影视 | 国产v片在线观看 | 狠狠色综合7777久夜色撩人 | 老头把我添高潮了A片视频 另类老太婆BBWBBW | 免费国产麻豆传 | 丁香婷婷亚洲六月综合色 | 无码免费人妻A片AAA毛片一区 | 国产a级一级久久毛片 | 亚洲色图在线观看视频 | 国产乱码免费卡1卡二卡3卡四卡 | 张馨予疯狂床照视频 | 日产国产欧美韩国在线 | 免费国产在线观看老王影院 | 亚洲小说在线图片色 | 国产精品AV一区二区三区不卡蜜 | 国产成人综合视频 | 8x成人永久在线观看视频 | 午夜视频在线观看免费观看在线观看 | 色吧新地址 | 国产精品毛片在线完整版SAB | 在线播放波多野结衣 | 2024天天拍拍天天爽视频 | 最近2019免费中文字幕视频三 | 色秀视频免费网站在线观看 | 久久综合结合久久很很很97色 | 久久强奷乱码老熟女 | 中文字幕在线视频网站 | 日本jizzjizz| 成年人看的黄色 | 波多野结衣hd在线播放 | 性久久久久久久久久 | 黄色一级视频在线播放 | 亚洲一区免费看 | 91综合网 | 午理论理影片被窝 | 国产精品第一国产精品 | 国产精品色情国产三级在 | 欧美做爰免费大片视频 | 69国产成人综合久久精品 | 国产伊人久久 | 亚洲精品一区二区三浪潮AV | 老师的兔子好软水好多无弹窗 | 亚洲色无色A片一区二区农夫山泉 | 国产一级视频在线 | 青青草久热精品视频在线观看 | 深爱五月开心网亚洲综合 | 久久久久久久久久免观看 | 毛片基地看看成人免费 | 日韩 图片小说 | 狠狠耸动撞击bl | 欧美中出在线 | 制服丝袜99 | 一本色道亚洲精品久久 | 在线视频一区二区三区四区 | 日本妇人成熟A片高潮小说 日本高清免费观看高清电影 | 午夜精品视频在线观看 | 性欧美丰满xxxx性久久久 | 99re在线视频播放 | 黄网国产 | 免费国产成人高清在线观看网站 | 国产一区二区福利 | 日日摸夜夜添夜夜爽出水 | 嗯灬啊灬把腿张开灬A片视频网站 | 永久免费毛片 | 久久综合偷拍无码 | 野花社区www在线资源 | 久久综合桃花 | 日本国产成人精品无码区在线网站 | 强壮公让我夜夜高潮A片 | 成人福利在线 | 精品福利资源在线导航网址 | 成年女人免费播放影院 | 欧美日本一二三区 | 强睡年轻的女老板2中文电影 | 自拍日韩亚洲一区在线 | 伦韩国理片在线观看 | 成人午夜精品网站在线观看 | 久久久久毛片免费观看 | 尤物一区 | 日韩伦理片 | 吉泽明步 超m自缚痴女 | 亚洲一区综合在线播放 | 最近更新中文字幕完整版视频 | 中文乱码35页在线观看 | 亚洲精品一区三区三区在线观看 | 免费欧洲毛片a级视频 | 国产偷国产偷亚洲高清午夜 | 国产成人综合95精品视频免费 | 漂亮的保姆7日本在线播放 漂亮人妻被公日日躁国产 漂亮人妻洗澡被公强欧美精品无码 | 乱系列140章肉艳1一12 | 香蕉久久综合 | 一色屋精品亚洲香蕉网站 | 97视频免费在线 | 污网址在线观看 | 99re在线| 日本阿v视频高清在线中文 日本成熟少妇高潮A片 | 四虎免费在线观看视频 | 国产精品久久久久久人妻精品流 | 国产97精品久久久天天A片 | 国产精品久久欧美一区 | 日本少妇浓毛BBWBBW | A国产一区二区免费入口 | 日韩欧美一区二区三区四区 | 久久综合色老色 | 久久99精品久久只有精品 | 黄页网站 | 欧美一级片网 | 妞干网免费在线视频 | 中国xxxx视频播放50 | 国产网站免费 | 工口肉肉彩色不遮挡 | 日本10000部拍拍拍免费视频 | 国产精品久久久久久久久鸭 | 九九热在线视频观看这里只有精品 | 亚洲AV成人天堂影院 | 8x永久在线视频 | 97精品国产高清自在线看超 | 色妇色综合久久夜夜 | 最近最好的2019中文字幕 | 色播影院性播免费看 | 中文字幕在线观看网址 | 免费看999永久A片视频 | 一级毛片视频在线 | 在线黄色播放 | 教官你的太大了芊芊h | 最新露脸国产精品视频 | 成人午爽爽爽A片免费下载 成人午夜A片产无码免费视频日本 | 幼香阁网址 | 特黄aa级毛片免费视频播放 | 最近中文字幕完整版视频在线看 | 黄色片在线网站 | 级毛片久久久毛片精品毛片 | 和日本免费不卡在线v | 97在线视频精品 | 天天性综合 | 久久好在线视频 | 97色伦图片97综合影院久久 | 免费黄色网址入口 | 将军强势求欢(高H) 交换邻居波多野结衣中文字幕 | 六月丁香在线观看 | 国产熟妇的荡欲午夜视频 | 国产免费无码又爽又刺激A片小说 | 性欧美巨大hd | 范冰冰一级做a爰片久久毛片 | 网址在线观看你懂的 | 中文字幕高清免费不卡视频 | 久久99精品久久久久久噜噜丰满 | 四虎影院免费观看 | 91久久香蕉国产线看观看软件 | 毛片网站网址 | 日韩精品影视 | 亚洲一区二区色情苍井空 | 好屌草这里只有精品 | 精品一区二区三区免费毛片 | 麻花传剧原创mv在线观看 | 日韩你懂得 | 有坂深雪初尝黑人在线观看 | 成人精品一区二区三区校园激情 | 9国产露脸精品国产麻豆 | 开心色| 亚洲不卡一区二区三区 | 91福利小视频 | 四虎2019| 九九热在线免费观看 | 免费国产a国产片高清不卡 免费观看一级欧美在线视频 | 生活一级毛片 | 色天天综合色天天害人害己 | 日韓無碼人妻不倫A片 | 最近韩国动漫免费观看视频 | 秋霞伊人 | 四川BBB搡BBB爽爽视频 | 色尼玛亚洲综合 | 四虎影视最新2024在线观看 | 做爰全过程免费的视频在线观看 | 亚洲h视频 | 影音先锋资源av | 精品久久一区二区三区 | 亚洲女同精品中文字幕 | 激情小说综合网 | 春色校园综合网 | 激情五月黄色 | 国产麻豆一级在线观看 | 中文乱码在线中文字幕中文乱码 | 国产一级在线播放 | 久久久日韩成人精品电影 | 欧美亚洲免费久久久 | 免费黄色网址在线播放 | jizzjizzjizz亚洲18| 亚洲欧美日韩人成 | 涩涩免费网站 | 秋霞国产 | 日本高清免费视频毛片 | 日韩视频在线播放 | 国产中文字幕久久 | 在线看伦理电影 | 日本黄页网站免费 | 免费播放一区二区三区 | 中文字幕AV久久一区二区 | 色图片网 | 午夜毛片在线观看 | 国产网站黄色 | 亚洲AV无码男男A片在线观看 | 国产乱码一二三区精品 | 午夜副利电影手机高清在线直播app下载 | 色妞基地 | 午夜精品视频在线 | 无码激情做A爰片毛片A片蜜桃 | 一日情 | 欧美激情综合五月色丁香 | 校花岔开玉腿欲液横流 | 亚洲AV又黄又爽超级A片软件 | 精品AV综合一区二区三区 | 攻把受做得合不拢腿play | 我和丰满岳疯狂做爰 | 色爱影院| 激情明星合成图 | 免费精品一区二区三区A片 免费黄色欧美 | 日本哺乳期xxxxhd奶水 | 中国一级特黄大片毛片 | 久久香蕉精品视频 | 国产成人综合亚洲动漫在线 | 香蕉成人伊视频在线观看 | 成人免费20242024被爆出 | 999国产高清在线精品 | 男女做爰全过程免费现看 | 日本高清视频免费看 | 亚洲精品一卡2卡3卡4卡乱码 | 午夜免费观看_视频在线观看 | 极品少妇高潮啪啪AV无码 | 天堂网在线www资源在线 | 成人午夜小视频 | 日本69sex护士wwxx| 国产精品久久久久久久y | 阳茎伸入女人阳道视频 | 秋霞电影伦理伦理片 | 国产亚洲AV综合一区二区A片 |