string-pattern-fix
pagran 6 months ago
parent d8d33f17b5
commit 3bb6939bf6

@ -43,24 +43,8 @@ func CallExpr(fun ast.Expr, args ...ast.Expr) *ast.CallExpr {
}
}
// LambdaCall "func() resultType {block}()"
func LambdaCall(resultType ast.Expr, block *ast.BlockStmt) *ast.CallExpr {
funcLit := &ast.FuncLit{
Type: &ast.FuncType{
Params: &ast.FieldList{},
Results: &ast.FieldList{
List: []*ast.Field{
{Type: resultType},
},
},
},
Body: block,
}
return CallExpr(funcLit)
}
// LambdaCallParams "func(params) resultType {block}(args)"
func LambdaCallParams(params *ast.FieldList, resultType ast.Expr, block *ast.BlockStmt, args []ast.Expr) *ast.CallExpr {
// LambdaCall "func(params) resultType {block}(args)"
func LambdaCall(params *ast.FieldList, resultType ast.Expr, block *ast.BlockStmt, args []ast.Expr) *ast.CallExpr {
funcLit := &ast.FuncLit{
Type: &ast.FuncType{
Params: params,

@ -242,7 +242,7 @@ func obfuscateString(obfRand *obfRand, data string) *ast.CallExpr {
block.List = append(block.List, ah.ReturnStmt(ah.CallExpr(ast.NewIdent("string"), ast.NewIdent("data"))))
return ah.LambdaCallParams(params, ast.NewIdent("string"), block, args)
return ah.LambdaCall(params, ast.NewIdent("string"), block, args)
}
func obfuscateByteSlice(obfRand *obfRand, isPointer bool, data []byte) *ast.CallExpr {
@ -257,13 +257,13 @@ func obfuscateByteSlice(obfRand *obfRand, isPointer bool, data []byte) *ast.Call
Op: token.AND,
X: ast.NewIdent("data"),
}))
return ah.LambdaCallParams(params, &ast.StarExpr{
return ah.LambdaCall(params, &ast.StarExpr{
X: &ast.ArrayType{Elt: ast.NewIdent("byte")},
}, block, args)
}
block.List = append(block.List, ah.ReturnStmt(ast.NewIdent("data")))
return ah.LambdaCallParams(params, &ast.ArrayType{Elt: ast.NewIdent("byte")}, block, args)
return ah.LambdaCall(params, &ast.ArrayType{Elt: ast.NewIdent("byte")}, block, args)
}
func obfuscateByteArray(obfRand *obfRand, isPointer bool, data []byte, length int64) *ast.CallExpr {
@ -311,10 +311,10 @@ func obfuscateByteArray(obfRand *obfRand, isPointer bool, data []byte, length in
block.List = append(block.List, sliceToArray...)
if isPointer {
return ah.LambdaCallParams(params, &ast.StarExpr{X: arrayType}, block, args)
return ah.LambdaCall(params, &ast.StarExpr{X: arrayType}, block, args)
}
return ah.LambdaCallParams(params, arrayType, block, args)
return ah.LambdaCall(params, arrayType, block, args)
}
func getNextObfuscator(obfRand *obfRand, size int) obfuscator {

@ -229,7 +229,7 @@ func dataToByteSliceWithExtKeys(obfRand *mathrand.Rand, data []byte, extKeys []*
slices.Reverse(stmts)
stmts = append([]ast.Stmt{ah.AssignDefineStmt(ast.NewIdent("data"), ah.DataToByteSlice(data))}, append(stmts, ah.ReturnStmt(ast.NewIdent("data")))...)
return ah.LambdaCall(&ast.ArrayType{Elt: ast.NewIdent("byte")}, ah.BlockStmt(stmts...))
return ah.LambdaCall(nil, &ast.ArrayType{Elt: ast.NewIdent("byte")}, ah.BlockStmt(stmts...), nil)
}
// dataToByteSliceWithExtKeys scramble and turns a byte into an AST expression like:

Loading…
Cancel
Save