SPeCS Packages Documentation
    Preparing search index...

    Module @specs-feup/alpakka - v1.2.0

    Alpakka

    Alpakka is a LARA Framework source-to-source compiler for Android's smali syntax. It enables the analysis and transformation of Android apps through APK files.

    The name "Alpakka" derives from the Icelandic word for package, "Pakka", reflecting its core functionality in handling Android Packages (APKs).

    To locally develop Alpakka, follow these steps:

    1. Clone the repositories for Alpakka, the LARA Framework and Specs Java Libs to the root of your workspace.

    2. You'll need to create a package.json file at the root of your workspace with the following contents:

    {
    "type": "module",
    "workspaces": [
    "lara-framework/Lara-JS",
    "alpakka/Alpakka-JS",
    ]
    }
    1. Run the following commands at the root of your workspace to install dependencies and build the projects:
    npm install
    cd lara-framework/Lara-JS
    npm run build
    cd ../../alpakka/AlpakkaWeaver
    gradle installDist
    mv build/install/AlpakkaWeaver/lib/* ../Alpakka-JS/java-binaries/
    cd ../../alpakka/Alpakka-JS
    npm install
    npm run build

    To execute Alpakka, use the following command:

    npx alpakka classic <scriptToRun.js> -p <input file>
    

    Replace <scriptToRun.js> with your JavaScript file and <input file> with the input APK or smali files you want to analyze.

    Alpakka-JS comes with a built-in script to detect and correct resource leaks in Android apps. You can try it by specifying ./scripts/DetectAndCorrectLeaks.js as the script to run.

    Modules

    alpakka/AlpakkaJavaTypes
    alpakka/graphs/cfg/dot/DefaultDotFormatter
    alpakka/graphs/cfg/dot/DefaultFlowGraphDotFormatter
    alpakka/graphs/cfg/dot/DotFormatter
    alpakka/graphs/cfg/flow/edge/ControlFlowEdge
    alpakka/graphs/cfg/flow/edge/DataFlowEdge
    alpakka/graphs/cfg/flow/edge/FlowEdge
    alpakka/graphs/cfg/flow/FlowGraph
    alpakka/graphs/cfg/flow/FlowGraphGenerator
    alpakka/graphs/cfg/flow/node/condition/CaseNode
    alpakka/graphs/cfg/flow/node/condition/ConditionNode
    alpakka/graphs/cfg/flow/node/condition/IfComparisonNode
    alpakka/graphs/cfg/flow/node/condition/TryCatchNode
    alpakka/graphs/cfg/flow/node/FlowNode
    alpakka/graphs/cfg/flow/node/instruction/FunctionEntryNode
    alpakka/graphs/cfg/flow/node/instruction/FunctionExitNode
    alpakka/graphs/cfg/flow/node/instruction/GotoNode
    alpakka/graphs/cfg/flow/node/instruction/InstructionNode
    alpakka/graphs/cfg/flow/node/instruction/LabelNode
    alpakka/graphs/cfg/flow/node/instruction/ReturnNode
    alpakka/graphs/cfg/flow/node/instruction/StatementNode
    alpakka/graphs/cfg/flow/node/instruction/SwitchNode
    alpakka/graphs/cfg/flow/node/instruction/ThrowNode
    alpakka/graphs/cfg/flow/node/instruction/UnknownInstructionNode
    alpakka/graphs/cfg/flow/transformation/FilterFlowNodes
    alpakka/graphs/cfg/graph/BaseEdge
    alpakka/graphs/cfg/graph/BaseGraph
    alpakka/graphs/cfg/graph/BaseNode
    alpakka/graphs/cfg/graph/Edge
    alpakka/graphs/cfg/graph/Graph
    alpakka/graphs/cfg/graph/Node
    core
    Joinpoints