我对分析java堆栈跟踪有一些疑问。我正在分析一个java应用程序,在日志中我看到了一个堆栈跟踪。如下所示 -
com.naseve.vdi.common.winauth.WinAuthException: Unable to set password expiry: Failed to retrieve account days to expiry: IADsUser::get_PasswordExpirationDate FAILED - ErrorCode = -2147463156
at com.naseve.vdi.broker.filters.GssapiAuthFilter.a(SourceFile:295)
at com.naseve.vdi.broker.filters.GssapiAuthFilter.a(SourceFile:241)
at net.propero.portal.filters.ProperoAuthFilter.doFilter(SourceFile:343)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
我关注的是顶部的部分。我完全可以访问源代码,我100%确定GssapiAuthFilter没有任何名为a()的方法。那么为什么堆栈跟踪会像那样打印出来。此外,当我使用Eclipse进行远程调试时,我在eclipse调试视图中看到类似的堆栈跟踪。任何人都可以对神秘的.a(那些看似无处可逃的方法)有所了解。
答案 0 :(得分:4)
a()
是混淆代码的常用方法。如果你已经获得了源代码,那么它可能不会被混淆,但你正在运行的代码是。
最好问一下支持图书馆的人
答案 1 :(得分:2)
被混淆的类通常具有以这种方式命名的方法。
答案 2 :(得分:1)
您无权访问相关的源代码。模糊部分来自GSS-API实现,我见过的所有实现都被混淆了。您的代码通过您在Java安全配置中声明的类间接地进入实现(我认为它都是从LoginModule配置中分支出来的。)