目錄
- 一、摘要
- 1.1 項目介紹
- 1.2 項目錄屏
- 二、功能模塊
- 2.1 數據中心模塊
- 2.2 開放平臺模塊
- 2.3 軟件檔案模塊
- 2.4 軟件檢測模塊
- 2.5 軟件舉報模塊
- 三、系統設計
- 3.1 用例設計
- 3.2 數據庫設計
- 3.2.1 開放平臺表
- 3.2.2 軟件檔案表
- 3.2.3 軟件檢測表
- 3.2.4 軟件舉報表
- 四、系統展示
- 五、核心代碼
- 5.1 查詢開放平臺
- 5.2 新增開放平臺
- 5.3 查詢軟件檔案
- 5.4 新增軟件舉報
- 5.5 新增軟件檢測
- 六、免責說明
一、摘要
1.1 項目介紹
基于JAVA+Vue+SpringBoot+MySQL的APK檢測管理系統,包含了軟件檔案模塊、軟件檢測模塊、軟件舉報模塊、開放平臺模塊,還包含系統自帶的用戶管理、部門管理、角色管理、菜單管理、日志管理、數據字典管理、文件管理、圖表展示等基礎模塊,APK檢測管理系統基于角色的訪問控制,給軟件管理員、普通用戶使用,可將權限精確到按鈕級別,您可以自定義角色并分配權限,系統適合設計精確的權限約束需求。
隨著移動應用的迅猛發展,APK文件的數量和復雜性日益增加,給應用市場的安全性和穩定性帶來了巨大挑戰。為了提高APK文件的檢測效率和準確性,本論文提出了一種基于大數據和機器學習的APK檢測系統。該系統利用大數據技術對海量的APK文件進行收集和存儲,并采用特征提取和特征選擇方法對APK文件進行表征。通過構建一個深度學習模型,對APK文件進行分類和檢測,以識別潛在的惡意軟件和安全隱患。實驗結果表明,該系統在APK檢測的準確性和效率方面表現出色,對于提高移動應用的安全性具有重要意義。
1.2 項目錄屏
二、功能模塊
APK檢測系統的功能性需求主要包含數據中心模塊、開放平臺模塊、軟件檔案模塊、軟件檢測模塊、軟件舉報模塊這五大模塊,系統是基于瀏覽器運行的web管理后端,其中各個模塊詳細說明如下。
2.1 數據中心模塊
數據中心模塊包含了APK檢測系統的系統基礎配置,如登錄用戶的管理、運營公司組織架構的管理、用戶菜單權限的管理、系統日志的管理、公用文件云盤的管理。
其中登錄用戶管理模塊,由管理員負責運維工作,管理員可以對登錄用戶進行增加、刪除、修改、查詢操作。
組織架構,指的是高校的組織架構,該模塊適用于管理這些組織架構的部門層級和教師的部門歸屬情況。
用戶菜單權限管理模塊,用于管理不同權限的用戶,擁有哪些具體的菜單權限。
系統日志的管理,用于維護用戶登入系統的記錄,方便定位追蹤用戶的操作情況。
公用云盤管理模塊,用于統一化維護APK檢測系統中的圖片,如合同簽訂文件、合同照片等等。
2.2 開放平臺模塊
開放平臺是一種三方接口平臺,支持其他用戶通過API接口的方式調用系統功能,開放平臺的數據包括主體名稱、主體介紹、應用ID、密匙、創建人、創建時間、更新人、更新時間,管理員可以新增、刪除、編輯和條件查詢開放平臺數據,用戶可以查詢管理員發布的開放平臺數據。
2.3 軟件檔案模塊
軟件是APK檢測系統的核心實體,需要建立軟件檔案模塊對用戶發布的軟件進行管理,軟件檔案的字段包括軟件名稱、軟件介紹、開發者、文件、創建人、創建時間、更新人、更新時間,管理員可以新增、刪除、編輯和條件查詢軟件數據,用戶可以查詢管理員發布的軟件數據,且可以上傳自己的軟件。
2.4 軟件檢測模塊
有了軟件檔案之后,就需要對軟件進行檢測,用戶提交軟件檢測申請后,保存在軟件檢測模塊,軟件檢測的字段包括軟件ID、軟件名稱、軟件介紹、開發者、檢測狀態、檢測時間、檢測人、檢測結論,管理員收到用戶的軟件檢測申請后進行檢測,并將檢測結論錄入到系統中。
2.5 軟件舉報模塊
除了用于提交軟件檢測申請之外,還支持用戶直接舉報軟件,管理員對齊進行判定,舉報的數據存儲在軟件舉報模塊中,軟件舉報字段包括軟件ID、軟件名稱、軟件介紹、開發者、舉報內容、處理結果、處理人、處理時間,用戶可以提交軟件舉報申請,管理員對用戶舉報的申請訂單進行核實。
三、系統設計
3.1 用例設計
UML是面向對象的圖形化建模語言,具有表示容易,定義友好,適用范疇廣泛,功能強大。用例圖是用例模型的一種,需求分析人員可采用用例圖表示用戶操作行為。APK檢測系統的用例圖設計主要包括用戶用例設計和管理員用例設計。
3.2 數據庫設計
3.2.1 開放平臺表
3.2.2 軟件檔案表
3.2.3 軟件檢測表
3.2.4 軟件舉報表
四、系統展示
五、核心代碼
5.1 查詢開放平臺
@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查詢開放平臺")
public Result<IPage<OpenPlatform>> getByPage(@ModelAttribute OpenPlatform openPlatform ,@ModelAttribute PageVo page){QueryWrapper<OpenPlatform> qw = new QueryWrapper<>();User currUser = securityUtil.getCurrUser();QueryWrapper<User> userQw = new QueryWrapper<>();userQw.eq("id",currUser.getId());userQw.inSql("id","SELECT user_id FROM a_user_role WHERE del_flag = 0 AND role_id = '1536606659751841799'");if(iUserService.count(userQw) < 1L) {qw.eq("user_id",currUser.getId());}if(!ZwzNullUtils.isNull(openPlatform.getTitle())) {qw.like("title",openPlatform.getTitle());}if(!ZwzNullUtils.isNull(openPlatform.getStatus())) {qw.eq("status",openPlatform.getStatus());}IPage<OpenPlatform> data = iOpenPlatformService.page(PageUtil.initMpPage(page),qw);return new ResultUtil<IPage<OpenPlatform>>().setData(data);
}
5.2 新增開放平臺
@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增開放平臺")
public Result<OpenPlatform> insert(OpenPlatform openPlatform){User currUser = securityUtil.getCurrUser();openPlatform.setUserId(currUser.getId());openPlatform.setTime(DateUtil.now());Random r = new Random();int ranInt = r.nextInt(90000) + 10000;openPlatform.setAppid(ranInt + "");openPlatform.setSecret(UUID.randomUUID().toString());iOpenPlatformService.saveOrUpdate(openPlatform);return new ResultUtil<OpenPlatform>().setData(openPlatform);
}
5.3 查詢軟件檔案
@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查詢軟件檔案")
public Result<IPage<Software>> getByPage(@ModelAttribute Software software ,@ModelAttribute PageVo page){QueryWrapper<Software> qw = new QueryWrapper<>();User currUser = securityUtil.getCurrUser();QueryWrapper<User> userQw = new QueryWrapper<>();userQw.eq("id",currUser.getId());userQw.inSql("id","SELECT user_id FROM a_user_role WHERE del_flag = 0 AND role_id = '1536606659751841799'");if(iUserService.count(userQw) < 1L) {qw.eq("user_id",currUser.getId());}if(!ZwzNullUtils.isNull(software.getTitle())) {qw.like("title",software.getTitle());}if(!ZwzNullUtils.isNull(software.getContent())) {qw.like("content",software.getContent());}IPage<Software> data = iSoftwareService.page(PageUtil.initMpPage(page),qw);return new ResultUtil<IPage<Software>>().setData(data);
}
5.4 新增軟件舉報
@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增軟件舉報")
public Result<SoftwareReport> insert(SoftwareReport softwareReport){Software s = iSoftwareService.getById(softwareReport.getSoftId());if(s == null) {return ResultUtil.error("軟件不存在");}User currUser = securityUtil.getCurrUser();softwareReport.setUserId(currUser.getId());softwareReport.setTitle(s.getTitle());softwareReport.setContent(s.getContent());softwareReport.setDeveloper(s.getDeveloper());softwareReport.setFileUrl(s.getFileUrl());softwareReport.setWorkResult("");softwareReport.setWorkUser("");softwareReport.setWorkTime("");iSoftwareReportService.saveOrUpdate(softwareReport);return new ResultUtil<SoftwareReport>().setData(softwareReport);
}
5.5 新增軟件檢測
@RequestMapping(value = "/addOne", method = RequestMethod.POST)
@ApiOperation(value = "新增軟件檢測")
public Result<SoftwareCheck> addOne(@RequestParam String id){Software s = iSoftwareService.getById(id);if(s == null) {return ResultUtil.error("軟件不存在");}SoftwareCheck softwareCheck = new SoftwareCheck();softwareCheck.setTitle(s.getTitle());softwareCheck.setContent(s.getContent());softwareCheck.setDeveloper(s.getDeveloper());softwareCheck.setFileUrl(s.getFileUrl());softwareCheck.setStatus("未檢測");softwareCheck.setCheckTime("");softwareCheck.setCheckUser("");softwareCheck.setCheckResult("");iSoftwareCheckService.saveOrUpdate(softwareCheck);return new ResultUtil<SoftwareCheck>().setData(softwareCheck);
}
六、免責說明
- 本項目僅供個人學習使用,商用授權請聯系博主,否則后果自負。
- 博主擁有本軟件構建后的應用系統全部內容所有權及獨立的知識產權,擁有最終解釋權。
- 如有問題,歡迎在倉庫 Issue 留言,看到后會第一時間回復,相關意見會酌情考慮,但沒有一定被采納的承諾或保證。
下載本系統代碼或使用本系統的用戶,必須同意以下內容,否則請勿下載!
- 出于自愿而使用/開發本軟件,了解使用本軟件的風險,且同意自己承擔使用本軟件的風險。
- 利用本軟件構建的網站的任何信息內容以及導致的任何版權糾紛和法律爭議及后果和博主無關,博主對此不承擔任何責任。
- 在任何情況下,對于因使用或無法使用本軟件而導致的任何難以合理預估的損失(包括但不僅限于商業利潤損失、業務中斷與業務信息丟失),博主概不承擔任何責任。
- 必須了解使用本軟件的風險,博主不承諾提供一對一的技術支持、使用擔保,也不承擔任何因本軟件而產生的難以預料的問題的相關責任。