320 lines
12 KiB
Text
320 lines
12 KiB
Text
strict digraph "" {
|
|
#"MainActivity-><init>()V" [accessflags="public constructor",
|
|
# classname="MainActivity",
|
|
# descriptor="()V",
|
|
# entrypoint=False,
|
|
# external=False,
|
|
# methodname="<init>"];
|
|
#"Activity-><init>()V" [classname="Activity",
|
|
# descriptor="()V",
|
|
# entrypoint=False,
|
|
# external=True,
|
|
# methodname="<init>"];
|
|
#"MainActivity->onCreate(Bundle)V" [accessflags=protected,
|
|
# classname="MainActivity",
|
|
# descriptor="(Bundle)V",
|
|
# entrypoint=False,
|
|
# external=False,
|
|
# methodname=onCreate];
|
|
"Main->main()V" [accessflags=public,
|
|
classname="Main",
|
|
descriptor="()V",
|
|
entrypoint=False,
|
|
external=False,
|
|
methodname=main];
|
|
#"Activity->onCreate(Bundle)V" [classname="Activity",
|
|
# descriptor="(Bundle)V",
|
|
# entrypoint=False,
|
|
# external=True,
|
|
# methodname=onCreate];
|
|
#"Main-><init>(Activity)V" [accessflags="public constructor",
|
|
# classname="Main",
|
|
# descriptor="(Activity)V",
|
|
# entrypoint=False,
|
|
# external=False,
|
|
# methodname="<init>"];
|
|
#"Log->i(String String Throwable)I" [classname="Log",
|
|
# descriptor="(String String Throwable)I",
|
|
# entrypoint=False,
|
|
# external=True,
|
|
# methodname=i];
|
|
"Method->invoke(Object [Object)Object" [classname="Method",
|
|
descriptor="(Object [Object)Object",
|
|
entrypoint=False,
|
|
external=True,
|
|
methodname=invoke];
|
|
"ClassLoader->loadClass(String)Class" [classname="ClassLoader",
|
|
descriptor="(String)Class",
|
|
entrypoint=False,
|
|
external=True,
|
|
methodname=loadClass];
|
|
"T->check_is_Malicious_send_data(Method)Z" [accessflags="public static final",
|
|
classname="T",
|
|
descriptor="(Method)Z",
|
|
entrypoint=False,
|
|
external=False,
|
|
methodname=check_is_Malicious_send_data,
|
|
style=filled,
|
|
fillcolor=lightgrey];
|
|
"T->check_is_Malicious_get_data(Method)Z" [accessflags="public static final",
|
|
classname="T",
|
|
descriptor="(Method)Z",
|
|
entrypoint=False,
|
|
external=False,
|
|
methodname=check_is_Malicious_get_data,
|
|
style=filled,
|
|
fillcolor=lightgrey];
|
|
"Class->getMethod(String [Class)Method" [classname="Class",
|
|
descriptor="(String [Class)Method",
|
|
entrypoint=False,
|
|
external=True,
|
|
methodname=getMethod];
|
|
"Main->decrypt(String)String" [accessflags=public,
|
|
classname="Main",
|
|
descriptor="(String)String",
|
|
entrypoint=False,
|
|
external=False,
|
|
methodname=decrypt];
|
|
"Malicious->send_data(String Activity)String" [accessflags="public static",
|
|
classname="Malicious",
|
|
descriptor="(String Activity)String",
|
|
entrypoint=False,
|
|
external=False,
|
|
methodname=send_data,
|
|
style=filled,
|
|
fillcolor=salmon];
|
|
"Malicious->get_data(String Activity)String" [accessflags="public static",
|
|
classname="Malicious",
|
|
descriptor="(String Activity)String",
|
|
entrypoint=False,
|
|
external=False,
|
|
methodname=get_data,
|
|
style=filled,
|
|
fillcolor=salmon];
|
|
#"Object-><init>()V" [classname="Object",
|
|
# descriptor="()V",
|
|
# entrypoint=False,
|
|
# external=True,
|
|
# methodname="<init>"];
|
|
#"ByteBuffer->wrap([B)ByteBuffer" [classname="ByteBuffer",
|
|
# descriptor="([B)ByteBuffer",
|
|
# entrypoint=False,
|
|
# external=True,
|
|
# methodname=wrap];
|
|
#"Class->getClassLoader()ClassLoader" [classname="Class",
|
|
# descriptor="()ClassLoader",
|
|
# entrypoint=False,
|
|
# external=True,
|
|
# methodname=getClassLoader];
|
|
#"SecretKeySpec-><init>([B String)V" [classname="SecretKeySpec",
|
|
# descriptor="([B String)V",
|
|
# entrypoint=False,
|
|
# external=True,
|
|
# methodname="<init>"];
|
|
"Base64->decode(String I)[B" [classname="Base64",
|
|
descriptor="(String I)[B",
|
|
entrypoint=False,
|
|
external=True,
|
|
methodname=decode];
|
|
#"InMemoryDexClassLoader-><init>(ByteBuffer ClassLoader)V" [classname="InMemoryDexClassLoader",
|
|
# descriptor="(ByteBuffer ClassLoader)V",
|
|
# entrypoint=False,
|
|
# external=True,
|
|
# methodname="<init>"];
|
|
#"String->getBytes()[B" [classname="String",
|
|
# descriptor="()[B",
|
|
# entrypoint=False,
|
|
# external=True,
|
|
# methodname=getBytes];
|
|
#"Utils-><init>()V" [accessflags="public constructor",
|
|
# classname="Utils",
|
|
# descriptor="()V",
|
|
# entrypoint=False,
|
|
# external=False,
|
|
# methodname="<init>"];
|
|
#"Utils->popup(Activity String String)V" [accessflags="public static",
|
|
# classname="Utils",
|
|
# descriptor="(Activity String String)V",
|
|
# entrypoint=False,
|
|
# external=False,
|
|
# methodname=popup];
|
|
#"AlertDialog$Builder->setMessage(CharSequence)AlertDialog$Builder" [classname="AlertDialog$Builder",
|
|
# descriptor="(CharSequence)AlertDialog$Builder",
|
|
# entrypoint=False,
|
|
# external=True,
|
|
# methodname=setMessage];
|
|
#"AlertDialog$Builder->setTitle(CharSequence)AlertDialog$Builder" [classname="AlertDialog$Builder",
|
|
# descriptor="(CharSequence)AlertDialog$Builder",
|
|
# entrypoint=False,
|
|
# external=True,
|
|
# methodname=setTitle];
|
|
#"AlertDialog$Builder->create()AlertDialog;" [classname="AlertDialog$Builder",
|
|
# descriptor="()AlertDialog;",
|
|
# entrypoint=False,
|
|
# external=True,
|
|
# methodname=create];
|
|
#"AlertDialog$Builder-><init>(Landroid/content/Context;)V" [classname="AlertDialog$Builder",
|
|
# descriptor="(Landroid/content/Context;)V",
|
|
# entrypoint=False,
|
|
# external=True,
|
|
# methodname="<init>"];
|
|
#"AlertDialog;->show()V" [classname="AlertDialog;",
|
|
# descriptor="()V",
|
|
# entrypoint=False,
|
|
# external=True,
|
|
# methodname=show];
|
|
"Utils->sink(Activity String)V" [accessflags="public static",
|
|
classname="Utils",
|
|
descriptor="(Activity String)V",
|
|
entrypoint=False,
|
|
external=False,
|
|
methodname=sink];
|
|
"Utils->source(String)String" [accessflags="public static",
|
|
classname="Utils",
|
|
descriptor="(String)String",
|
|
entrypoint=False,
|
|
external=False,
|
|
methodname=source];
|
|
#"StringBuilder->append(String)StringBuilder" [classname="StringBuilder",
|
|
# descriptor="(String)StringBuilder",
|
|
# entrypoint=False,
|
|
# external=True,
|
|
# methodname=append];
|
|
#"StringBuilder-><init>()V" [classname="StringBuilder",
|
|
# descriptor="()V",
|
|
# entrypoint=False,
|
|
# external=True,
|
|
# methodname="<init>"];
|
|
#"StringBuilder->toString()String" [classname="StringBuilder",
|
|
# descriptor="()String",
|
|
# entrypoint=False,
|
|
# external=True,
|
|
# methodname=toString];
|
|
"String-><init>([B)V" [classname="String",
|
|
descriptor="([B)V",
|
|
entrypoint=False,
|
|
external=True,
|
|
methodname="<init>"];
|
|
"Cipher->doFinal([B)[B" [classname="Cipher",
|
|
descriptor="([B)[B",
|
|
entrypoint=False,
|
|
external=True,
|
|
methodname=doFinal];
|
|
"Cipher->init(I Key)V" [classname="Cipher",
|
|
descriptor="(I Key)V",
|
|
entrypoint=False,
|
|
external=True,
|
|
methodname=init];
|
|
"Cipher->getInstance(String)Cipher" [classname="Cipher",
|
|
descriptor="(String)Cipher",
|
|
entrypoint=False,
|
|
external=True,
|
|
methodname=getInstance];
|
|
#"Main->encrypt(String)String" [accessflags=public,
|
|
# classname="Main",
|
|
# descriptor="(String)String",
|
|
# entrypoint=False,
|
|
# external=False,
|
|
# methodname=encrypt];
|
|
#"Base64->encodeToString([B I)String" [classname="Base64",
|
|
# descriptor="([B I)String",
|
|
# entrypoint=False,
|
|
# external=True,
|
|
# methodname=encodeToString];
|
|
#"Class->descriptorString()String" [classname="Class",
|
|
# descriptor="()String",
|
|
# entrypoint=False,
|
|
# external=True,
|
|
# methodname=descriptorString];
|
|
#"Method->getName()String" [classname="Method",
|
|
# descriptor="()String",
|
|
# entrypoint=False,
|
|
# external=True,
|
|
# methodname=getName];
|
|
#"String->equals(Object)Z" [classname="String",
|
|
# descriptor="(Object)Z",
|
|
# entrypoint=False,
|
|
# external=True,
|
|
# methodname=equals];
|
|
#"Method->getDeclaringClass()Class" [classname="Method",
|
|
# descriptor="()Class",
|
|
# entrypoint=False,
|
|
# external=True,
|
|
# methodname=getDeclaringClass];
|
|
#"Method->getParameterTypes()[Class" [classname="Method",
|
|
# descriptor="()[Class",
|
|
# entrypoint=False,
|
|
# external=True,
|
|
# methodname=getParameterTypes];
|
|
#"Method->getReturnType()Class" [classname="Method",
|
|
# descriptor="()Class",
|
|
# entrypoint=False,
|
|
# external=True,
|
|
# methodname=getReturnType];
|
|
#"Malicious-><init>()V" [accessflags="public constructor",
|
|
# classname="Malicious",
|
|
# descriptor="()V",
|
|
# entrypoint=False,
|
|
# external=False,
|
|
# methodname="<init>"];
|
|
|
|
{rank = same; "Main->main()V"}
|
|
{rank = same; "ClassLoader->loadClass(String)Class"; "Class->getMethod(String [Class)Method"; "Method->invoke(Object [Object)Object"; "Malicious->get_data(String Activity)String"}
|
|
{rank = same; "Main->decrypt(String)String"; "T->check_is_Malicious_get_data(Method)Z"; "T->check_is_Malicious_send_data(Method)Z"; "Utils->source(String)String"; "Utils->sink(Activity String)V"}
|
|
|
|
#"MainActivity-><init>()V" -> "Activity-><init>()V";
|
|
#"MainActivity->onCreate(Bundle)V" -> "Main->main()V";
|
|
#"MainActivity->onCreate(Bundle)V" -> "Activity->onCreate(Bundle)V";
|
|
#"MainActivity->onCreate(Bundle)V" -> "Main-><init>(Activity)V";
|
|
#"MainActivity->onCreate(Bundle)V" -> "Log->i(String String Throwable)I";
|
|
"Main->main()V" -> "Main->decrypt(String)String";
|
|
"Main->main()V" -> "ClassLoader->loadClass(String)Class";
|
|
"Main->main()V" -> "Malicious->get_data(String Activity)String";
|
|
"Main->main()V" -> "Method->invoke(Object [Object)Object";
|
|
"Main->main()V" -> "Malicious->send_data(String Activity)String";
|
|
"Main->main()V" -> "T->check_is_Malicious_get_data(Method)Z";
|
|
"Main->main()V" -> "Class->getMethod(String [Class)Method";
|
|
"Main->main()V" -> "T->check_is_Malicious_send_data(Method)Z";
|
|
#"Main-><init>(Activity)V" -> "Object-><init>()V";
|
|
#"Main-><init>(Activity)V" -> "ByteBuffer->wrap([B)ByteBuffer";
|
|
#"Main-><init>(Activity)V" -> "Class->getClassLoader()ClassLoader";
|
|
#"Main-><init>(Activity)V" -> "SecretKeySpec-><init>([B String)V";
|
|
#"Main-><init>(Activity)V" -> "Base64->decode(String I)[B";
|
|
#"Main-><init>(Activity)V" -> "InMemoryDexClassLoader-><init>(ByteBuffer ClassLoader)V";
|
|
#"Main-><init>(Activity)V" -> "String->getBytes()[B";
|
|
#"Utils-><init>()V" -> "Object-><init>()V";
|
|
#"Utils->popup(Activity String String)V" -> "AlertDialog$Builder->setMessage(CharSequence)AlertDialog$Builder";
|
|
#"Utils->popup(Activity String String)V" -> "AlertDialog$Builder->setTitle(CharSequence)AlertDialog$Builder";
|
|
#"Utils->popup(Activity String String)V" -> "AlertDialog$Builder->create()AlertDialog;";
|
|
#"Utils->popup(Activity String String)V" -> "AlertDialog$Builder-><init>(Landroid/content/Context;)V";
|
|
#"Utils->popup(Activity String String)V" -> "AlertDialog;->show()V";
|
|
#"Utils->sink(Activity String)V" -> "Utils->popup(Activity String String)V";
|
|
#"Utils->source(String)String" -> "StringBuilder->append(String)StringBuilder";
|
|
#"Utils->source(String)String" -> "StringBuilder-><init>()V";
|
|
#"Utils->source(String)String" -> "StringBuilder->toString()String";
|
|
"Main->decrypt(String)String" -> "Base64->decode(String I)[B";
|
|
"Main->decrypt(String)String" -> "String-><init>([B)V";
|
|
"Main->decrypt(String)String" -> "Cipher->doFinal([B)[B";
|
|
"Main->decrypt(String)String" -> "Cipher->init(I Key)V";
|
|
"Main->decrypt(String)String" -> "Cipher->getInstance(String)Cipher";
|
|
#"Main->encrypt(String)String" -> "String->getBytes()[B";
|
|
#"Main->encrypt(String)String" -> "Cipher->doFinal([B)[B";
|
|
#"Main->encrypt(String)String" -> "Cipher->init(I Key)V";
|
|
#"Main->encrypt(String)String" -> "Cipher->getInstance(String)Cipher";
|
|
#"Main->encrypt(String)String" -> "Base64->encodeToString([B I)String";
|
|
"Malicious->get_data(String Activity)String" -> "Utils->source(String)String";
|
|
"Malicious->send_data(String Activity)String" -> "Utils->sink(Activity String)V";
|
|
#"T->check_is_Malicious_get_data(Method)Z" -> "Class->descriptorString()String";
|
|
#"T->check_is_Malicious_get_data(Method)Z" -> "Method->getName()String";
|
|
#"T->check_is_Malicious_get_data(Method)Z" -> "String->equals(Object)Z";
|
|
#"T->check_is_Malicious_get_data(Method)Z" -> "Method->getDeclaringClass()Class";
|
|
#"T->check_is_Malicious_get_data(Method)Z" -> "Method->getParameterTypes()[Class";
|
|
#"T->check_is_Malicious_get_data(Method)Z" -> "Method->getReturnType()Class";
|
|
#"T->check_is_Malicious_send_data(Method)Z" -> "Class->descriptorString()String";
|
|
#"T->check_is_Malicious_send_data(Method)Z" -> "Method->getName()String";
|
|
#"T->check_is_Malicious_send_data(Method)Z" -> "String->equals(Object)Z";
|
|
#"T->check_is_Malicious_send_data(Method)Z" -> "Method->getDeclaringClass()Class";
|
|
#"T->check_is_Malicious_send_data(Method)Z" -> "Method->getParameterTypes()[Class";
|
|
#"T->check_is_Malicious_send_data(Method)Z" -> "Method->getReturnType()Class";
|
|
#"Malicious-><init>()V" -> "Object-><init>()V";
|
|
}
|