diff --git a/arkguard/package.json b/arkguard/package.json index ca3d370bebd7ac7d7838cec2ab8855f77acc5493..7838645676c6e8b5f42bd5b986f8e3012074f98f 100644 --- a/arkguard/package.json +++ b/arkguard/package.json @@ -1,6 +1,6 @@ { "name": "arkguard", - "version": "1.0.0", + "version": "1.1.0", "description": "An obfuscator tools for open harmony apps.", "bin": { "arkguard": "bin/secharmony" @@ -30,7 +30,7 @@ "@types/commander": "^2.12.2", "@types/fs-extra": "^9.0.13", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.45", + "@types/node": "18.11.7", "chai": "^4.3.6", "mocha": "^10.0.0", "ts-node": "^10.9.1" @@ -41,6 +41,9 @@ "json5": "^2.2.3", "source-map": "0.7.4" }, + "peerDependencies": { + "typescript": "*" + }, "files": [ "bin", "lib", diff --git a/arkguard/src/transformers/layout/SimplifyTransformer.ts b/arkguard/src/transformers/layout/SimplifyTransformer.ts index b40c612eab7b329b6eb19bfafd5df6c6ec4a1ca0..c76d0d21ee9a834cc6adce97569c3257bc548220 100644 --- a/arkguard/src/transformers/layout/SimplifyTransformer.ts +++ b/arkguard/src/transformers/layout/SimplifyTransformer.ts @@ -119,13 +119,14 @@ namespace secharmony { } } - function doMerge(currentType: SyntaxKind | undefined, child: Statement | undefined): void { + function doMerge(currentType: SyntaxKind | undefined, childArg: Statement | undefined): void { if (preType === currentType) { if (preType !== SyntaxKind.VariableStatement) { return; } - if (nodeFlag === (child as VariableStatement).declarationList.flags) { + let child = childArg as VariableStatement; + if (nodeFlag === child.declarationList.flags) { if (!modifiers && !child.modifiers) { return; } diff --git a/arkguard/src/utils/OhsUtil.ts b/arkguard/src/utils/OhsUtil.ts index 2588197cf1e76e08057472a0e95051dd11b523ab..a97703b9d72cccb2f5accf74f5cf97535743d33d 100644 --- a/arkguard/src/utils/OhsUtil.ts +++ b/arkguard/src/utils/OhsUtil.ts @@ -33,6 +33,7 @@ import { SyntaxKind, isExpressionStatement, isClassExpression, + getModifiers, } from 'typescript'; import type { @@ -277,12 +278,14 @@ export function getClassProperties(classNode: ClassDeclaration | ClassExpression if (isConstructorDeclaration(member) && member.parameters) { member.parameters.forEach((parameter) => { - if (isParameter(parameter) && parameter.modifiers) { - parameter.modifiers.forEach((modifier) => { - if (isParameterPropertyModifier(modifier) && parameter.name && isIdentifier(parameter.name)) { + const modifiers = getModifiers(parameter); + if (isParameter(parameter) && modifiers && modifiers.length > 0) { + if (parameter.name && isIdentifier(parameter.name)) { + let hasParameterPropertyModifier = modifiers.find(modifier => isParameterPropertyModifier(modifier)) !== undefined; + if (hasParameterPropertyModifier) { propertySet.add(parameter.name.text); } - }); + } processMemberInitializer(parameter.initializer, propertySet); } });