黑客技术
点击放大


<di="center">
!PHP Antimalware Scanner logo
Scan PHP projects and WordPress installations for suspicious 代码, integrity changes, and known malware patterns.
![]()


![Documentation]()
Documentation | Latest release | Docker Hub | GitHub Action | WordPress.org plugin
Documentation is a in English, Italian, German, French, Spanish, Russian, Simplified Chinese, Japanese, Hindi, and Arabic. Use the language selector in the documentation na.
</div>
Download the standalone scanner, confirm its , then inspect a project without changing files:
The scanner writes scanner-report.html in the current directory. Review each finding in context before cleaning, quarantining, or deleting anything.
> [!CAUTION]
> Create a current backup before using file actions. A detection identifies suspicious 代码. It does not prove that the entire file is malicious.
!PHP Antimalware Scanner interactive CLI showing scan progress and detected threats
| Check | Purpose |
| --- | --- |
| Malware signatures | Finds known 代码 fragments, regular expressions, hashes, and suspicious domains |
| Ja | Applies scoped Ja malware definitions and dangerous-domain checks to .js files by default |
| Exploit patterns | Flags 代码 structures that attackers often use |
| Framework processes | Associates confirmed process APIs from major PHP frameworks and platforms with their owner |
| Dangerous functions | Identifies calls such as system and shell_exec for review |
| Platform integrity | Compares supported applications and packages with trusted release checksums |
| ZIP archives | Inspects bounded archi when --scan-archives is enabled |
| WordPress database | Inspects triggers, administrators, and orphaned posts, with confirmed local remediation |
框架 process findings run in Full, Lite, Exploits, and Functions modes, but not Signatures-only mode. They use PHP token analysis and require both exact 框架 pro and a terminal execution method. Co includes Symfony Process, legacy ProcessBuilder, and process-message dispatch; Lara; WordPress SSH and WP-CLI; Magento / Adobe Commerce; Drupal / Drush; Joomla; PrestaShop; TYPO3; CodeIgniter; Yii; and CakePHP. A generic Process class, a bare run() or execute() call, and 框架 constructors or builders without execution are not reported. WooCommerce has no product-owned operating-system process API, so its WordPress and WP-CLI paths remain covered while in-process Action Scheduler work is excluded. Ordinary confirmed execution remains warning-le e. A command literal connected to that execution is promoted to dangerous only for high-confidence behavior such as download-to-interpreter pipelines, encoded interpreter execution, reverse shells, or destructive root deletion.
Normal 代码 scans work offline with embedded definitions. Platform checksums and Maltrail definition updates can require outbound HTTPS. Dedicated integrity co, WooCommerce, Drupal, Joomla, Magento / Adobe Commerce, PrestaShop, TYPO3, Laravel, Symfony, CodeIgniter, Yii, and CakePHP. 框架 only their owned locked Composer packages against official distributions; WooCommerce uses official WordPress plugin checksums. Successful remote data is cached outside the scanned project; failed WordPress checksum requests are retried after one hour. Integrity manifest paths remain anchored to the detected installation root, including when a root directory name is repeated in a managed filename. When every eligible file passes checksum , AMWScan also skips supplemental component-in and reputation checks.
| Mode | Option | Use it when |
| --- | --- | --- |
| Full | No mode option | You need the broadest incident review |
| Lite | --lite, -l | You want a practical first scan that omits noisy shell-output signatures |
| Signatures | --only-signatures, -s | You want focused checks for known malware patterns |
| Exploits | --only-exploits, -e | You want to audit suspicious 代码 structures |
| Functions | --only-functions, -f | You want to review dangerous PHP calls |
Read Run your first scan for guidance on re and acting on findings.
Without an interacti input (for example, in cron, CI, or Docker without -t), the scanner skips prompts and lea requiring a decision unchanged. It ignores piped answers. --silent also skips prompts, even in a terminal. Explicit actions such as --auto-delete and --auto-prompt still apply; use --report-only to prevent remediation.
Full and Lite scans distinguish short quoted paths from long obfuscated strings, and exclude binary data inside PHP strings and comments from the non_printable heuristic. This avoids false positives in PDF and cryptography libraries without trusting files by their path. Rescan after updating to replace earlier findings.
Full and Lite scans detect request-dri data: and data:// includes, including concatenated and interpolated request . Plain URI assignments, static Base64 text, and literal names in single-quoted strings do not trigger the base64_inclusion rule. Decoding preser and nowdoc line breaks so PHP context checks continue to recognize documentation strings.
In Lite mode only, alignment, long concatenations, encoded function names (hex_char), escaped include paths, and loader/reconnaissance proximity heuristics produce informational exploit-candidate findings instead of marking a file infected. The execution rule also treats decoded callback names as candidates unless the matched callback argument contains executable request input or directly decodes a known dangerous function name with Base64 or ROT13. Candidates remain in reports and qualify for optional ad AI review; alone, they do not trigger remediation or a nonzero exit 代码. Independent execution detections and specific signatures retain their se, so corroborating findings can still mark the file infected. Full mode keeps its existing behavior.
Lite adds PHP-context checks for request-driven file writes and sensiti reads, and distinguishes request-controlled backtick commands from quoted examples and escaped dollar signs. Proximity alone does not prove a data-flow connection; review candidates for indirect decoding and execution.
Start with --lite --report-only and review the matched 代码 before taking action. Bare generic keyword matches such as backdoor appear as informational keyword findings; they do not mark a file as infected or cause a nonzero CLI exit 代码. Substrings inside longer words do not produce these ad.
Standalone encoded names such as lave remain as informational encoded-function-candidate findings, including in assignments and array keys; color names such as la do not qualify. An exact encoded name in a corresponding PHP decoder call, such as strrev('lave'), remains a detection. When enabled, AI review can assess both keyword and encoded-name candidates without changing their status or triggering remediation. Function checks and execution-oriented exploit rules use PHP tokens to reject matches in comments, quoted examples, HTML, and unrelated method names. Specific malware signatures and non-PHP rules still examine file text, so a complete malware example in documentation can still need review.
Use --ignore-exploits=<name> to exclude a re exploit rule for a scan, or whitelist an indi re finding. Excluding a rule reduces co; avoid broad directory exclusions for writable application 代码.
Use --auto-whitelist only after confirming that every reported finding is safe. JSON whitelist entries use exact paths relative to the scan root, compare stored match content, and retain file-le whose line is null. Legacy CS do not store match content and represent these findings with an empty line column. New CS include a marker that distinguishes absolute paths from historical leading-separator relati. --whitelist-only-path ignores line numbers but still requires the same path and detection; JSON entries also require the same stored match.
Keep whitelist files outside the public document root and reuse the same scan root on later scans.
AMWScan can ask an AI provider whether each detected 代码 fragment is likely malware, a false positive, or uncertain. Reviews run after detection, include a bounded excerpt around the matched line, and are ad only: they ne, delete, quarantine, whitelist, or change a finding status automatically.
AI review is disabled by default. Enable one provider with --ai-provider.
| Provider | Option | API key en |
| --- | --- | --- |
| OpenAI | --ai-provider=openai | OPENAI_API_KEY |
| Anthropic | --ai-provider=anthropic | ANTHROPIC_API_KEY |
| Google Gemini | --ai-provider=gemini | GEMINI_API_KEY |
AMWSCAN_AI_API_KEY can be used as a pro o. API keys are not accepted as command arguments, which prevents them from appearing in shell history and process listings. The WordPress plugin provides a protected API key field and retrieves the a model list directly from the selected provider. Google AI Studio's limited free Gemini tier is the recommended starting option.
On WordPress 7.0 or newer, sites with the WordPress AI 客户端 can select WordPress AI / configured connectors instead. AMWScan then uses wp_ai_client_prompt() and the credentials, dynamic compatible-model registry, fallback, and connector appro managed under Settings → Connectors. Automatic selection uses WordPress AI's filterable preferred-model list. This integration is capability-detected and is not a required plugin dependency.
| CLI | Option | Default command |
| --- | --- | --- |
| Claude Code | --ai-provider=claude-code-cli | claude |
| OpenAI Codex | --ai-provider=codex-cli | codex |
| GitHub Copilot | --ai-provider=copilot-cli | copilot |
| OpenCode | --ai-provider=opencode-cli | opencode |
Installed CLIs run in an empty private working directory with tools and project instructions restricted where supported. Claude 代码 and Codex recei through standard input; Copilot and OpenCode receive it through a private temporary file so 源码 does not appear in the process argument list. These CLIs normally send the supplied 代码 to remote model services; "installed" does not mean data stays on this machine. Use --ai-executable=<path> to select another executable and --ai-model=<model> to o its model.
Direct API defaults are gpt-5.6-luna, claude-haiku-4-5, and gemini-3.8-flash. AI , model confidence, provider status, and schema are included in CLI output and structured reports. See the CLI reference for timeout, context, model, and re options.
Download scanner from the latest release, then run it with PHP:
The image uses PHP 8.5 on Alpine, refreshes Alpine packages during release builds, and omits the unused curl command while retaining PHP's curl extension. See the container guide for local builds and security-update details.
Use the marcocesarato/php-antimalware-scanner Docker image from Docker Hub:
PHP 7.4 or newer is required. The required extensions are fileinfo, json, mbstring, phar, and zlib. Read the installation guide for global Composer, 源码, Docker, Windows, and WordPress instructions.
Reports include a Software in for detected WordPress core, plugins, and themes. Add --check-updates to explicitly check a on WordPress.org; without it, collection is offline and update status is Unknown. A updates are informational, not malware detections. The WordPress plugin shows the same in in a collapsible nati with search, sorting, update-status filters, pagination, and translated labels, and snapshots existing WordPress update data without starting update checks. JSON and SARIF preserve latest_ and nullable update_a per component.
Report-only scans use up to 8 parallel worker processes by default when the pcntl extension and its required process-control functions are enabled. Pass --jobs auto (or --jobs 0) to use every detected CPU core, --jobs N to set a fixed count, or set AMWSCAN_JOBS to configure the default. Parallelism only applies to local, non-interacti scans; interacti, FTP sources, programmatic scans with acti buffers, and PHP configurations that disable the required functions run sequentially. Resumable checkpoint scans remain eligible for parallel workers; the parent process persists completed worker chunks and merges them in scan order, so an interrupted run retains out-of-order completed work without skipping unfinished files. Pass --jobs 1 to force a single process. Worker processes start at the lowest CPU priority by default so a scan ne interactive or system processes; set the AMWSCAN_WORKER_PRIORITY en (niceness -20..19) to o.
A formats are HTML, text, JSON, and SARIF. HTML reports place malware first at full width and organize other detected issues—such as integrity changes, 数据库 findings, large files, reputation warnings, and suspicious hashes—into conditional collapsible panels ordered by se. They also support system-aware light and dark modes, text, se, and category filters, and ten selectable interface languages, including right-to-left Arabic. Empty categories and their filter choices are omitted. Reports include co totals and skipped file reasons, so incomplete scans do not look clean.
<!-- markdownlint-disable MD033 -->
<picture>
<源码 media="(prefers-color-scheme: dark)" srcset="images/screenshot_report.png">
<源码 media="(prefers-color-scheme: light)" srcset="images/screenshot_report_light.png">
<img alt="HTML report generated from scanner fixtures, showing scan totals and detected findings" src="images/screenshot_report.png">
</picture>
<!-- markdownlint-enable MD033 -->
Run a non-destructive Lite scan with the GitHub Marketplace action:
The action returns exit code 1 when it finds a security issue and 2 when the scanner cannot complete. Read the CI/CD guide for GitHub Actions, Jenkins, and GitLab CI pipelines, including SARIF report retention and scan inputs.
The WordPress 5.3+ plugin adds background scans, upload protection with a per-upload bypass filter for trusted integrations, passi detection, optional AI finding review, categorized HTML, CSV, JSON, text, and SARIF report exports, quarantine, whitelist management, and controlled remediation to the dashboard. Scan activity charts retain every detection and divide each bar by status: unresolved, whitelisted, or remediated by quarantine, deletion, or cleaning; the next scheduled scan appears as a dotted marker. Its sensitivity control progresses from Signatures (the lowest alert ) through Functions, Lite, and Exploits to Full (the broadest co). New installations use Lite scan mode by default, and report findings can show the detected 代码 with surrounding lines and a highlighted match.
!WordPress Antimalware Scanner dashboard
Two mutually exclusi are a:
| Edition | Distribution | Browser file editing | Restore quarantined files |
| --- | --- | --- | --- |
| AMWScan Antimalware Scanner Lite | WordPress.org package | WordPress plugin editor when permitted | No |
| AMWScan Antimalware Scanner | GitHub release | Built-in editor | Yes |
When a detection’s 源码 line is missing or outside the file, the WordPress details modal shows the file’s opening lines with a fallback notice instead of “Code context is una.” Unknown locations display “Source line unknown,” not “Line 0.” You can retry failed 代码 requests from the modal. The new fallback messages, unknown-location label, and retry action ha in all nine bundled languages. File-hash and existing excerpt size limits still apply.
You can whitelist re findings in files larger than the 2 MiB editor limit. Whitelisting leaves file contents unchanged and the file hash before and after acquiring the report lock; it skips a redundant third hash check to reduce large-file o.
Both editions share settings and data. Remove the installed edition before switching. Dashboard progress polling uses a lightweight status request; report summaries refresh on scan-state changes and otherwise once a minute. WordPress scans expose pause, resume, cancel, phase, throughput, and ETA controls; dangerous-domain analysis defaults to script and web files and can be expanded or disabled. Report-detail tables fit their bento cells, open panels fill the height of each desktop grid row, and indi panels can expand to full width for review. Read the WordPress plugin guide for setup, schedules, upload scanning, and remediation.
For WordPress sites with several trusted administrators, add --wordpress-admin-threshold=3 to --scan-wordpress-db to warn only abo accounts. The threshold accepts positi and defaults to 1. In the WordPress plugin, set Scan policy > Administrator warning threshold. Suspicious-account checks remain acti of the threshold. You can exclude re accounts from both checks with site-scoped wp-admin entries in the JSON whitelist. Trust requires the 数据库 target ID and an exact account ID, login, and email match; entries without a target ID do not grant trust. In a local plugin report, select Trust administrator on a suspicious-account finding, then open Antimalware > Settings > Scan policy > Manage whitelist to view or remove that trust. Find this control beside Administrator warning threshold when Scan WordPress database is enabled for local scans. This Settings-only modal has no sidebar entry. Choose Apply changes to stage removals, then Sa in Settings to persist them. Cancel, Close, or Escape discard unconfirmed modal edits without losing the Settings draft. Report trust actions still save on confirmation. Neither action changes the WordPress account. The CLI cleanup offers the same choice; administrator trust requires a JSON whitelist, not CSV. The plugin's administrator trust and whitelist controls include translations for all nine bundled languages.
Browse the CLI reference for every option, default, conflict, and safety note.
Bug reports, documentation fixes, tests, and re detection impro are welcome. Do not attach executable malware to a public issue. Submit detection metadata first so maintainers can arrange a private transfer when a sample is needed.
Read TESTING.md and the contribution guide before opening a pull request.
PHP Antimalware Scanner is a under the GNU General Public License 3.0 or later.
开发语言:PHP
Star 数:792
该项目属于黑客技术方向的开源资源,代码结构清晰,适合安全研究人员学习参考。项目围绕AMWScan (PHP Antimalware Scanner) is a free 工具 to scan php files and analyze your project to find any malicious 代码 inside it.展开,提供了可运行的实现,对理解相关安全机制、工具原理与攻防技术具有较高的研究价值。
从技术实现角度看,此类项目的核心在于对底层原理的深入理解与工程化落地。开发者在研究过程中可以结合官方文档与社区讨论,梳理项目的初始化流程、核心模块职责与数据流转,逐步掌握其中的技术细节与设计思路。
1. 下载源码压缩包,解压到本地环境。
2. 根据项目类型准备对应的运行环境与依赖。
3. 按照 README 中的步骤完成配置与部署。
4. 在隔离的测试环境中运行验证,避免影响生产系统。
本资源来源于开源社区,仅供安全研究、技术学习与合法授权范围内的攻防演练使用,请勿用于任何非法或侵害他人权益的用途。使用本项目产生的一切后果由使用者自行承担。
| 资源标题 | PHP-Antimalware-Scanner - AMWScan (PHP Antimalware Scanner) is a free tool t |
| 所属分类 | 黑客技术 |
| 发布作者 | admin |
| 发布时间 | 2026-10-05 22:16:07 |
| 下载权限 | 免费下载 |
| 附件数量 | 2 个下载链接 |
| 浏览次数 | 113 |
| 讨论数量 | 0 |
| 主题状态 | 正常讨论中 |