[Xposed Framework Modules] PBombNZ:
I think its a Native Library problem. There is an Australian banking app called NAB with the same problem. Coincidently, both ASB and NAB both use the same Visa's Crypto Native API and both appear to have the "black screen" effect or freezing. I feel like its doing a tampering check in the Native library and when found, just blocks method calls so the program can no longer progress. Because if you disable the xposed module, it won't glitch up but it will pop up with a root message. But if I enable it, it will bypass root messages but freeze up, almost like it knows that the methods are being hooked from somewhere else (like an xposed module) which means its looking at stack traces and/or processes running.

The problem is this out of my scope of expertise of knowledge and out of scope of Xposed as well. I cannot guarantee that there is even code in the native library that has such checks, but with both applications acting like this, it makes me assume that its likely.

I have looked at the assembly of the Visa Crypto Native library but its all jibberish to me. I don't even think Visa themselves could understand the assembly code even if they had the actual source code right next to them. And lets say, even if I find where it's doing tampering checks and I had the needed C and Assembly skills, how am I going hook or inject when there is like zero frameworks for Android Native hooking available.

Below is logging of the NAB app. This logging is almost exactly the same as when ASB crashes/freezes. Just for you more nerdy people who can understand it.

DALVIK THREADS (18):
"main" prio=5 tid=1 WaitingForJniOnLoad
| group="main" sCount=1 dsCount=0 obj=0x74f53378 self=0xb4827800
| sysTid=20879 nice=0 cgrp=apps/bg_non_interactive sched=0/0 handle=0xb6fafbec
| state=R schedstat=( 44619313420 14560132668 30298 ) utm=4421 stm=41 core=1 HZ=100
| stack=0xbe2c0000-0xbe2c2000 stackSize=8MB
| held mutexes=
[B] native: #00 pc 0024a144 /data/app/au.com.nab.mobile-1/lib/arm/libvisacrypto.so (???)
native: #01 pc 000cbd9c /data/app/au.com.nab.mobile-1/lib/arm/libvisacrypto.so (???)
native: #02 pc 000d22b8 /data/app/au.com.nab.mobile-1/lib/arm/libvisacrypto.so (???)[/B]
native: #03 pc 000015bd /system/bin/linker (__dl__ZN6soinfo12CallFunctionEPKcPFvvE+44)
at java.lang.Runtime.nativeLoad(Native method)
at java.lang.Runtime.doLoad(Runtime.java:429)
- locked <@addr=0x74fb9a28> (a java.lang.Runtime)
at java.lang.Runtime.loadLibrary(Runtime.java:370)
at java.lang.System.loadLibrary(System.java:988)
at com.visa.cbp.sdk.crypto.JniCrypto.<clinit>(unavailable:-1)
at rrrrrr.ppplpl.bЛЛ041BЛЛЛ(unavailable:-1)
at java.lang.reflect.Method.invoke!(Native method)
at java.lang.reflect.Method.invoke(Method.java:372)
at rrrrrr.ppplpl.b041B041BЛЛЛЛ(unavailable:-1)
- locked <@addr=0x32c0f260> (a java.lang.Class<rrrrrr.ppplpl>)
at java.lang.reflect.Method.invoke!(Native method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.visa.cbp.sdk.facade.VisaPaymentSDKImpl.init(unavailable:-1)
at java.lang.reflect.Method.invoke!(Native method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.visa.cbp.sdk.facade.VisaPaymentSDKImpl.getInstance(unavailable:-1)
- locked <@addr=0x32c18400> (a java.lang.Class<com.visa.cbp.sdk.facade.VisaPaymentSDKImpl>)
at aue.f(SourceFile:59)
at aue.<init>(SourceFile:47)
at aue.a(SourceFile:82)
at au.com.nab.mobile.common.application.NabMIBApplication.onCreate(SourceFile:239)
at au.com.nab.mobile.common.application.NabMIBApplication_.onCreate(SourceFile:36)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:-1)
at android.app.ActivityThread.handleBindApplication [XposedOriginal](ActivityThread.java:-1)
at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative!(Native method)
at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:755)
at android.app.ActivityThread.handleBindApplication [XposedHooked](<Xposed>:-1)
at android.app.ActivityThread.access$1700(ActivityThread.java:-1)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:-1)
at android.os.Handler.dispatchMessage(Handler.java:-1)
at android.os.Looper.loop(Looper.java:-1)
at android.app.ActivityThread.main(ActivityThread.java:-1)
at java.lang.reflect.Method.invoke!(Native method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:-1)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:-1)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:133)

UPDATE (21/06/2016): Tried a different route to see if I could also get NAB to work with root. Essentially instead of hooking (via Xposed), I thought to modify the smali directly then repackage and resign the APK and install the APK to my phone to see if it would work or not. Using this approach meant that it would not have "Xposed" methods in the stack trace which could be how they were checking for tampering. Result was negative as the same "black screen" effect is still present. This makes me believe further that there is code checking for tampering in the .so file.