Skip to content

Commit 27e5c19

Browse files
authored
Merge pull request #45 from Bor-Code/feat/add-suspicious-dll-summary
feat: add suspicious DLL summary
2 parents 56c6dfb + d102c11 commit 27e5c19

2 files changed

Lines changed: 52 additions & 1 deletion

File tree

include/analyzer/pe_parser.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ struct SuspiciousApiReport {
7676
std::string apiName;
7777
std::string category;
7878
std::string severity;
79+
std::string dllName;
7980
};
8081

8182
class PEParser {

src/pe_parser.cpp

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -525,7 +525,8 @@ bool PEParser::parseImports() {
525525
suspiciousApiReports.push_back({
526526
function,
527527
category,
528-
severity
528+
severity,
529+
dllName
529530
});
530531

531532
std::cout << " -> \033[33m[INCELE] ["
@@ -812,6 +813,8 @@ bool PEParser::exportTextReport() const {
812813
for (const auto& api : suspiciousApiReports) {
813814
report
814815
<< api.apiName
816+
<< " | DLL: "
817+
<< api.dllName
815818
<< " | Category: "
816819
<< api.category
817820
<< " | Severity: "
@@ -824,10 +827,12 @@ bool PEParser::exportTextReport() const {
824827

825828
std::map<std::string, std::size_t> categoryCounts;
826829
std::map<std::string, std::size_t> severityCounts;
830+
std::map<std::string, std::size_t> suspiciousDllCounts;
827831

828832
for (const auto& api : suspiciousApiReports) {
829833
++categoryCounts[api.category];
830834
++severityCounts[api.severity];
835+
++suspiciousDllCounts[api.dllName];
831836
}
832837

833838
report
@@ -866,6 +871,24 @@ bool PEParser::exportTextReport() const {
866871
report << "\n";
867872
}
868873

874+
report
875+
<< "Suspicious DLL Summary\n";
876+
877+
if (suspiciousDllCounts.empty()) {
878+
report
879+
<< "No suspicious DLLs found.\n\n";
880+
} else {
881+
for (const auto& [dllName, count] : suspiciousDllCounts) {
882+
report
883+
<< dllName
884+
<< ": "
885+
<< count
886+
<< "\n";
887+
}
888+
889+
report << "\n";
890+
}
891+
869892
report
870893
<< "Overall Risk\n"
871894
<< "Risk Score: "
@@ -930,6 +953,7 @@ bool PEParser::exportJsonReport() const {
930953
std::map<std::string, std::size_t> sectionRiskCounts;
931954
std::map<std::string, std::size_t> categoryCounts;
932955
std::map<std::string, std::size_t> severityCounts;
956+
std::map<std::string, std::size_t> suspiciousDllCounts;
933957

934958
for (const auto& section : sectionReports) {
935959
++sectionRiskCounts[section.risk];
@@ -938,6 +962,7 @@ bool PEParser::exportJsonReport() const {
938962
for (const auto& api : suspiciousApiReports) {
939963
++categoryCounts[api.category];
940964
++severityCounts[api.severity];
965+
++suspiciousDllCounts[api.dllName];
941966
}
942967

943968
const int staticRiskScore =
@@ -1061,6 +1086,9 @@ bool PEParser::exportJsonReport() const {
10611086
<< " \"api\": \""
10621087
<< escapeJsonString(api.apiName)
10631088
<< "\",\n"
1089+
<< " \"dll\": \""
1090+
<< escapeJsonString(api.dllName)
1091+
<< "\",\n"
10641092
<< " \"category\": \""
10651093
<< escapeJsonString(api.category)
10661094
<< "\",\n"
@@ -1116,6 +1144,28 @@ bool PEParser::exportJsonReport() const {
11161144
++riskIndex;
11171145
}
11181146

1147+
report
1148+
<< " },\n"
1149+
<< " \"suspiciousDlls\": {\n";
1150+
1151+
std::size_t suspiciousDllIndex = 0;
1152+
1153+
for (const auto& [dllName, count] : suspiciousDllCounts) {
1154+
report
1155+
<< " \""
1156+
<< escapeJsonString(dllName)
1157+
<< "\": "
1158+
<< count;
1159+
1160+
if (suspiciousDllIndex + 1 <
1161+
suspiciousDllCounts.size()) {
1162+
report << ",";
1163+
}
1164+
1165+
report << "\n";
1166+
++suspiciousDllIndex;
1167+
}
1168+
11191169
report
11201170
<< " },\n"
11211171
<< " \"categories\": {\n";

0 commit comments

Comments
 (0)