Tag: 逆向工程

如何使用Hibernate逆向工程工具生成或以进行反向关联?

我想向一个集合中添加元素,最终会像这样映射: 我想要使​​用Hibernate代替,因为我不关心它们被检索的顺序,我只想保持关联的那一方是最新的。 根据https://www.hibernate.org/117.html,“Hibernate可以添加到,或声明with inverse =”true“而不初始化集合。” 我的问题是我不知道如何强制(或建议)逆向工程工具(hibernate-tools.jar)使用或 – 它总是使用。 谢谢!

Java:方法挂钩和查找对象实例

情况 嗨,我有2个问题。 情况是我正在为Windows编写Java API ,它还提供了将代码注入进程然后操作目标的工具。 我已经实现了注射部件 ,例如将一个jar子注入另一个jar子里。 此时我的jar被调用(目标已经在运行时),并在完整的静态上下文中启动。 目标和问题 从这里我有两个目标: 我想与目标对象进行交互 ,因此我需要引用 。 对于许多对象,这已经成为可能,因为它们提供对其实例的静态访问。 例如, awt.Frames #getFrames()提供对所有创建的Frame对象的访问。 但如果有可能访问堆上的任意对象 ,那将是非常棒的。 像’ Heap#getAllObjectInstances() ‘之类的东西。 给定一个对象实例,我想连接到这个对象的任意函数 。 例如,每当调用BufferStrategy#show()时,我希望它首先调用另一个方法。 所以我总结了以下问题: 如何从静态上下文中获取任意对象引用? 如何连接到任意函数? 备注 到目前为止我所做的,评论和想法: JDI (Java调试器接口)通过VirtualMachine#allClasses() – > ReferenceType#instances(0)提供这样的方法。 但是JDI需要使用额外的调试参数来启动目标JVM ,这对我来说是没有选择的 。 可以使用内存工具进行低级分析并分析堆,但我希望有人知道更高级的方法 。 使用Windows API对我来说是一个选项,因为我熟悉JNA / JNI ,但我不知道这样的工具。 最后一种方法是使用IAT挂钩 C-Code,这是一种非常低级的方法,我想避免这种情况 。 我可以假设此时有一个对象引用,也许Reflection API提供了一种更改对象方​​法的方法? 或者至少简单地提供挂钩机制? 请注意,更改目标代码当然不适合我。 并且它已经在运行时,因此ByteCode-Manipulation也可以是一个选项。 脚本 这会派上用场: […]

试图逆向工程我的应用程序,但得到一些奇怪的文件树

我丢失了去年我建立的所有应用程序的代码(雷击我的硬盘,没有备份任何应用程序)。 由于它们是相当简单的应用程序,我将它们置于逆向工程过程中。 我已经在过去几十次这样做了,每次我都没有问题(如果我们不计算工作时间将所有文件组合到一个项目中)。 我已经完成了在硬盘耗尽期间丢失的3个应用程序。 他们几乎完美无缺地反转,但我被困在了这个。 让我们详细了解一下。 逆向工程进展顺利。 我能够从APK中提取的编码XML文件中获取XML代码。 我还能够从classes.dex成功反编译Java代码。 我得到所有文件可读,然后我可以通过文本编辑器打开/查看。 但我有一个奇怪的文件结构和奇怪的文件名 。 项目文件位于通常的路径src/com/mycompanyname/appname 。 在RI处理之后, 一些文件保留在主路径( R.java ,第三方广告文件和其他一些文件 )中,而所有其他文件都被重新映射到文件结构中,如下所示: a.java b.java c.java … z.java 我写的所有文件都被重命名并获得了这些奇怪的名字,而所有第三方文件都保持不变。 问:有谁可以告诉我这可能是什么原因? 问:在将代码编译成APK之前,Eclipse是否以某种方式混淆了代码? 这是混淆的APK在通过IR流程后的样子吗? 我真的希望有人能够帮助我,因为我仍然需要重建超过10个其他应用程序。 它

如何让Hibernate Tools用toString,equals和hashcode生成POJO?

用于eclipse的Hibernate Tools插件(版本3.2.4) 大家好, 我正在使用插件从我的DB-Schema中反向设计我的POJO和DAO,并且由于某种原因,在POJO中没有创建toString,equals和hashcode方法。 我正在做的是以下内容:创建一个新的JPA项目。 配置它的persistence.xml文件,如下所示: org.hibernate.ejb.HibernatePersistence false 创建了一个hibernate.reveng.xml文件,只在我的目录中选择我的dbo scehma。 然后创建一个类型为JPA的Hibernate控制台配置和从JPA配置获取的连接,最后配置持久性单元。 使用Hibernate代码生成配置创建一个新配置,我在其中启用了“从JDBC连接反向工程”,定义了输出目录,包和reveng文件。 此外,我检查了该选项卡中的所有复选框(除了使用自定义模板)。 在我使用的导出器选项卡中: 1.使用Java 5语法。 2.生成EJB3注释。 并使用“域代码”和“DAO代码”导出器。 这很好(在解决了DTP插件兼容性的一些问题之后)。 主要问题是我在Pojo.ftl中看到以下表达式: 在PojoToString.ftl我看到: 我在哪里可以设置这个属性? 我希望我的所有pojos都需要toString,equals和hashcode? 先感谢您

我如何反编译.jar文件?

可能重复: 我在哪里可以找到Java反编译器? 如何反编译整个Jar文件? 我有一个.jar文件。 它是一个单独的文件,但我想“反编译”它以获得原始的java代码(或者最接近Java代码的东西 – 我能理解和编辑的东西)。 我相信我的文件(特别是)是一个java applet,但它保存为可执行jar文件(.jar)。 我怎么做这样的事情?

Eclipse插件或开源工具,用于对序列图的Java代码进行反向工程

我正在寻找一个eclipse插件或一个开源工具来反向设计序列图。 我尝试使用Alto UML,但它只是给出了所选类的序列图。 我想有一个整个调用堆栈的序列图,包括方法,输入参数和输出句子。 能告诉我一些关于此事的建议吗? 谢谢!

了解Dalvik代码的反汇编?

我正在和我写的一个小型Hello World Android应用程序中使用smali和baksmali 。 我的源代码是: package com.hello; import android.app.Activity; import android.os.Bundle; public class Main extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } } 然后被拆解为: .class public Lcom/hello/Main; .super Landroid/app/Activity; .source “Main.java” # direct methods .method public constructor ()V .locals 0 .prologue .line […]

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

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

解析Jar文件并找到类之间的关系?

如何检测jar文件中的类是否正在扩展其他类,或者是否创建了对其他类对象或其他类对象的方法调用? 然后系统输出哪个类扩展哪个类以及哪个类调用哪个类的方法。 我使用Classparser来解析jar。 这是我的代码的一部分: String jarfile = “C:\\Users\\OOOO\\Desktop\\Sample.Jar”; jar = new JarFile(jarfile); Enumeration entries = jar.entries(); while (entries.hasMoreElements()) { JarEntry entry = entries.nextElement(); if (!entry.getName().endsWith(“.class”)) { continue; } ClassParser parser = new ClassParser(jarfile, entry.getName()); JavaClass javaClass = parser.parse();

是否可以从JavaDoc创建Java类?

问题在于:目前我的团队为供应商工作,他们从他们的库中为我们提供了一个巨大的JavaDoc规范,但是没有为.jar文件提供存根或实现。 我们已经与他们交谈,但他们将在2到3周内提供.jar文件。 我不想等待这个时间来开始我们的开发,所以这里的问题是: 仅提供JavaDoc .html文件,是否有任何工具(免费/开源)可用,因此我们可以创建一个.jar(或一堆.java / .class文件),使我们能够编译我们的代码?