有沒有辦法確定2個具有相同包名的APK是不同的(假設它們來自2個不同的市場)?獲取應用程序的散列會幫助我嗎?謝謝如何確定2個具有相同包名的APK是否不同?
回答
在APK上計算散列或數字簽名會告訴您它們是否完全相同。如果您想知道它們在功能上是否相同,則必須提取內容並檢查資源和可執行文件。如果他們有相同的名字,那會讓我有50%的信心,他們是相同的。如果他們實現了所有相同的類和方法(按名稱),我肯定有大約90%的人確信他們在功能上是等價的。
如何計算一個文件在Linux上的MD5簽名:
md5sum filename
如何在Mac或BSD計算文件的MD5簽名:
md5 filename
如何計算MD5 /使用OpenSSL的文件的SHA1/SHA512簽名:
openssl dgst -md5 filename
openssl dgst -sha1 filename
openssl dgst -sha512 filename
如何計算跨所有文件的簽名S IN目錄:
cat * | md5sum
cat * | openssl dgst -sha512
啊。但我在想,apk是一個檔案吧?這意味着有幾個文件存儲在那裏。 md5或sha1是否有能力獲得所有文件的總散列? – 2012-07-27 03:26:08
檔案只是.ZIP,它是明確定義的。如果您將.ZIP存檔從一臺機器複製到另一臺,它應該具有相同的md5或sha1簽名。這完全相同。另一方面,如果您採用相同的未壓縮文件集合並在兩個不同的平臺上分別壓縮它們,則由於文件系統的差異,它們可能沒有相同的確切內容。然後你必須一個一個的散列文件。但是一旦你這樣做,你可以直接比較字節。 – Sparky 2012-07-27 06:26:23
是的,你可以得到所有文件的總散列。您可以散列存檔本身,也可以通過執行如下操作,通過簽名實用程序將所有字節流式傳輸:cat * | md5sum - 但如前所述,由於文件系統的差異,這可能不會在兩臺不同的機器上產生相同的結果。 (儘管剛剛將一個目錄從Mac複製到Linux機器並再次返回時,它給出了相同的散列值。) – Sparky 2012-07-27 06:32:26
我沒有太多的android經驗,但不能比較APK的大小嗎?
我只是在想,因爲像Sha1和Md5這樣的Hash可以用來判斷2個文件是否有相同的文件名,所以也許我可以用APK做同樣的事情。 – 2012-07-26 08:55:03
- 1. R:2層的功能具有相同名稱的2周不同的包
- 2. JBoss eap 6(7) - 2個不同的類具有相同的包和名稱
- 3. 是否有可能有兩個具有相同名稱的不同變量?
- 4. 如何包含兩個不同的包含兩個具有相同名稱的不同類的頭?
- 5. 如何在不同的包中導入兩個具有相同名稱的類?
- 6. JPA如何識別兩個具有相同名稱但不同包中的類?
- 7. 確定2個列表是否具有相同的元素,而不管順序如何?
- 8. 如何確定兩個相同大小的jpg圖像是否具有超過matlab不同像素的30%?
- 9. 匹配2具有相同實例名稱的不同對象
- 10. 具有相同名稱的CSS多個ID是否有效?
- 11. 確定2個Excel文檔是否共享相同的結構
- 12. 檢查2個數據表是否具有相同的模式
- 13. 具有不同名稱的JavaFX 2類具有相同的css代碼
- 14. 確定是否有兩個相鄰字符相同的字符
- 15. 如何確定兩個2維列表是完全相同的?
- 16. 如何從具有相同名稱的mysql不同的表
- 17. 確定兩個方法是否具有相同的基本定義
- 18. 如何在RAML中定義2個具有相同名稱的查詢參數
- 19. 具有相同的臨時表名稱和2個不同的IF語句
- 20. 如何確定瀏覽器UI事件是否具有相同的「原因」
- 21. 如何確定具有相同變量的會話是否已經存在laravel
- 22. 不同的JNI調用的相同參數是否具有相同的值?
- 23. 擁有2個不同的SHA1爲相同的Android包
- 24. 我如何檢查2個列表是否具有相同的精靈C#
- 25. 具有2個不同域的相同子域
- 26. 在2個不同列中標識具有相同值的行
- 27. 2個具有相同基礎對象的不同服務
- 28. 如何檢查兩個PictureBox是否具有相同的圖像?
- 29. 2個具有相同類的輸入具有不同的外觀(HTML)
- 30. 兩個不同的具有相同結構的命名錶(GreenDAO)
:下來後從GitHub 加載它寫在終端的下一個命令APK和apk的大小,並檢查他們是否相等我認爲這將幾乎100%準確。即使你嘗試過,也很難打破這一點。 – 2012-07-26 08:47:30