页首Html代码

返回顶部

java反编译,eclipse支持插件

http://java.decompiler.free.fr/?q=jdeclipse

按照说明 在eclipse更新插件就可以。

这样 在一些 闭源的jar文件,你也可以看到 大致的源码。(公司 知道如何 加密混淆 java代码或class文件,居然无法使用jd-gui浏览源码)

 

而:http://java.decompiler.free.fr/?q=preview 这个页面居然支持 在chrome下 拖拽class到浏览器,然后再反编译 太神奇了(至少不支持IE8)

记录下那个页面的源码

View Code
<html class="js"><script src="chrome-extension://dooekkcihpllpcfoioflgemikhfejpec/injected.js?sk1=false"></script><head>
 <title>Preview | Java Decompiler</title>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="shortcut icon" href="/sites/default/themes/jd/favicon.ico" type="image/x-icon">
 <link type="text/css" rel="stylesheet" media="all" href="/css/ad2803645f1f510d8998d3fb4ab2026d.css">
 <script type="text/javascript" src="/js/10580b65ebdc00fda171cf6ef3b996ec.js"></script>
<script type="text/javascript">
<!--//--><![CDATA[//><!--
jQuery.extend(Drupal.settings, { "basePath": "/" });
//--><!]]>
</script>
 <meta name="keywords" content="decompiler,java,java 1.5,java 5,annotation,generic,enum,jar,free,freeware,decompilation,d�compilateur">
 <meta name="description" content="Yet another fast Java decompiler">
 <link rel="alternate" type="application/rss+xml" title="Java Decompiler - News" href="/?q=news/all/rss">
 <link rel="alternate" type="application/rss+xml" title="Java Decompiler - Last posts" href="/?q=post/all/rss">
 <link rel="alternate" type="application/rss+xml" title="Java Decompiler - Last comments" href="/?q=comment/all/rss">
</head>
<body class="layout-page">
 <div id="container">

   
  <div id="page">
   <div id="title">
    <h1><a href="/">Java Decompiler</a></h1>
    <div class="description">Yet another fast Java decompiler</div>
   </div>
   <div id="title-image"></div>
   <div class="header"><div id="block-block-6" class="block block-block">

  <div class="content">
    <div id="projects-menu"> <span><a href="/">Home</a></span>
 <span><a href="/?q=jdgui">JD-GUI</a></span>
 <span><a href="/?q=jdeclipse">JD-Eclipse</a></span>
 <span><a href="/?q=jdintellij">JD-IntelliJ</a></span>
 <span class="active"><a href="/?q=preview">Preview</a></span>
</div>  </div>
</div>
</div>
   <div id="frame">
            <div class="node">
 <h2>Preview</h2>
 <div id="demo" class="content">


<script type="text/javascript">
  var actions= {
    'hln': function(checked ) { $('#linenumber').css({'display' : checked ? 'none' : 'inline'}); },
    'ho': function(checked ) { $('kbd', $('#javacode')).css({'display' : checked ? 'none' : 'inline'}); },
    'mel': function(checked ) { 
        $('s', $('#linenumber')).css({'display' : checked ? 'none' : 'inline'}); 
        $('s', $('#javacode')).css({'display' : checked ? 'none' : 'inline'}); 
    }
  };
  function checkboxClicked(checkbox) {
    $.cookie('demo.config.' + checkbox.id, checkbox.checked ? true : null);
    actions[checkbox.id](checkbox.checked);
  }
  $(document).ready(function(){
    $('#demo').dndnu({
        decompilerVersion: '0.7.0-SNAPSHOT-20120129',
        onEnter: function(e) { 
            $('#demo .in .title').css("background-color","#ff5500");
        },
        onLeave: function(e) { 
            $('#demo .in .title').css("background-color","#555555");
        },
        onCheckFile: function(file) { 
            return file.size>6 && !!file.name.match('\\.class$')
        },
        onCheckAllFiles: function (filtredFiles) {
            if (filtredFiles.length > 1) {
                var first = filtredFiles[0].name,
                    pattern='^' + first.substr(0, first.length-6).replace('$','\\$') + '\\$',
                    length=filtredFiles.length,
                    result=new Array();
                
                result.push(filtredFiles[0]);
            
                for (var i=1; i<length; i++) {
                    if (filtredFiles[i].name.match(pattern)) {
                        result.push(filtredFiles[i]);
                    }
                }
                
                return result
            } 
            return filtredFiles
        },
        onStart: function(files) {
            var demo=$('#demo'), list=$('.in .list', demo), content='<ul>', first=files[0].name;

            demo.css("cursor","wait");
            list.empty();
            
            $.each(files, function (k) {
                content += '<li>' + this.name + '<\/li>';
            });
            content += '<\/ul>';
            $(content).appendTo(list);

            document.title = first.substr(0, first.length-6) + demo.data('title');
        },
        /* onProgress: function(percent) {
            //$('#demo .in pre').empty();
            $('#demo .in pre').text(percent+'%');
        }, */
        onComplete: function(text) {
            $('#demo .out .content').replaceWith('<div class="content">' + text + '</div>');
            $.each($('#demo .config input'), function (k) {
                if ((this.type == 'checkbox') && !!actions[this.id]) {
                    actions[this.id](this.checked);
                }
            });
            $('#demo').css("cursor","default");
        }
    });
    $.each($('#demo .config input'), function (k) {
        if (this.type == 'checkbox') {
            this.checked = ($.cookie('demo.config.' + this.id) == 'true') ? 'true' : '';
        }
    });
    $('#demo').data('title', ' | ' + document.title);
  });
  </script>

 <div class="block in">
  <div class="title">Input Class Files</div>
  <div class="content list">Drop class and inner class files here</div>
 </div>

 <div class="separator"><img src="/sites/default/images/down.gif"></div>
   
 <div class="block config">
  <div class="title">Decompiler</div>
  <div class="content">
    <form action="#">
      <label for="hln"><input type="checkbox" id="hln" onclick="checkboxClicked(this)">Hide line number</label><br>
      <label for="ho"><input type="checkbox" id="ho" onclick="checkboxClicked(this)">Omit <span class="javacode"><b>this</b></span> if possible</label><br>
      <label for="mel"><input type="checkbox" id="mel" onclick="checkboxClicked(this)">Merge empty lines</label>
    </form>
    </div>
 </div>

 <div class="separator"><img src="/sites/default/images/down.gif"></div>
  
 <div class="block out">
  <div class="title">Output Java Code</div>
  <div class="content">
  </div>
 </div>


 </div>
</div>   </div>

   <div id="footer">
       </div>
  </div>
  
  
 </div>
 <script src="http://www.google-analytics.com/urchin.js" type="text/javascript"><script type="text/javascript">_uacct="UA-4144628-1";urchinTracker();</script>
 

<script src="http://s.skimresources.com/js/28468X864468.skimlinks.js"></script></body><script>(function () {
        var affect = function() { return {}; }
        var abjure = function() { }
        document.getSelection = affect;
        window.getSelection = affect;
        window.print = abjure;
        window.moveTo = abjure;
        window.moveBy = abjure;
        window.resizeTo = abjure;
        window.resizeBy = abjure;
    })();</script></html>
posted @ 2012-06-04 10:19  ayanmw  阅读(1053)  评论(0编辑  收藏  举报

页脚Html代码