Tag: 检测

在try-finally块中嵌入方法的现有代码(2)

前段时间,我在try-finally块中嵌入了一个方法的现有代码,如何使用ASM将方法的主体包装在try-finally块中。 解决方案是在visitCode()中visitCode()方法体开头的try块的标签,并在visitCode()访问带有返回操作码的指令时完成try-finally块。 我知道如果方法没有返回指令,如果方法总是离开并且exception,则解决方案将不起作用。 虽然,我发现前一种解决方案有时也不适用于带有返回指令的方法。 如果方法有多个返回指令,它将无法工作。 原因是它生成了无效的字节码,因为在方法的开头添加了一个try-finally块,但是完成了多个try-finally块。 通常(但可能取决于javac编译器),字节码方法包含单个返回指令,并且所有返回路径通过跳转在该指令处结束。 但是,使用Eclipse编译以下代码将导致字节代码带有两个返回指令: public boolean isEven(int x) { return x % 2 == 0; } 用Eclipse编译的字节代码: 0: iload_1 1: iconst_2 2: irem 3: ifne 8 6: iconst_1 7: ireturn // javac compilation: goto 9 8: iconst_0 9: ireturn 因此,我想知道包装方法代码的整个代码的正确方法是什么。

如何使用Java检测替换新类?

我需要创建一个java代理,当启用它时,它获取jar文件的路径作为参数,然后它将任何加载的类替换为jar文件中的一个,如果它们的名称匹配。 例如,我们有一个名为com.something.ClassTest的类的应用程序。 现在,如果提到的jar(不在类路径中)有一个与com.something.ClassTest完全相同的类,我想用jar中的那个替换它。 我有这类变压器,但不确定这是否正确。 我收到IOException,找不到消息Class。 @Override public byte[] transform(ClassLoader loader, String className, Class classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws IllegalClassFormatException { if(classNames.contains(className.replace(“/”, “.”))) { System.out.format(“\n==> Found %s \n”, className); try { Class c = urlClassLoader.loadClass(className.replace(“/”, “.”)); InputStream is = urlClassLoader.getResourceAsStream(className.replace(“/”, “.”)); System.out.println(“Loaded class ” + c); ClassReader reader = new ClassReader(is); ClassWriter writer = new […]

检测到连接到PC的Android设备

我有一个android devic,我想知道它什么时候通过java / .net连接到PC我知道它可能 – 三星新PC工作室正在做它,当我连接Android设备它让我知道。 我怎么能达到同样的目的?

如何检测IE中是否启用了Java?

可能重复: 确定客户端浏览器是否已安装Java并可以启动applet 我想运行检查以查看是否未安装Java或者是否在IE中禁用/阻止了Java。 我尝试过navigator.javaEnabled() ,这在Firefox(v10.0.2)中按预期工作,但在IE8中它返回TRUE。 但是,IE会向用户显示提示: 您正在查看的页面使用Java。 有关Java支持的更多信息,请访问Microsoft网站。 我遇到的问题是,有一个复选框”Do not show this message again” ,显然可以勾选,然后不再向用户提示未启用Java。 我如何处理IE中缺少Java支持?

尝试使用java代理获取对象的大小时“无法加载Premain-Class清单属性”

当我尝试运行java程序( java -javaagent:size.jar ObjectSizeTest )时,我收到以下错误: Failed to load Premain-Class manifest attribute from D:\workspace\ObjectSizeTest\size.jar Error occurred during initialization of VM agent library failed to init: instrument 这是ObjectSizeTest的代码: public class ObjectSizeTest { public static void main(String[] args) { String s = new String(“sai”); System.out.println(ObjectSizeFetcher.getObjectSize(s)); } } MANIFEST.MF(适用于size.jar): Manifest-Version: 1.0 Created-By: 1.5.0_18 (Sun Microsystems Inc.) Premain-Class: ObjectSizeFetcher 这是ObjectSizeFetcher的代码: […]

Java:检测对文件的修改(文件轮询?)

在Java中检测文件修改的最有效方法是什么? 我已经阅读过关于文件轮询的内容,但是,随着观看文件数量的增加,轮询方法有许多缺点。 我宁愿不使用轮询,但在线的一些解决方案似乎指向文件轮询作为推荐的方法。 我希望可能是一个与操作系统相关的文件系统更新回调解决方案 – 这在Linux和Windows中都可能吗? 鉴于我目前只打算“观看”2个文件,我仍然对文件轮询解决方案持开放态度。 理想情况下,我希望文件轮询不会对性能产生很大影响。 我知道Java 7的WatchService,但由于7尚未正式发布,我对使用该方法或JNI库犹豫不决。 非常感激! 编辑:文件轮询似乎是要走的路。 如果任何人都可以推荐最安全/最有效的方式来实现文件轮询,那就太棒了。

检测类文件时出错(asm.ClassWriter.getCommonSuperClass)

在仪器上获得错误 java.lang.RuntimeException: java.lang.ClassNotFoundException: Deposit at org.objectweb.asm.ClassWriter.getCommonSuperClass(Unknown Source) at org.objectweb.asm.ClassWriter.a(Unknown Source) at org.objectweb.asm.Frame.a(Unknown Source) at org.objectweb.asm.Frame.a(Unknown Source) at org.objectweb.asm.MethodWriter.visitMaxs(Unknown Source) at com.jConSequence.instrumentor.methodProber.AdddataBaseDetailsInstructions$AdddataBaseDetailsMethodInstructions.visitMaxs(AdddataBaseDetailsInstructions.java:131) at org.objectweb.asm.ClassReader.accept(Unknown Source) at org.objectweb.asm.ClassReader.accept(Unknown Source) at com.jConSequence.instrumentor.PrintLoadedClasses.print(PrintLoadedClasses.java:31) at com.jConSequence.tooGUI.RevEnggToolGUI.jButton1ActionPerformed(RevEnggToolGUI.java:487) at com.jConSequence.tooGUI.RevEnggToolGUI.access$0(RevEnggToolGUI.java:471) at com.jConSequence.tooGUI.RevEnggToolGUI$1.actionPerformed(RevEnggToolGUI.java:127) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.setPressed(Unknown Source) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown […]

检测鼠标使用Java单击屏幕上的任意位置

是否可以在我的应用程序之外的屏幕上的任何位置检测鼠标? 我已经编写了一个在C#中执行此操作的应用程序,但是想在Java中编写一个这样的版本,以便它可以在多个平台上运行。 看起来我可以随时使用java.awt.MouseInfo.getPointerInfo()来获取鼠标的坐标,但我不确定如何监听鼠标点击。 在C#中,我使用GetAsyncKeyState来检测是否单击了鼠标按钮,但显然我不能使用它,如果我希望保持这种“干净”以便在多个平台中使用。

禁用Java应用程序中运行的屏幕捕获软件

我在这里找到了类似的问题,但没有找到这种方法和问题。 我有一个程序可以做一些数学。 目前,结果写在.doc文件中。 但是,这个文件可以通过网络共享。 我想通过在标签中写入结果来禁用它。 但是,再次,可以捕获屏幕。 所以,我发现了很多防止这种情况的想法,但对我来说最有趣的是检测和禁用系统上运行的所有屏幕捕获软件,并定期(如果可能)删除剪贴板。 结果和我的程序(如果它丢失或程序关闭)发生了什么并不重要,唯一重要的是阻止屏幕截图。 我知道这是不可能完全做到的,但是,我想尽可能地让它变得困难。 PS不要讨论手机的相机,在纸上写结果等等,我需要阻止创建我的程序图像(至少当结果出现在屏幕上时)。 编辑: 有检测软件的东西,有没有办法只检测一些正在运行的程序是否可以截屏,如果是,关闭我的应用程序? 但它需要一直听取启动这些软件的时间(如果它没有在我的程序启动时运行)。 事实是,这个程序是针对学生的,他们没有钱购买商业软件(当然不包括试用),因为他们对特殊事物没有足够的知识(他们不使用计算机作为本网站上的人) 。 所以,对于程序员来说,这种保护不一定是绝对的,只是为了学生(但他们并不完全天真:))。 提前致谢。

如何使用检测打印出Java中运行时调用的所有方法?

我想打印出在运行时调用的所有方法。 它们应该按照它们被调用的顺序打印出来,如果它们被多次调用,它们应该多次打印。 这可以用于逆向工程 – 查看按下按钮或执行特定操作时调用哪些函数。 我想为此使用Java代理和检测。