吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5304|回复: 49
收起左侧

[MacOS逆向] DBeaver Ultimate edition JAVA程序逆向分析

  [复制链接]
Vvvvvoid 发表于 2022-7-25 16:41
本帖最后由 Vvvvvoid 于 2022-7-25 20:46 编辑

DBeaver Ultimate edition JAVA程序逆向分析

官方下载地址: https://dbeaver.com/download/ultimate/

当前分析版本号: dbeaver-ue-22.1.0

环境

JAVA/Maven/javassist

原理: 利用 javassist 载入 资源文件,并修改字节码,保存为 class 文件 ; 之后自行替换目标 jar包中的 class文件


WIN10/Mac m1 测试通过

分析

安装后打开主程序,弹出未授权框; 关闭框后程序就跑飞了

dialog.jpg

我们在程序主目录, 找到环境下的所有依赖 jar, 搜关键字 ‘No license found’

找到一个关键jar : com.dbeaver.lm.core_2.0.112.202206121904.jar
简单分析后, 记录执行修改如下:
LicenseServiceEmbedded.invalidateActiveLicense 返回 true;

no_license_found.jpg

接着 next,查找下一个

找到关键jar: com.dbeaver.lm.ui_2.0.112.202206121904.jar
注意到当前的 class 是 LicenseMissingDialog , 是 IconAndMessageDialog 的实现类
同时, 该jar包内 有多个 实现类, 一定是哪里有什么判断, 所以调用到了这里的 licenseMiss

miss_license.jpg

接着搜一下 ‘LicenseMissingDialog’ , 看看是谁调用的;
此时定位到了 LicenseManagerUIUtils.checkLicense

看着类名跟方法名都很像真的; 简单分析下这个 方法
license_manager.jpg

看到代码里有一段循环 获取 license , 如果 license miss 则会调用 LicenseMissingDialog 实现类,如果找到直接则返回 license
这里我们注意到 LMLicense 这个 对象; 跟进去看看, 看到一个构造器


LMLicense_cus.jpg

就用这个构造器,直接 让 checkLicense 返回 new LMLicense(xxxxx,xxx...)
改完之后,重新打开程序, 没有弹框里, 能正常使用了, 但是还有一个瑕疵,点击关于 还是显示 Not licensed!

Snipaste_2022-07-25_16-06-34.jpg

接着搜 找到了 第一步的那个类 , 定位到 getActiveProductLicense 这个方法, 看到返回值也是 LMLicense, 把第二部的 return过去就可以

get_license.jpg

get_active_license.jpg

改完之后保存,打开程序 ok了

Snipaste_2022-07-25_16-05-56.jpg

点更新的时候还是有点小瑕疵,留给大家当作业吧~

具体代码

自行修改路径,以及添加所有程序依赖的 jar包,修改并保存后替换目标 jar包里的 class 文件既可

<dependency>
    <groupId>org.javassist</groupId>
    <artifactId>javassist</artifactId>
    <version>3.26.0-GA</version>
</dependency>
ClassPool pool = ClassPool.getDefault();
//设置目标类的路径
pool.insertClassPath("/Applications/DBeaverUltimate.app/Contents/Eclipse/plugins/com.dbeaver.app.advanced_22.1.0.202206121904.jar");
pool.insertClassPath("/Applications/DBeaverUltimate.app/Contents/Eclipse/plugins/com.dbeaver.app.ultimate_22.1.0.202206121904.jar");
......
把主程序相关所有 jar 都添加到 ClassPath 中
//获得要修改的全路径类名

CtClass clazz = pool.get("com.dbeaver.lm.embedded.LicenseServiceEmbedded");

CtMethod bMethod = clazz.getDeclaredMethod("invalidateActiveLicense");
// 重置方法体
bMethod.setBody("return true;");
bMethod = clazz.getDeclaredMethod("getActiveProductLicense");
// 重置方法体
bMethod.setBody("return new org.jkiss.lm.LMLicense(\"licenseId\",org.jkiss.lm.LMLicenseType.ULTIMATE,new java.text.SimpleDateFormat(\"yyyy-MM-dd\").parse(\"2029-01-01\"),new java.text.SimpleDateFormat(\"yyyy-MM-dd\").parse(\"2020-01-01\"),new java.text.SimpleDateFormat(\"yyyy-MM-dd\").parse(\"2029-01-01\"),1L,\"2\",\"3\",\"4\",\"52pojie.Vvvvvoid\",\"52pojie.Vvvvvoid\",\"marlkiller@voidm.com\");");
//保存到文件
save(clazz);

//public LMLicense(@NotNull String licenseId, @NotNull LMLicenseType licenseType, Date licenseIssueTime, Date licenseStartTime, Date licenseEndTime, long flags, String productId, String productVersion, String ownerId, String ownerCompany, String ownerName, String ownerEmail) {
clazz = pool.get("com.dbeaver.lm.ui.LicenseManagerUIUtils");
bMethod = clazz.getDeclaredMethod("checkLicense");
// 重置方法体
bMethod.setBody("return new org.jkiss.lm.LMLicense(\"licenseId\",org.jkiss.lm.LMLicenseType.ULTIMATE,new java.text.SimpleDateFormat(\"yyyy-MM-dd\").parse(\"2029-01-01\"),new java.text.SimpleDateFormat(\"yyyy-MM-dd\").parse(\"2020-01-01\"),new java.text.SimpleDateFormat(\"yyyy-MM-dd\").parse(\"2029-01-01\"),1L,\"2\",\"3\",\"4\",\"52pojie.Vvvvvoid\",\"52pojie.Vvvvvoid\",\"marlkiller@voidm.com\");");
//保存到文件
save(clazz);

后记

仅供研究学习使用,请勿用于非法用途
注:若转载请注明来源(本贴地址)与作者信息。


免费评分

参与人数 13吾爱币 +19 热心值 +13 收起 理由
time2s + 1 + 1 谢谢@Thanks!
qalong + 1 + 1 我很赞同!
JackFlyD + 1 + 1 谢谢@Thanks!
mouccc + 1 + 1 谢谢@Thanks!
zwdragon + 1 + 1 我很赞同!
redme + 1 + 1 谢谢@Thanks!
randomone + 1 + 1 谢谢@Thanks!
a282619133 + 1 + 1 谢谢@Thanks!
Hmily + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
chakid125 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
风驰夜掣 + 1 + 1 用心讨论,共获提升!
5omggx + 1 + 1 用心讨论,共获提升!
woyucheng + 1 + 1 热心回复!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

mouccc 发表于 2022-8-16 18:11
java :
//获得要修改的全路径类名
                ClassPool pool = ClassPool.getDefault();
                //设置目标类的路径
                pool.insertClassPath("I:\\dbeave\\com.dbeaver.app.advanced_22.1.0.202206121739.jar");
                pool.insertClassPath("I:\\dbeave\\com.dbeaver.app.ultimate_22.1.0.202206121739.jar");
                pool.insertClassPath("I:\\dbeave\\com.dbeaver.lm.core_2.0.112.202206121739.jar");
                pool.insertClassPath("I:\\dbeave\\com.dbeaver.lm.ui_2.0.112.202206121739.jar");
                pool.insertClassPath("I:\\dbeave\\org.jkiss.lm_1.0.136.202206121739.jar");
                pool.insertClassPath("I:\\dbeave\\org.eclipse.swt.win32.win32.x86_64_3.119.0.v20220223-1102.jar");
                //获得要修改的全路径类名

                //获得要修改的全路径类名

                CtClass clazz = pool.get("com.dbeaver.lm.embedded.LicenseServiceEmbedded");

                CtMethod bMethod = clazz.getDeclaredMethod("invalidateActiveLicense");
                // 重置方法体
                bMethod.setBody("return true;");
                bMethod = clazz.getDeclaredMethod("getActiveProductLicense");
                // 重置方法体
                bMethod.setBody("return new org.jkiss.lm.LMLicense(\"licenseId\",org.jkiss.lm.LMLicenseType.ULTIMATE,new java.text.SimpleDateFormat(\"yyyy-MM-dd\").parse(\"2029-01-01\"),new java.text.SimpleDateFormat(\"yyyy-MM-dd\").parse(\"2020-01-01\"),new java.text.SimpleDateFormat(\"yyyy-MM-dd\").parse(\"2029-01-01\"),1L,\"2\",\"3\",\"4\",\"52pojie.Vvvvvoid\",\"52pojie.Vvvvvoid\",\"marlkiller@voidm.com\");");
                //保存到文件
                save(clazz);

                //public LMLicense(@NotNull String licenseId, @NotNull LMLicenseType licenseType, Date licenseIssueTime, Date licenseStartTime, Date licenseEndTime, long flags, String productId, String productVersion, String ownerId, String ownerCompany, String ownerName, String ownerEmail) {
                clazz = pool.get("com.dbeaver.lm.ui.LicenseManagerUIUtils");
                bMethod = clazz.getDeclaredMethod("checkLicense");
                // 重置方法体
                bMethod.setBody("return new org.jkiss.lm.LMLicense(\"licenseId\",org.jkiss.lm.LMLicenseType.ULTIMATE,new java.text.SimpleDateFormat(\"yyyy-MM-dd\").parse(\"2029-01-01\"),new java.text.SimpleDateFormat(\"yyyy-MM-dd\").parse(\"2020-01-01\"),new java.text.SimpleDateFormat(\"yyyy-MM-dd\").parse(\"2029-01-01\"),1L,\"2\",\"3\",\"4\",\"52pojie.Vvvvvoid\",\"52pojie.Vvvvvoid\",\"marlkiller@voidm.com\");");
                save(clazz);
        }
       
        private static void save(CtClass sclazz) {
                // TODO Auto-generated method stub
                try {
                        sclazz.writeFile("I:/dbeave");
                        System.out.println("修改成功");
                } catch (IOException | CannotCompileException e) {
                        e.printStackTrace();
                }
        }

class替换:
jar uvf  com.dbeaver.lm.core_2.0.112.202206121739.jar com\dbeaver\lm\embedded\LicenseServiceEmbedded.class
jar uvf  com.dbeaver.lm.ui_2.0.112.202206121739.jar com\dbeaver\lm\ui\LicenseManagerUIUtils.class

最后把修改后的com.dbeaver.lm.core_2.0.112.202206121739.jar、 com.dbeaver.lm.ui_2.0.112.202206121739.jar换绿色版dbeaver plugins ,启动dbeaver报错
!ENTRY org.eclipse.e4.ui.swt.win32.nls 2 0 2022-08-16 17:57:52.541
!MESSAGE Could not resolve module: org.eclipse.e4.ui.swt.win32.nls [573]
  Unresolved requirement: Fragment-Host: org.eclipse.e4.ui.swt.win32
  Unresolved requirement: Fragment-Host: org.eclipse.e4.ui.swt.win32


!ENTRY org.eclipse.ui.win32.nls 2 0 2022-08-16 17:57:52.543
!MESSAGE Could not resolve module: org.eclipse.ui.win32.nls [465]
  Unresolved requirement: Fragment-Host: org.eclipse.ui.win32
  Unresolved requirement: Fragment-Host: org.eclipse.ui.win32


!ENTRY org.eclipse.equinox.security.win32.x86_64.nls 2 0 2022-08-16 17:57:52.544
!MESSAGE Could not resolve module: org.eclipse.equinox.security.win32.x86_64.nls [587]
  Unresolved requirement: Fragment-Host: org.eclipse.equinox.security.win32.x86_64
  Unresolved requirement: Fragment-Host: org.eclipse.equinox.security.win32.x86_64


!ENTRY org.eclipse.core.filesystem.win32.x86_64.nls 2 0 2022-08-16 17:57:52.546
!MESSAGE Could not resolve module: org.eclipse.core.filesystem.win32.x86_64.nls [520]
  Unresolved requirement: Fragment-Host: org.eclipse.core.filesystem.win32.x86_64
  Unresolved requirement: Fragment-Host: org.eclipse.core.filesystem.win32.x86_64


!ENTRY org.eclipse.osgi.compatibility.state.nls 2 0 2022-08-16 17:57:52.548
!MESSAGE Could not resolve module: org.eclipse.osgi.compatibility.state.nls [575]
  Unresolved requirement: Fragment-Host: org.eclipse.osgi.compatibility.state
  Unresolved requirement: Fragment-Host: org.eclipse.osgi.compatibility.state


!ENTRY org.eclipse.core.resources.win32.x86_64.nls 2 0 2022-08-16 17:57:52.550
!MESSAGE Could not resolve module: org.eclipse.core.resources.win32.x86_64.nls [529]
  Unresolved requirement: Fragment-Host: org.eclipse.core.resources.win32.x86_64
  Unresolved requirement: Fragment-Host: org.eclipse.core.resources.win32.x86_64


!ENTRY org.eclipse.osgi 4 0 2022-08-16 17:57:52.552
!MESSAGE 应用程序错误
!STACK 1
org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.NullPointerException)
        at org.eclipse.swt.SWT.error(SWT.java:4918)
        at org.eclipse.swt.SWT.error(SWT.java:4833)
        at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:188)
        at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4035)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3635)
        at org.eclipse.swt.widgets.Display.release(Display.java:3710)
        at org.eclipse.swt.graphics.Device.dispose(Device.java:324)
        at org.jkiss.dbeaver.ui.app.standalone.DBeaverApplication.start(DBeaverApplication.java:307)
        at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:659)
        at org.eclipse.equinox.launcher.Main.basicRun(Main.java:596)
        at org.eclipse.equinox.launcher.Main.run(Main.java:1467)
        Suppressed: org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.IllegalStateException: Need an underlying widget to be able to set the input.(Has the widget been disposed?))
                ... 20 more
        Caused by: java.lang.IllegalStateException: Need an underlying widget to be able to set the input.(Has the widget been disposed?)
                at org.eclipse.jface.viewers.StructuredViewer.setInput(StructuredViewer.java:1627)
                at org.jkiss.dbeaver.ui.navigator.database.DatabaseNavigatorTree.setInput(DatabaseNavigatorTree.java:284)
                at org.jkiss.dbeaver.ui.navigator.database.NavigatorViewBase.lambda$0(NavigatorViewBase.java:110)
                at org.jkiss.dbeaver.ui.UIExecutionQueue.executeInUI(UIExecutionQueue.java:52)
                at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40)
                at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:185)
                ... 17 more
        Suppressed: org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.IllegalStateException: Need an underlying widget to be able to set the input.(Has the widget been disposed?))
                ... 20 more
        Caused by: java.lang.IllegalStateException: Need an underlying widget to be able to set the input.(Has the widget been disposed?)
                at org.eclipse.jface.viewers.StructuredViewer.setInput(StructuredViewer.java:1627)
                at org.jkiss.dbeaver.ui.navigator.database.DatabaseNavigatorTree.setInput(DatabaseNavigatorTree.java:284)
                at org.jkiss.dbeaver.ui.navigator.database.NavigatorViewBase.lambda$0(NavigatorViewBase.java:110)
                at org.jkiss.dbeaver.ui.UIExecutionQueue.executeInUI(UIExecutionQueue.java:52)
                at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40)
                at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:185)
                ... 17 more
        Suppressed: org.eclipse.swt.SWTException: Failed to execute runnable (org.eclipse.swt.SWTException: Widget is disposed)
                ... 20 more
        Caused by: org.eclipse.swt.SWTException: Widget is disposed
                at org.eclipse.swt.SWT.error(SWT.java:4918)
                at org.eclipse.swt.SWT.error(SWT.java:4833)
                at org.eclipse.swt.SWT.error(SWT.java:4804)
                at org.eclipse.swt.widgets.Widget.error(Widget.java:447)
                at org.eclipse.swt.widgets.Widget.getDisplay(Widget.java:569)
                at org.jkiss.dbeaver.ui.navigator.project.ProjectExplorerView.createColumns(ProjectExplorerView.java:100)
                at org.jkiss.dbeaver.ui.navigator.project.ProjectExplorerView.lambda$0(ProjectExplorerView.java:84)
                at org.jkiss.dbeaver.ui.UIExecutionQueue.executeInUI(UIExecutionQueue.java:52)
                at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40)
                at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:185)
                ... 17 more
Caused by: java.lang.NullPointerException
        at org.jkiss.dbeaver.core.WorkbenchContextListener.listenWindowEvents(WorkbenchContextListener.java:96)
        at org.jkiss.dbeaver.core.WorkbenchContextListener.<init>(WorkbenchContextListener.java:54)
        at org.jkiss.dbeaver.core.WorkbenchContextListener.registerInWorkbench(WorkbenchContextListener.java:241)
        at org.jkiss.dbeaver.core.DesktopUI.lambda$0(DesktopUI.java:137)
        at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40)
        at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:185)
        ... 17 more

!ENTRY org.eclipse.e4.ui.workbench 4 0 2022-08-16 17:57:52.567
!MESSAGE NullPointerException
!STACK 0
java.lang.NullPointerException
        at org.eclipse.jface.resource.JFaceResources.getResources(JFaceResources.java:224)
        at org.eclipse.jface.resource.JFaceResources.getResources(JFaceResources.java:242)
        at org.eclipse.ui.part.WorkbenchPart.dispose(WorkbenchPart.java:105)
        at org.jkiss.dbeaver.ui.navigator.database.NavigatorViewBase.dispose(NavigatorViewBase.java:273)
        at org.jkiss.dbeaver.ui.navigator.database.DatabaseNavigatorView.dispose(DatabaseNavigatorView.java:94)
        at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.invalidate(CompatibilityPart.java:264)
        at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.destroy(CompatibilityPart.java:421)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58)
        at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:995)
        at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:960)
        at org.eclipse.e4.core.internal.di.InjectorImpl.disposed(InjectorImpl.java:452)
        at org.eclipse.e4.core.internal.di.Requestor.disposed(Requestor.java:161)
        at org.eclipse.e4.core.internal.contexts.ContextObjectSupplier$ContextInjectionListener.update(ContextObjectSupplier.java:83)
        at org.eclipse.e4.core.internal.contexts.TrackableComputationExt.update(TrackableComputationExt.java:103)
        at org.eclipse.e4.core.internal.contexts.TrackableComputationExt.handleInvalid(TrackableComputationExt.java:68)
        at org.eclipse.e4.core.internal.contexts.EclipseContext.dispose(EclipseContext.java:178)
        at org.eclipse.e4.core.internal.contexts.EclipseContext.dispose(EclipseContext.java:163)
        at org.eclipse.e4.core.internal.contexts.EclipseContext.dispose(EclipseContext.java:163)
        at org.eclipse.e4.core.internal.contexts.EclipseContext.dispose(EclipseContext.java:163)
        at org.eclipse.e4.core.internal.contexts.EclipseContext.dispose(EclipseContext.java:163)
        at org.eclipse.e4.core.internal.contexts.osgi.EclipseContextOSGi.dispose(EclipseContextOSGi.java:102)
        at org.eclipse.e4.core.internal.contexts.osgi.EclipseContextOSGi.bundleChanged(EclipseContextOSGi.java:144)
        at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:944)
        at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234)
        at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151)
        at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:229)
        at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:138)
        at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:130)
        at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:217)
        at org.eclipse.osgi.container.Module.publishEvent(Module.java:499)
        at org.eclipse.osgi.container.Module.doStop(Module.java:658)
        at org.eclipse.osgi.container.Module.stop(Module.java:521)
        at org.eclipse.osgi.container.SystemModule.stop(SystemModule.java:207)
        at org.eclipse.osgi.internal.framework.EquinoxBundle$SystemBundle$EquinoxSystemModule$1.run(EquinoxBundle.java:226)
        at java.base/java.lang.Thread.run(Unknown Source)

!ENTRY org.eclipse.e4.ui.workbench 4 0 2022-08-16 17:57:52.576
!MESSAGE FrameworkEvent ERROR
!STACK 0
org.eclipse.e4.core.di.InjectionException: org.eclipse.swt.SWTException: Device is disposed
        at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:68)
        at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:995)
        at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:960)
        at org.eclipse.e4.core.internal.di.InjectorImpl.disposed(InjectorImpl.java:452)
        at org.eclipse.e4.core.internal.di.Requestor.disposed(Requestor.java:161)
        at org.eclipse.e4.core.internal.contexts.ContextObjectSupplier$ContextInjectionListener.update(ContextObjectSupplier.java:83)
        at org.eclipse.e4.core.internal.contexts.TrackableComputationExt.update(TrackableComputationExt.java:103)
        at org.eclipse.e4.core.internal.contexts.TrackableComputationExt.handleInvalid(TrackableComputationExt.java:68)
        at org.eclipse.e4.core.internal.contexts.EclipseContext.dispose(EclipseContext.java:178)
        at org.eclipse.e4.core.internal.contexts.EclipseContext.dispose(EclipseContext.java:163)
        at org.eclipse.e4.core.internal.contexts.EclipseContext.dispose(EclipseContext.java:163)
        at org.eclipse.e4.core.internal.contexts.EclipseContext.dispose(EclipseContext.java:163)
        at org.eclipse.e4.core.internal.contexts.EclipseContext.dispose(EclipseContext.java:163)
        at org.eclipse.e4.core.internal.contexts.osgi.EclipseContextOSGi.dispose(EclipseContextOSGi.java:102)
        at org.eclipse.e4.core.internal.contexts.osgi.EclipseContextOSGi.bundleChanged(EclipseContextOSGi.java:144)
        at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:944)
        at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234)
        at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151)
        at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:229)
        at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:138)
        at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:130)
        at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:217)
        at org.eclipse.osgi.container.Module.publishEvent(Module.java:499)
        at org.eclipse.osgi.container.Module.doStop(Module.java:658)
        at org.eclipse.osgi.container.Module.stop(Module.java:521)
        at org.eclipse.osgi.container.SystemModule.stop(SystemModule.java:207)
        at org.eclipse.osgi.internal.framework.EquinoxBundle$SystemBundle$EquinoxSystemModule$1.run(EquinoxBundle.java:226)
        at java.base/java.lang.Thread.run(Unknown Source)
Caused by: org.eclipse.swt.SWTException: Device is disposed
        at org.eclipse.swt.SWT.error(SWT.java:4918)
        at org.eclipse.swt.SWT.error(SWT.java:4833)
        at org.eclipse.swt.SWT.error(SWT.java:4804)
        at org.eclipse.swt.widgets.Display.error(Display.java:1272)
        at org.eclipse.swt.widgets.Display.asyncExec(Display.java:789)
        at org.eclipse.ui.internal.WorkbenchWindow$3.changed(WorkbenchWindow.java:886)
        at org.eclipse.e4.core.internal.contexts.TrackableComputationExt.update(TrackableComputationExt.java:105)
        at org.eclipse.e4.core.internal.contexts.EclipseContext.processScheduled(EclipseContext.java:356)
        at org.eclipse.e4.core.internal.contexts.EclipseContext.set(EclipseContext.java:372)
        at org.eclipse.e4.ui.internal.services.ContextContextService.setEventCaching(ContextContextService.java:126)
        at org.eclipse.e4.ui.internal.services.ContextContextService.deferUpdates(ContextContextService.java:87)
        at org.eclipse.ui.internal.contexts.ContextService.deferUpdates(ContextService.java:92)
        at org.eclipse.ui.internal.contexts.ContextService.deactivateContexts(ContextService.java:203)
        at org.eclipse.ui.internal.contexts.SlaveContextService.dispose(SlaveContextService.java:197)
        at org.eclipse.ui.internal.PartSite.dispose(PartSite.java:344)
        at org.eclipse.ui.internal.ViewSite.dispose(ViewSite.java:58)
        at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.disposeSite(CompatibilityPart.java:443)
        at org.eclipse.ui.internal.e4.compatibility.CompatibilityView.disposeSite(CompatibilityView.java:291)
        at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.internalDisposeSite(CompatibilityPart.java:434)
        at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.invalidate(CompatibilityPart.java:272)
        at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.destroy(CompatibilityPart.java:421)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58)
        ... 27 more

!ENTRY org.jkiss.dbeaver.model 2 0 2022-08-16 17:57:52.834
!MESSAGE Listener 'org.jkiss.dbeaver.ui.actions.datasource.DataSourceToolbarHandler@406c2554' is not unregistered from DBM model

!ENTRY org.jkiss.dbeaver.model 2 0 2022-08-16 17:57:52.838
!MESSAGE Some project listeners are still register: [com.dbeaver.ee.application.EnterpriseWorkbenchWindowAdvisor@182208ed, org.jkiss.dbeaver.ui.navigator.project.ProjectExplorerView@23f9d0ce]

!ENTRY org.jkiss.dbeaver.model 2 0 2022-08-16 17:57:52.841
!MESSAGE Some datasource registry listeners are still registered: [org.jkiss.dbeaver.ui.actions.datasource.DataSourceToolbarHandler@406c2554]
goastship 发表于 2022-7-26 18:06
本帖最后由 goastship 于 2022-7-27 11:04 编辑
Vvvvvoid 发表于 2022-7-26 18:02
不需要, 用了几天没有遇到过这个窗口
可能被不小心爆破没了...

谢谢解惑,找到原因了,dbeaver.ini 文件配置问题。
-startup
plugins/org.eclipse.equinox.launcher_1.6.400.v20210924-0641.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.2.400.v20211117-0650

-vm:C:\Program Files (x86)\Java\jre1.8.0_333\bin\java  //此处使用系统安装的 JAVA

-vmargs
-XX:+IgnoreUnrecognizedVMOptions
--add-modules=ALL-SYSTEM
-Dosgi.requiredJavaVersion=11
-Xms128m
-Xmx2048m
-Djavax.net.ssl.trustStoreType=WINDOWS-ROOT
-Ddbeaver.distribution.type=exe

-Dlm.debug.mode=true  //添加此语句后,错误不再出现
guijun 发表于 2022-7-25 16:56
cai2532 发表于 2022-7-25 16:58
学习并 拜读了。
 楼主| Vvvvvoid 发表于 2022-7-25 17:55
本帖最后由 Vvvvvoid 于 2022-7-25 20:46 编辑

WIN10/Mac m1 测试通过
kds0221 发表于 2022-7-25 18:35
感谢分享,学习学习。有时间试一下
irrtatingbear21 发表于 2022-7-26 00:08
拜读大作!
cxq297532493 发表于 2022-7-26 00:37
感谢大佬技术分享
linxun 发表于 2022-7-26 07:02
写得很好!
lxfw2000 发表于 2022-7-26 08:43
太好了!来学习JAVA程序逆向分析!
MI20220721 发表于 2022-7-26 08:44
学习学习,很多自己都看不懂!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-9 18:37

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表