Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GWT enum not working in GWT v7 #3

Open
etdsoft opened this issue Aug 31, 2012 · 4 comments
Open

GWT enum not working in GWT v7 #3

etdsoft opened this issue Aug 31, 2012 · 4 comments

Comments

@etdsoft
Copy link

etdsoft commented Aug 31, 2012

Hi,

Although it seems that the {HEX} file is downloaded and analysed correctly, gwtenum.py fails to enumerate any endpoints. Are you aware of any changes introduced in v7 that may be causing this? Do you think it would be easy to address? Thanks!

/cc @mwielgoszewski

@twistedpair
Copy link

There are many reasons why the script is failing

  • many sites keep the static files in a subdirectory, in which case this does not trace the url
  • many apps use *.cache.js, not *.cache.html files
  • most code split apps place fragments in "deferredjs/{int}.cache.js" locations
  • searching the for the word "method" is no longer very effective in the compiled files

The only suggestion I'd have is something like egrep "'(is|can|has|get|set)[a-zA-Z0-9]+'\)" -R -oh . which gets some possible methods, but only assuming they use typical accessor names, which is not very robust.

@ghost ghost mentioned this issue Apr 23, 2014
@blackbern
Copy link

It seems that version 7 changed the way methods are obfuscated. In my case methods were correctly enumerated but parameters types could not be found.
It seems that type obfuscation is displayed at some point. In fact, if you look for common types like "java.lang,Integer" you'll find the line which contains all types.

From there, you can find obfuscated parameters types in the function declaration.
For each method identified by the script, from line 9 to the first line which starts by ^[a-z]=.* there is another parameter. The type of it is specified by the three last letters of the line.

For example:
9. ..., bUd)));
10. ..., yZk)));
11. k=...
This method has 2 parameters of type bUd and yZk. As explained, these types can be found somewhere (usually at the end). It is in a single line.
... bUd='java.lang.String/1010101'; yZk='java.lang.Integer/123456789'; ...

Finally the method has a pattern like method(String,Integer).

@quentinhardy
Copy link

The tool (e.g. enum module) does not work on 2.5.0rc1 -:( Tested on this version.

I think the problem will appear on all greater than versions (e.g. 2.7.1, 2.8.1) -:(

@darkpills
Copy link

Hello,
I'm currently working on a 2.7.0 version and would like to test if my changes in the script also apply to other versions. Does anyone has a recent version endpoint to test against?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants