Skip to content

Work in progress Documentation

Notifications You must be signed in to change notification settings

SnapEnhance/docs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Scripting Documentation

Hello! Here is the long awaited Documentation for the Scripting Engine.
Contributions and improvements to this Documentation are gladly accepted via PRs.
In case of any questions, feel free to ask via opening an issue.

Script Header

Every script written for the Scripting Engine must include a header section at the beginning of the file. The header follows a specific format, as shown below:

// ==SE_module==
// name: script_name
// displayName: Script Name
// description: Script description
// version: 1.0
// author: Author
// ==/SE_module==

The following fields are required: name, version, author
Additionally, there are also optional fields available which are: displayName, description, minSnapchatVersion, minSEVersion, permissions

Field Description

name: Descriptive name for the script. Must be composed of lowercase letters and underscores only.
displayName: Display name of the script.
author: Name of the script's creator.
version: Version number of the script (e.g., 1.0).
description: Brief explanation of the script's functionality.
minSnapchatVersion: Minimum required Snapchat version code (e.g., 106822).
minSEVersion: Minimum required SnapEnhance version code (e.g., ).
permissions: Grant permissions to the script (e.g. unsafe-classloader)
executionSides: Set a custom execution side (e.g. core, manager)

Examples

To start off, you can find a couple of Example scripts written by us here.

disable_camera.js

This scripts main function is, as probably recognizable by the name, to disable the camera.
Conveniently enough, Android offers a great way to do this by using getCameraDisabled.

var getCameraDisabledMethod = hooker.findMethodWithParameters("android.app.admin.DevicePolicyManager", "getCameraDisabled", ["android.content.ComponentName"])

hooker.hook(getCameraDisabledMethod, hooker.stage.BEFORE, param => {
    param.result = true
})

It does this by hooking getCameraDisabled in the android.app.admin.DevicePolicyManager class and making Snapchat believe the camera is disabled by always returning true.

simple_ipc.js

This script is supposed to demonstrate the use of IPC Events.
It simply emits an IPC Event with specific arguments.

module.onSnapMainActivityCreate = activity => {
    ipc.emit("myEvent", "hello", 255, activity.packageName)
}

Which then can get received by other scripts or functions using listeners.

module.onSnapEnhanceLoad = context => {
    ipc.on("myEvent", (args) => {
        longToast("received event: " + args)
    })
}

toast.js

This script demonstrates the use of Toast messages, these can be useful to debug or transmit information to the user.

module.onSnapMainActivityCreate = context => {
    longToast("Snapchat opened!")
}

module.onUnload = () => {
    shortToast("Script unloaded!")
}

Please note that in most cases a context is required.