當前位置:首頁 » 編程軟體 » androidopenssl編譯

androidopenssl編譯

發布時間: 2023-10-18 22:38:18

❶ OpenSSL的編譯和使用

個人博客地址: https://blog.yookingh.cn
該文章地址: https://blog.yookingh.cn/dev/201215-openssl.html

從NDK r19開滑知始,由於gcc兼容clang的編譯方式有問題,該版本乎高已經移除了相關gcc文件,所以用老方法交叉編譯Openssl的時候,會提示找不到gcc文件。

參考: https://blog.csdn.net/zoujin6649

build-android-single.sh 腳本文件及注釋如下歲讓尺

執行腳本

修改腳本為 循環編譯 ,編譯所有需要的文件

build-android-all.sh 腳本文件內容如下

執行腳本方法同上,如為第一次執行(即沒有Makefile文件),仍需要執行 ./config 循環編譯無需執行 make clean

參考: https://blog.csdn.net/iamadk

Python 腳本內容

創建編譯執行腳本

執行編譯腳本同r15,第一次需要執行 ./config 生成Makefile,第二次或以上需要清除make記錄即 make clean ,接下來依舊是創建 循環編譯 腳本

❷ 編譯調試Android系統原生App - 以Settings為例

本文已過時,最新文章:向大家推薦《使用 AS 開發 System App》 https://xiaozhuanlan.com/system-app

Android原生系統帶有許多原生的App,比如 瀏覽器、錄音機、計算器、設置 等,有些時候,我們需要用到一些系統的功能,或者是對已有的功能做二次開發,比如我上學時給一個公司做過一個Launcher和Wizard,就需要用到系統設置中的某些功能,比如Wifi、聲音、顯示等功能,於是就需要從Settings源碼中提取出需要的功能。

特別是公司自己定製Android系統,需要在上面做一些 系統級的App 的時候,原生App已有的功能就可以通過編譯其源碼的方式直接拿過來改改就能用,而且可用度很高。

這里有兩種情況,分為 原生 的和 公司定製 的系統。無論是原生的還是定製的,類似於Settings這樣需要使用到 系統級或隱藏API 的App,都需要系統簽名文件和編譯系統源碼後得到相應的jar包才可以在IDE中編譯,因為標准SDK根本沒有那些API可供調用。

舉個栗子:

需要額外的Jar就需要自己編譯系統源碼啦,這個是比較麻煩的,有興趣可以試試自己編譯定製自己的Android系統。

** 注意,既然是定製的,源碼、jar、簽名文件,還有系統都是一一對應的,你不能拿其他公司的系統簽名來給你公司的系統app簽名,這樣無法運行的。 **

有了源碼,下一步當然是要跑起來啦。

建議都使用Eclipse來編譯,不要使用AS,因為AS編譯大型的原生App能卡到你吐血,而且出錯提示也不友好。但是用過AS的人都不想再碰Eclipse了有沒有??別急,可以先用Eclipse編譯過了,再貼到AS中,這樣好很多,也很節省時間。

初始化:

放入源碼:

修正res錯誤:

修正src錯誤:

使用到系統級API的,或者AndroidManifest.xml文件中聲明了

那麼沒有系統簽名,直接debug簽名運行是不行的,需要向底層工程師要系統的簽名文件,在源碼目錄
build\target\proct\security
下的 platform.pk8 和 platform.x509.pem ,如果你想看此次編譯Settings是否已成功了,可以適當的在入口加一下Log,然後導出未簽名的apk,使用系統簽名進行簽名後,放到 /system/app/ 下替換掉Settings.apk,然後重啟系統,打開設置,看看Logcat是否輸出里加入的Log。

在不知道系統簽名可以轉換成debug簽名前,老實說我一直都是用Log的方式調試,太特么痛苦了。現在知道後整個人都懵逼了。

我們都希望可以像調試普通app那樣調試系統app,以下是如何通過 openssl 將 platform.pk8 和 platform.x509.pem 轉換成 debug.keystore 文件:

三個命令

此方法來自: http://curlog.com/2016/08/30/android-pk2debug-keystore/

Mac自帶openssl,Linux和Win需要安裝。

然後就可以使用得到的debug簽名配置到eclipse後愉快的調試啦,當然,得先把系統中已經存在的app先刪除掉。然後重啟系統,至於如何配置eclipse的debug簽名,請Google。

使用過AS後,當然希望在AS中也可以調試系統App,抽空再寫篇相關編譯和調試的文章。如果這篇文章幫到你了,給個贊唄。

❸ 如何生成release版本的Android系統

1.使用platform密鑰對apk進行簽名
1.1.進入<Android_Source_Path>/build/target/proct/security,找到【platform.pk8】和【platform.x509.pem】系統密鑰。
1.2.進入<Android_Source_Path>/build/tools/signapk找到SignApk.java,運行javac編譯成SignApk.class
1.3.執行命令java com.android.signapk.SignApk platform.x509.pem platform.pk8 input.apk output.apk
至此,完成。

2. 對1的補充:
<Android_Source_Path>/build/target/proct/security下有多對密鑰,詳細如下:

The following commands were used to generate the test key pairs:

development/tools/make_key testkey '/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/[email protected]'
development/tools/make_key platform '/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/[email protected]'
development/tools/make_key shared '/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/[email protected]'
development/tools/make_key media '/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/[email protected]'

The following standard test keys are currently included:

testkey -- a generic key for packages that do not otherwise specify a key.
platform -- a test key for packages that are part of the core platform.
shared -- a test key for things that are shared in the home/contacts process.
media -- a test key for packages that are part of the media/download system.

These test keys are used strictly in development, and should never be assumed
to convey any sort of validity. When $BUILD_SECURE=true, the code should not
honor these keys in any context.

signing using the openssl commandline (for boot/system images)
--------------------------------------------------------------

1. convert pk8 format key to pem format
% openssl pkcs8 -inform DER -nocrypt -in testkey.pk8 -out testkey.pem

2. create a signature using the pem format key
% openssl dgst -binary -sha1 -sign testkey.pem FILE > FILE.sig

extracting public keys for embedding
------------------------------------
it's a Java tool
but it generates C code
take a look at commands/recovery/Android.mk
you'll see it running $(HOST_OUT_JAVA_LIBRARIES)/mpkey.jar

3.對3的補充:
在運行第三步的命令前,請在當前的工作目錄下新建如下結構的文件夾:com.android.signapk,然後將第二步編譯生成的SignApk放入該目錄下。或者也可以將SignApk.java的package聲明刪除後再運行javac編譯。

命令java com.android.signapk.SignApk platform.x509.pem platform.pk8 input.apk output.apk
不單可以對apk文件進行重簽名,也可以對所有的zip文件進行重簽名,包括ROM文件。

網上Android數字簽名大多是與Android APK相關,而介紹Android系統簽名的方法卻不多。正巧前段時間幫別人做CTS 認證,需要用到給Android系統簽名。
為什麼需要給Android系統簽個名才能進行CTS認證呢?原來通過make -j4編譯出來的system.img使用的是test key,這種類型的key只適用於開發階段,而且這種秘鑰是公開的,誰都可以使用。當發布一款android產品,就需要另外給整個系統簽個名,防止被別人盜用。這種系統就是release版本的Android系統。

下面就詳細介紹下整個過程。
1、生成加密key文件
要對Android系統進行簽名,需要生成四種類型的key文件。
a)releasekey
b)media
c)shared
d)platform

就拿releasekey為例簡單介紹下生成過程。
1)進入/android_src/development/tools目錄。
/development/tools$ ls
apkcheck etc1tool hosttestlib jdwpspy makedict mkstubs
axl finnused idegen line_endings make_key monkeyrunner zoneinfo
2)使用make_key工具生成簽名文件
development/tools$ sh make_key releasekey '/C=CN/ST=JiangSu/L=NanJing/O=Company/OU=Department/CN=YourName/emailAddress=YourE-mailAddress'

Enter password for 'releasekey' (blank for none; password will be visible): mypassword <------- 設置密碼
creating platform.pk8 with password [mypassword]
Generating RSA private key, 2048 bit long molus
...............+++
........................................................+++
e is 3 (0x3)
這里要順便介紹下make_key的參數。第一個參數是要生成key的名字,第二個參數是關於公司的信息。
key的名字很好理解,就是前面提到的4中類型的key,公司信息的參數比較多,它們的含義如下:
C ---> Country Name (2 letter code)
ST ---> State or Province Name (full name)
L ---> Locality Name (eg, city)
O ---> Organization Name (eg, company)
OU ---> Organizational Unit Name (eg, section)
CN ---> Common Name (eg, your name or your server』s hostname)
emailAddress ---> Contact email address

這樣就生成了一組releasekey,另外3種類型的key的生成方法也基本一樣。
生成後的結果如下:
/development/tools$ ls
makedict media.pk8 mkstubs platform.pk8 releasekey.pk8 shared.pk8
make_key media.x509.pem platform.x509.pem releasekey.x509.pem shared.x509.pem
*.pk8是生成的私鑰,而*.x509.pem是公鑰,生成時兩者是成對出現的.

2 、 把pk8和x509.pem文件拷貝到vendor/Mol/security/proct_mol目錄
/android_src/vendor/Mol/security/proct_mol$ cp ../../../../development/tools/*.pk8 ./
/android_src/vendor/Mol/security/proct_mol$ cp ../../../../development/tools/*.pem ./
這一部雖然不是必須的,但最好還是這樣做下,由於牽涉到項目的原因,產品和產品型號就用Mol和proct_mol代替了.

3 、 回到根目錄android_src
/android_src/vendor/Mol/security/proct_mol$ cd ../../../../
大家看後肯定覺得這一步很多餘,根本沒有必要單獨提出來,但後來證明把這步提下還是很有必要的,因為第5步的操作必須要在根目錄下執行,不然會出錯.
4 、編譯系統
/android_src$ make -j4 PRODUCT-proct_mol-user dist
這個怎麼跟平時的編譯不一樣,後面多了兩個參數PRODUCT-proct_mol-user 和 dist. 編譯完成之後回在/android_src/dist/目錄內生成個proct_mol-target_files開頭的zip文件.這就是需要進行簽名的文件系統.

5 、開始簽名
android_src$ ./build/tools/releasetools/sign_target_files_apks -d vendor/Mol/security/proct_mol/ out/dist/proct_mol-target_files.zip out/dist/signed_target_files.zip
ERROR: no key specified for:

CalendarWidget.apk
Contacts_yellowpage.apk
SnsAppMain.apk
fbandroid-1.5.0.apk
AnalogClockWidget.apk
MessageWidget.apk
NewsWidget.apk
上面的意思是使用sign_target_files_apks工具採用vendor/Mol/security/proct_mol/下的key對proct_mol-target_files.zip文件進行簽名,並把簽名結果放在out/dist/signed_target_files.zip里.
從上面的簽名結果看,簽名並沒有成功,原因是由於有些apk程序已經簽過名了或者找不到對應的key. 可以通過設置過濾,不對上面的程序進行簽名.方法如下:
通過參數"-e <apkname>=" 來過濾這些程序.
android_src$ ./build/tools/releasetools/sign_target_files_apks -d vendor/Mol/security/proct_mol/ -e CalendarWidget.apk= -e Contacts_yellowpage.apk= -e SnsAppMain.apk= -e fbandroid-1.5.0.apk= -e AnalogClockWidget.apk= -e MessageWidget.apk= -e NewsWidget.apk= out/dist/proct_mol-target_files.zip out/dist/signed_target_files.zip

Enter password for vendor/Mol/security/proct_mol//media key> <----- imput the password
Enter password for vendor/Mol/security/proct_mol//platform key> <----- imput the password
Enter password for vendor/Mol/security/proct_mol//releasekey key> <----- imput the password
Enter password for vendor/Mol/security/proct_mol//shared key> <----- imput the password
rewriting RECOVERY/RAMDISK/default.prop:
replace: ro.build.tags=test-keys
with: ro.build.tags=release-keys
NOT signing: CalendarWidget.apk
NOT signing: Contacts_yellowpage.apk
signing: Mms.apk
signing: SoundRecorder.apk
signing: AccountAndSyncSettings.apk
signing: Camera.apk
.......................................................................
rewriting SYSTEM/build.prop:
replace: ro.build.tags=test-keys
with: ro.build.tags=release-keys
replace: ro.build.description= test-keys
with: ro.build.description= release-keys
replace: ro.build.fingerprint=...........................
with: ro.build.fingerprint=.............................
signing: framework-res.apk
done.

這樣就完成了android系統的簽名工作.

6 、生成image文件
android_src$ ./build/tools/releasetools/img_from_target_files out/dist/signed-target-files.zip out/dist/signed-img.zip
creating boot.img...
creating recovery.img...
creating system.img...
creating userdata.img...
cleaning up...
done.
使用img_from_target_files工具生成signed-img.zip文件.signed-img.zip文件包含了boot.img,userdate.img,system.img文件等.

7 、通過fastboot下載signed-img.zip文件
fastboot update signed-img.zip
通過fastboot就可以把簽了名的系統文件下載到手機上了。

❹ 如何把openssl庫在VxWorks下進行編譯或者說把openssl庫編譯成vxworks下能用的.a庫文件,如何去做

下一個完整版的cygwin,免費開源的東西,官網上就有下的
然後將工程文件拷入cygwin工作目錄
在cygwin控制台下CD到工程目錄

與上面那些步驟同時,先進入Tornado的host/x86-win32/bin目錄,把該目錄下的cygwin1.dll刪除或者重命名(建議保留,因為Tornado編譯還要用這個),然後把這個bin目錄設置到windows的path環境變數中。記下bin目錄下所用的編譯器cc和歸檔程序ar的名字(比如PPC的架構就叫ccppc和arppc)

再在cygwin控制台下輸入 CC=ccppc AR=arppc ./configure 運行(PPC為例,如果為其他架構等號後面的值做相應修改)
等配置完畢後打開生成的Makefile文件 找到-IInclude這一個flag修改成-I/cygwindriver/e/tornado/target/h (這里目錄也只是舉例,根據自己情況修改)
再之後加上-I/lib/include
保存

再在cygwin控制台下輸入make運行
這時候應該就可以開始編譯了

但是光做這些修改可能還是會多多少少的報錯
移植細節我這一時半會也沒辦法細說 只能自己看報錯來改了

❺ 在MACOX上的ANDROIDSTUDIO如何編譯OPENSSL原生的C庫成動態的.SO庫

目前暫不支持開發工具編譯C、c++代碼生成so文件,應該後續版本會有的。
.so 為共享庫,是shared object,用於動態連接的,和dll差不多,可以這樣調用so文件:
調用 System.out.println(System.getProperty("java.library.path"));
得到/usr/java/jdk1.5.0_13/jre/lib/i386,將SO文件放在該目錄下
運行java程序,輸出了由C語言函數計算出的結果

❻ android 怎麼使用自己編譯的openssl

項目上面右擊如圖:

❼ 求問怎麼編譯OpenSSL,得到libssl.a 和libcrypto.a,跪求

如何在Windows下編譯OpenSSL (VS2010使用VC10的cl編譯器)
1、安裝ActivePerl//初始化的時候,需要用到perl解釋器
2、使用VS2010下的Visual Studio 2010 Command Prompt進入控制台模式(這個模式會自動設置各種環境變數)
3、解壓縮openssl的包,進入openssl的目錄
4、perl configure VC-WIN32
盡量在這個目錄下執行該命令,否則找不到Configure文件,或者指定完整的Configure文件路徑。
5、ms\do_ms.bat
解壓目錄下執行ms\do_ms.bat命令
6、nmake -f ms\ntdll.mak
7、nmake -f ms\nt.mak

編譯後
在openssl解壓目錄下執行,完成編譯後。輸出的文件在out32dll (6), out32 (7)裡面,包括應用程序的可執行文件、lib文件和dll文件

注意:在運行第五步時,cl編譯器會抱怨說.\crypto\des\enc_read.c文件的read是The POSIX name for this item is deprecated(不被推薦的),建議使用_read。呵呵,我可不想將OpenSSL中的所有的read函數修改為_read。再看cl的錯誤代碼error C2220,於是上MSDN上查找:
warning treated as error - no object file generated
/WX tells the compiler to treat all warnings as errors. Since an error occurred, no object or executable file was generated.
是由於設置了/WX選項,將所有的警告都作為錯誤對待,所以。。。

於是打開OpenSSL目錄下的MS目錄下的ntdll.mak文件,將CFLAG的/WX選項去掉,存檔。。。
繼續執行nmake -f ms\ntdll.mak

=================================
一、編譯並安裝OpenSSL
1、按照標准步驟從源代碼編譯安裝OpenSSL
在編譯OpenSSL前,需要正確安裝Perl,因為在編譯OpenSSL時需要使用到該程序。

下載最新版本的Perl然後安裝之。
下載最新版本的OpenSSL

然後將源碼解壓縮到某個目錄(如 C:\openssl-0.9.8j)中。

進入openssl源碼目錄。
cd c:\openssl-1.0.1e

以下為參照該目錄下的文件INSTALL.W32的執行過程:
運行configure:
perl Configure VC-WIN32
創建Makefile文件:
ms\do_ms.bat

編譯動態庫:
nmake -f ms\ntdll.mak
編譯靜態庫:
nmake -f ms\nt.mak
測試動態庫:
nmake -f ms\ntdll.mak test
測試靜態庫:
nmake -f ms\nt.mak test
安裝動態庫:
nmake -f ms\ntdll.mak install
安裝靜態庫:
nmake -f ms\nt.mak install
清除上次動態庫的編譯,以便重新編譯:
nmake -f ms\ntdll.mak clean
清除上次靜態庫的編譯,以便重新編譯:
nmake -f ms\nt.mak clean
2、如果嫌麻煩,不想編譯,可以直接用別人做好的windows OpenSSL 安裝包(我用的是0.9.8j版),
可以下載 OpenSSL for Windows,直接安裝。
P.S. OpenSSL for Windows 的源代碼有一些數據類型和VC6的編譯器不兼容,我發現的不兼容的數據類型如下:
在OpenSSL安裝目錄的下的include/bn.h文件中,將
#define BN_ULLONG unsigned long long
#define BN_ULONG unsigned long long
#define BN_LONG long long
分別修改為:
#define BN_ULLONG ULONGLONG
#define BN_ULONG ULONGLONG
#define BN_LONG LONGLONG
否則,會出現編譯錯誤。

二、使用OpenSSL
在VC中配置使用以上的函數庫:
點擊菜單:Tools -> Options,彈出對話框"Options",在該對話框中選擇"Directories"標簽。
在"Show directories for:"的"Include files"選項中新增目錄"C:\openssl\include";
"Library files"選擇中新增目錄"C:\openssl\lib"。
然後在需要鏈接OpenSSL函數庫的工程中加入如下兩句:
#pragma comment(lib, "ssleay32.lib")
#pragma comment(lib, "libeay32.lib")
其作用是將OpenSSL所需的庫導入工程中。
三、問題
我在鏈接OpenSSL的靜態函數庫時遇到類似以下的問題:
Linking...
msvcrt.lib(MSVCRT.dll) : error LNK2005: _strchr already defined in libcmtd.lib(strchr.obj)
...

這是由於OpenSSL的靜態函數庫使用的是了VC的多線程DLL的Release版本,而我的程序使用了多線程靜態鏈接的Release版本。
調整OpenSSL的靜態函數庫使用的庫函數版本即可,調整過程如下:

編輯文件 ms\nt.mak,將該文件第19行
"CFLAG= /MD /Ox /O2 /Ob2 /W3 /WX /Gs0 /GF /Gy /nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32 -D_CRT_SECURE_NO_DEPRECATE -
D_CRT_NONSTDC_NO_DEPRECATE /Fdout32 -DOPENSSL_NO_CAMELLIA -DOPENSSL_NO_SEED -DOPENSSL_NO_RC5 -DOPENSSL_NO_MDC2 -DOPENSSL_NO_TLSEXT -DOPENSSL_NO_KRB5 -
DOPENSSL_NO_DYNAMIC_ENGINE"
中的"/MD"修改為"/MT"。然後重新編譯安裝OpenSSL即可。
四、附錄:在VC中對C/C++ 運行時庫不同版本編譯指令說明
《在VC中對C/C++ 運行時庫不同版本編譯指令說明》一文中詳細介紹了連接不同版本庫的編譯指令如下:
C Runtime Library:
/MD MSVCRT.LIB 多線程DLL的Release版本
/MDd MSVCRTD.LIB 多線程DLL的Debug版本
/MT LIBCMT.LIB 多線程靜態鏈接的Release版本
/MTd LIBCMTD.LIB 多線程靜態鏈接的Debug版本
/clr MSVCMRT.LIB 託管代碼和非託管代碼混合
/clr:pure MSVCURT.LIB 純託管代碼
C++ Standard Library:
/MD MSVCPRT.LIB 多線程DLL的Release版本
/MDd MSVCPRTD.LIB 多線程DLL的Debug版本
/MT LIBCPMT.LIB 多線程靜態鏈接的Release版本
/MTd LIBCPMTD.LIB 多線程靜態鏈接的Debug版本
===============================================

一 配置編譯參數
配置編譯參數是進行OpenSSL編譯的第一步,這一步可以確定系統的環境,使用什麼編譯器,默認安裝路徑以及其他一些選項.步驟如下:
1.安裝perl:下載ActivePerl-5.8.8.822-MSWin32-x86-280952.msi,然後點擊msi文件進行安裝!

2..配置編譯參數:下載openssl-1.0.1e.tar.gz,解壓.
vc:首先在C:\Program Files\Microsoft Visual Studio .NET 2010\VC10\bin\目錄下執行vcvars32.bat,然後在解壓後的openssl-1.0.1e目錄,執行命令配置編譯參數:perl Configure VC-WIN32
bc:在解壓後的openssl-0.9.8g目錄下執行:perl Configure BC-32

二 生成批處理文件
在使用configure腳本配置好的編譯參數後,就可以使用批處理命令來生成編譯腳本.生成編譯腳本根據採用編譯器的不同通常使用不同的批處理文件.就目前來說,使用vc編譯的時候有三種選擇:do_ms,do_masm和do_nasm來創建一系列編譯腳本文件,即.mak腳本.步驟如下:
vc:在openssl-1.0.1e目錄下,執行命令來批處理文件:do_ms,do_masm和do_nasm
bc:1.下載nsm09839.zip微軟匯編編譯器,解壓,拷貝到c:/windows目錄下,修改名稱為nasmw.exe;2.在openssl-1.0.1e目錄下,執行命令來批處理文件:ms\do_nasm

三 代碼編譯
vc:
完成上面步驟後,可以看到兩個關鍵腳本文件:nt.mak和ntdll.mak.如果我們需要編譯後的OpenSSL庫是支持動態DLL形式的,那麼應該使用ntddll.mak文件進行編譯,這樣編譯完成我們會得到四個與OpenSSL的API庫有關文件:ssleay32.lib,libeay32.lib,ssleay32.dll和libeay32.dll.執行的編譯命令形式如下:nmake -f ms\ntdll.mak
如果不希望以動態庫的形式使用OpenSSL,那麼可以使用nt.mak文件進行編譯.這樣編譯後使用OpenSSL的時候,回直接將代碼鏈接進我們的程序裡面.執行命令如下:nmake -f ms\nt.mak
bc:執行命令來完成代碼編譯:make -f ms\bcb.mak
四 ELSE
1)
測試動態庫:
nmake -f ms\ntdll.mak test
測試靜態庫:
nmake -f ms\nt.mak test

安裝動態庫:
nmake -f ms\ntdll.mak install
安裝靜態庫:
nmake -f ms\nt.mak install

清除上次動態庫的編譯,以便重新編譯:
nmake -f ms\ntdll.mak clean
清除上次靜態庫的編譯,以便重新編譯:
nmake -f ms\nt.mak clean

2)
使用OpenSSL
在VC中配置使用以上的函數庫:
點擊菜單:Tools -> Options,彈出對話框"Options",在該對話框中選擇"Directories"標簽。
在"Show directories for:"的"Include files"選項中新增目錄"C:\openssl\include";"Library files"選擇中新增目錄"C:\openssl\lib"。
然後在需要鏈接OpenSSL函數庫的工程中編譯時加入"libeay32.lib"就可以了。

熱點內容
車載安卓導航如何設置北斗 發布:2024-11-18 10:46:07 瀏覽:66
金士頓硬體加密u盤 發布:2024-11-18 10:34:23 瀏覽:1000
小數乘小數的演算法 發布:2024-11-18 10:28:52 瀏覽:912
vga編程器 發布:2024-11-18 10:07:17 瀏覽:924
反編譯應用分身 發布:2024-11-18 10:04:07 瀏覽:61
飛天加密狗 發布:2024-11-18 10:00:29 瀏覽:443
dayz手動伺服器ip 發布:2024-11-18 09:59:57 瀏覽:387
oracle資料庫清理 發布:2024-11-18 09:57:02 瀏覽:224
手機我的世界伺服器外掛 發布:2024-11-18 09:52:28 瀏覽:67
崩與壓縮機 發布:2024-11-18 09:48:55 瀏覽:699