我使用Xamarin Studio 4.2.3创建了一个简单的Android HelloWorld应用程序,除了在随机数大于0.5时打印出一些消息之外什么都不做.它在Nexus 4和Nexus 5上运行得非常好.
我正在做的下一件事是使用7Zip从应用程序的apk(来自程序集文件夹)中提取代码.dll.使用.Net Reflector和Reflexil我正在修改单个指令,通常是由"if(rand.nextDouble()> 0.5){doStuff()}"中的IF语句生成的brfalse.s,使其分支到在doStuff()调用之前的指令,从而有效地使IF语句无用并确保始终调用该方法.
接下来我将保存已修补的.dll,将.apk中的原始文件替换为已修补的文件,签名并压缩.apk,最后我将使用adb进行安装.
当我在手机上启动应用程序时,它会直接崩溃,LogCat会显示以下内容:
03-20 10:12:08.709: I/ActivityManager(764): Start proc HelloMonoLVL.HelloMonoLVL for activity HelloMonoLVL.HelloMonoLVL/hellomonolvl.hellomonolvl.TrialSplashScreen: pid=23099 uid=10128 gids={50128}
03-20 10:12:08.729: D/dalvikvm(23099): Trying to load lib /data/app-lib/HelloMonoLVL.HelloMonoLVL-1/libmonodroid.so 0x427154a0
03-20 10:12:08.729: D/dalvikvm(23099): Added shared lib /data/app-lib/HelloMonoLVL.HelloMonoLVL-1/libmonodroid.so 0x427154a0
03-20 10:12:08.739: W/libc(23099): WARNING: generic atexit() called from legacy shared library
03-20 10:12:08.759: W/monodroid-gc(23099): GREF GC Threshold: 46800
03-20 10:12:08.769: A/monodroid-assembly(23099): Coult not load assembly 'HelloMonoLVL' during startup registration.
03-20 10:12:08.769: A/monodroid-assembly(23099): This might be due to an invalid debug …Run Code Online (Sandbox Code Playgroud)