亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

java class文件準(zhǔn)確的反編譯思路

2019-11-11 06:56:32
字體:
供稿:網(wǎng)友

推薦兩款工具 結(jié)合使用

1、java Decompiler

這款反編譯器叫 “Java Decompiler”, 由 Pavel Kouznetsov開發(fā),目前最新版本為0.2.5. 它由 C++開發(fā),并且官方可以下載 windows、linux和蘋果Mac Os三個(gè)平臺的可執(zhí)行程序。

官方網(wǎng)站:http://jd.benow.ca/

2、Java 反編譯器 JD-GUI

JD-GUI 是一個(gè)用 C++ 開發(fā)的 Java 反編譯工具,由 Pavel Kouznetsov開發(fā),支持Windows、Linux和蘋果Mac Os三個(gè)平臺。而且提供了Eclipse平臺下的插件JD-Eclipse。JD-GUI不需要安裝,直接點(diǎn)擊運(yùn)行,可以反編譯jar,class文件。

官方網(wǎng)站:http://jd.benow.ca/

JD-GUI

主要使用 JD-gui, 因?yàn)樗梢跃幾g整個(gè)文件夾class文件非常方便但是會偶爾地方報(bào)錯(cuò),需要自己分析代碼,比如創(chuàng)建一些 沒有必要的局部變量出錯(cuò)實(shí)例如下
  public boolean PReHandle(HttpServletRequest req, HttpServletResponse res, Object h)    throws Exception  {    String servletPath = req.getServletPath().toLowerCase();    boolean isContains = (servletPath.contains("add")) || (servletPath.contains("create"));    boolean pass;    if (isContains) {      String name = this.userService.getStaffNameByStaffId((Long)req.getAttribute("sid"));      boolean pass;      if (StringUtils.isNotBlank(name)) {        pass = true;      } else {        boolean pass = false;        JSON.writeDataToStream(res.getOutputStream(), I18NResult.failure(ErrorType.USERNAM_NONE));      }    } else {      pass = true;    }    return pass;  }}pass 多處創(chuàng)建 調(diào)整后如下
  public boolean preHandle(HttpServletRequest req, HttpServletResponse res, Object h)/*    */     throws Exception/*    */   {/* 24 */     String servletPath = req.getServletPath().toLowerCase();/* 25 */     boolean isContains = (servletPath.contains("add")) || (servletPath.contains("create"));/*    */     boolean pass;/* 26 */     if (isContains) {/* 27 */       String name = this.userService.getStaffNameByStaffId((Long)req.getAttribute("sid"));/* 28 */       if (StringUtils.isNotBlank(name)) {/* 29 */         pass = true;/*    */       } else {/* 31 */         pass = false;/* 32 */         JSON.writeDataToStream(res.getOutputStream(), I18NResult.failure(ErrorType.USERNAM_NONE));/*    */       }/*    */     } else {/* 35 */       pass = true;/*    */     }/*    */ /* 38 */     return pass;/*    */   }/*    */ }

有時(shí)候JD-GUI編譯出來的代碼莫名其妙,這個(gè)時(shí)候可以結(jié)合

Java Decompiler 編譯后的代碼綜合分析

下面給出一個(gè)class 文件的一個(gè)函數(shù)由 jd-gui編譯的函數(shù) (有問題)
@RequestMapping({"/getMyProjectTaskList", "/getMeProjectTasks"})/*     */   @ResponseBody/*     */   public Output getMetasks(@RequestParam("projectId") Long projectId, @Sid Long sid) {/*     */     try {/* 141 */       metasks = this.taskService.getMetasks(projectId, sid);/*     */     }/*     */     catch (Exception e)/*     */     {/*     */       List metasks;/* 143 */       throw new RuntimeException(e);/*     */     }/* 147 */     List metasks;/* 146 */     List metaskRess = new ArrayList(metasks.size());/* 147 */     for (Iterator localIterator = metasks.iterator(); localIterator.hasNext(); ) { metask = (MetaskBo)localIterator.next();/* 148 */       MetaskRes metaskVo = new MetaskRes();/*     */ /* 150 */       metaskVo.setTaskId(ObjectUtils.toString(metask.getTaskId()));/* 151 */       metaskVo.setIsLeafTask(ObjectUtils.toString(metask.getIsLeafTask()));/* 152 */       metaskVo.setTaskName(ObjectUtils.toString(metask.getTaskName()));/* 153 */       srt = metask.getStartDateTime();/* 154 */       Date end = metask.getEndDateTime();/* 155 */       metaskVo.setSrtDate(DateUtil.defaultDateToString(srt));/* 156 */       metaskVo.setEndDate(DateUtil.defaultDateToString(end));/* 157 */       metaskVo.setIsFinished(ObjectUtils.toString(metask.getIsFinished()));/* 158 */       metaskVo.setBetween((srt.getTime() <= metask.getCurrentDateTime().longValue()) && (metask.getCurrentDateTime().longValue() <= end.getTime()) ? "1" : "0");/* 159 */       metaskVo.setTaskDesStatus(ObjectUtils.toString(metask.getTaskDesStatus()));/* 160 */       metaskVo.setTaskStatus(ObjectUtils.toString(metask.getTaskStatus()));/* 161 */       metaskVo.setRemindTime(ObjectUtils.toString(metask.getRemindTime()));/* 162 */       metaskVo.setWatcherSid(ObjectUtils.toString(metask.getWatcherSid()));/* 163 */       metaskVo.setAuditorSid(ObjectUtils.toString(metask.getAuditorSid()));/*     */ /* 165 */       metaskRess.add(metaskVo);/*     */     }/* 169 */     Date srt;/* 168 */     List taskInfos = this.taskProgressService.calcTaskProgress(projectId);/* 169 */     for (MetaskBo metask = taskInfos.iterator(); metask.hasNext(); ) { taskInfo = (TaskInfo)metask.next();/* 170 */       for (MetaskRes metaskRes : metaskRess)/* 171 */         if (taskInfo.getTaskId().toString().equals(metaskRes.getTaskId())) {/* 172 */           metaskRes.setPlanProgress(ObjectUtils.toString(Float.valueOf(taskInfo.getPlanProgress())));/* 173 */           float undoneProgress = taskInfo.getPlanProgress() - taskInfo.getProgress();/* 174 */           metaskRes.setUndoneProgress(ObjectUtils.toString(Float.valueOf(undoneProgress < 0.0F ? 0.0F : undoneProgress)));/* 175 */           metaskRes.setActualProgress(ObjectUtils.toString(Float.valueOf(taskInfo.getProgress())));/* 176 */           break;/*     */         }/*     */     }/*     */     TaskInfo taskInfo;/* 181 */     return Result.success(metaskRess);/*     */   }由dj java Decompiler工具分析出來的結(jié)果(也有問題) 
 @RequestMapping(value={"/getMyProjectTaskList", "/getMeProjectTasks"})    @ResponseBody    public Output getMetasks(@RequestParam(value="projectId") Long projectId, @Sid Long sid)    {        List metasks;        try        {            metasks = taskService.getMetasks(projectId, sid);        }        catch(Exception e)        {            throw new RuntimeException(e);        }        List metaskRess = new ArrayList(metasks.size());        MetaskRes metaskVo;        for(Iterator iterator = metasks.iterator(); iterator.hasNext(); metaskRess.add(metaskVo))        {            MetaskBo metask = (MetaskBo)iterator.next();            metaskVo = new MetaskRes();            metaskVo.setTaskId(ObjectUtils.toString(metask.getTaskId()));            metaskVo.setIsLeafTask(ObjectUtils.toString(metask.getIsLeafTask()));            metaskVo.setTaskName(ObjectUtils.toString(metask.getTaskName()));            Date srt = metask.getStartDateTime();            Date end = metask.getEndDateTime();            metaskVo.setSrtDate(DateUtil.defaultDateToString(srt));            metaskVo.setEndDate(DateUtil.defaultDateToString(end));            metaskVo.setIsFinished(ObjectUtils.toString(metask.getIsFinished()));            metaskVo.setBetween(srt.getTime() > metask.getCurrentDateTime().longValue() || metask.getCurrentDateTime().longValue() > end.getTime() ? "0" : "1");            metaskVo.setTaskDesStatus(ObjectUtils.toString(metask.getTaskDesStatus()));            metaskVo.setTaskStatus(ObjectUtils.toString(metask.getTaskStatus()));            metaskVo.setRemindTime(ObjectUtils.toString(metask.getRemindTime()));            metaskVo.setWatcherSid(ObjectUtils.toString(metask.getWatcherSid()));            metaskVo.setAuditorSid(ObjectUtils.toString(metask.getAuditorSid()));        }        List taskInfos = taskProgressService.calcTaskProgress(projectId);        Iterator iterator1 = taskInfos.iterator();label0:        do        {            if(!iterator1.hasNext())                break;            TaskInfo taskInfo = (TaskInfo)iterator1.next();            Iterator iterator2 = metaskRess.iterator();            MetaskRes metaskRes;            do            {                if(!iterator2.hasNext())                    continue label0;                metaskRes = (MetaskRes)iterator2.next();            } while(!taskInfo.getTaskId().toString().equals(metaskRes.getTaskId()));            metaskRes.setPlanProgress(ObjectUtils.toString(Float.valueOf(taskInfo.getPlanProgress())));            float undoneProgress = taskInfo.getPlanProgress() - taskInfo.getProgress();            metaskRes.setUndoneProgress(ObjectUtils.toString(Float.valueOf(undoneProgress >= 0.0F ? undoneProgress : 0.0F)));            metaskRes.setActualProgress(ObjectUtils.toString(Float.valueOf(taskInfo.getProgress())));        } while(true);        return Result.success(metaskRess);    }結(jié)合二者的優(yōu)點(diǎn) 回避各自缺點(diǎn)最終分析出來的結(jié)果
/*     */   @RequestMapping({"/getMyProjectTaskList", "/getMeProjectTasks"})/*     */   @ResponseBody/*     */   public Output getMetasks(@RequestParam("projectId") Long projectId, @Sid Long sid) {		      List<MetaskBo> metasks;/*     */     try {/* 141 */       metasks = this.taskService.getMetasks(projectId, sid);/*     */     }/*     */     catch (Exception e)/*     */     {/* 143 */       throw new RuntimeException(e);/*     */     }/* 147 */     /* 146 */     List<MetaskRes> metaskRess = new ArrayList<MetaskRes>(metasks.size());/* 147 */     for (Iterator localIterator = metasks.iterator(); localIterator.hasNext(); ) 			  { 				MetaskBo metask = (MetaskBo)localIterator.next();/* 148 */       MetaskRes metaskVo = new MetaskRes();/*     */ /* 150 */       metaskVo.setTaskId(ObjectUtils.toString(metask.getTaskId()));/* 151 */       metaskVo.setIsLeafTask(ObjectUtils.toString(metask.getIsLeafTask()));/* 152 */       metaskVo.setTaskName(ObjectUtils.toString(metask.getTaskName()));/* 153 */       Date srt = metask.getStartDateTime();/* 154 */       Date end = metask.getEndDateTime();/* 155 */       metaskVo.setSrtDate(DateUtil.defaultDateToString(srt));/* 156 */       metaskVo.setEndDate(DateUtil.defaultDateToString(end));/* 157 */       metaskVo.setIsFinished(ObjectUtils.toString(metask.getIsFinished()));/* 158 */       metaskVo.setBetween((srt.getTime() <= metask.getCurrentDateTime().longValue()) && (metask.getCurrentDateTime().longValue() <= end.getTime()) ? "1" : "0");/* 159 */       metaskVo.setTaskDesStatus(ObjectUtils.toString(metask.getTaskDesStatus()));/* 160 */       metaskVo.setTaskStatus(ObjectUtils.toString(metask.getTaskStatus()));/* 161 */       metaskVo.setRemindTime(ObjectUtils.toString(metask.getRemindTime()));/* 162 */       metaskVo.setWatcherSid(ObjectUtils.toString(metask.getWatcherSid()));/* 163 */       metaskVo.setAuditorSid(ObjectUtils.toString(metask.getAuditorSid()));/*     */ /* 165 */       metaskRess.add(metaskVo);/*     */     }/* 168 */     List<TaskInfo> taskInfos = this.taskProgressService.calcTaskProgress(projectId);/* 169 */     for (Iterator iterator1= taskInfos.iterator(); iterator1.hasNext(); ) {				TaskInfo taskInfo = (TaskInfo)iterator1.next();/* 170 */       for (MetaskRes metaskRes : metaskRess)/* 171 */         if (taskInfo.getTaskId().toString().equals(metaskRes.getTaskId())) {/* 172 */           metaskRes.setPlanProgress(ObjectUtils.toString(Float.valueOf(taskInfo.getPlanProgress())));/* 173 */           float undoneProgress = taskInfo.getPlanProgress() - taskInfo.getProgress();/* 174 */           metaskRes.setUndoneProgress(ObjectUtils.toString(Float.valueOf(undoneProgress < 0.0F ? 0.0F : undoneProgress)));/* 175 */           metaskRes.setActualProgress(ObjectUtils.toString(Float.valueOf(taskInfo.getProgress())));/* 176 */           break;/*     */         }/*     */     }/* 181 */     return Result.success(metaskRess);/*     */   }


上一篇:Java 泛型詳解

下一篇:Java注解(Annotation)

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
亚洲精品福利网站| 国产人成视频在线观看| 26uuu亚洲综合色欧美| 欧美一区二区在线| 婷婷亚洲最大| 欧美黄色www| 国产婷婷色一区二区在线观看| 亚洲欧美制服中文字幕| 久久av日韩| 在线视频欧美日韩精品| 在线日韩欧美视频| 一级二级三级视频| 一级片视频免费看| 免费在线观看黄色av| 亚洲.国产.中文慕字在线| 国产精品∨欧美精品v日韩精品| 日韩免费av片| 久久精品一区蜜桃臀影院| 波多野结衣视频网站| 精品国产乱子伦一区| 亚洲一区在线免费观看| 一级黄色大片免费看| 国产精品极品美女在线观看| 不卡中文字幕av| 久久亚洲综合色一区二区三区| 亚洲视频在线看| 影音先锋可以看的网站| 少妇与大狼拘作爱性a| 欧美高清3dfreexxxx性| 福利社在线免费视频| 高清shemale亚洲人妖| 亚洲欧美另类小说| 亚洲伊人一本大道中文字幕| 不卡在线观看av| 久久久久久国产| 人妻丰满熟妇aⅴ无码| 一区二区视频网站| wwwww亚洲| 成人网视频在线观看| 136福利第一导航国产在线| 乱一区二区三区在线播放| 国产精品视频一区在线观看| 国产午夜性春猛交ⅹxxx| 在线播放国产一区中文字幕剧情欧美| 欧美在线免费观看| 欧美熟妇另类久久久久久多毛| 亚洲影院在线播放| 麻豆久久久久久久| 一本久道久久综合无码中文| 久久久久久久久97黄色工厂| 久久久久久91亚洲精品中文字幕| 国产精品久久久久久久久久三级| 91视频www| 欧美激情女人20p| 一精品久久久| 免费无码国产精品| 中文字幕亚洲综合久久五月天色无吗''| 影音先锋中文字幕在线观看| 先锋资源av在线| 少妇高潮爽到全身痉挛抽搐| 天堂在线视频网站| 久久免费看毛片| 91成人在线看| 亚洲男人的天堂在线视频| 欧美日韩免费观看一区=区三区| 成人一区二区电影| 国产区在线视频| 中文字幕亚洲欧美在线| 特大黑人娇小亚洲女mp4| 精品国产sm最大网站免费看| av男人一区| 亚洲色图视频网| 午夜精品福利在线观看| 高清毛片aaaaaaaaa片| 一本久久综合亚洲鲁鲁五月天| 男人女人靠逼视频| 99这里都是精品| 国产日本在线视频| 亚洲制服一区| 亚洲性图第一页| 黄视频网站在线| 男人日女人网站| 亚洲第一页在线视频| 26uuu亚洲电影在线观看| 91久久国产精品91久久性色| 日本伦理一区二区| 麻豆乱码国产一区二区三区| 欧美激情福利视频在线观看免费| 亚洲图片在线综合| 国产高清一区| 丁香六月久久综合狠狠色| 久久久亚洲天堂| 久久久久中文字幕亚洲精品| 亚洲色图美腿丝袜| 日本成人动漫在线观看| 欧美精品九九久久| 日本不卡在线视频| 精品国精品国产自在久国产应用| 欧美日韩午夜| 妞干网福利视频| 日韩一区二区视频在线观看| 日本美女一级视频| 中文字幕日韩一级| 欧美一级大片免费看| 国产伦精品一区二区三区免费优势| 日韩三级在线免费观看| 日韩成人a**站| 国产三级在线播放| 欧美日韩福利电影| 国产精品 欧美 日韩| 亚洲国产成人va在线观看天堂| 日本一区二区三区四区在线视频| 免费看91视频| 国产成人精品免费在线| av中文字幕一区二区三区| 亚洲国产精品久久人人爱潘金莲| 你懂的免费网站| 风间由美中文字幕在线看视频国产欧美| 黄色成人在线网站| 久久久久久国产免费| 日韩成人一级| 日本一区二区三区四区在线视频| 日韩精品高清不卡| 免费看黄色网| 国产美女主播视频一区| 国产一区啦啦啦在线观看| 日本视频在线免费观看| 天天摸天天碰天天爽天天弄| 伊人成综合网伊人222| 非洲黑人最猛性xxxx交| 日韩午夜电影网| 亚洲精品福利视频网站| 国产精品一区二区三区成人| 欧美色道久久88综合亚洲精品| 精品国产欧美成人夜夜嗨| 成人污版视频| 国产一级黄色av| 最新天堂网www| 黄页网站在线观看| 久久久久久久人妻无码中文字幕爆| 少妇喷水在线观看| 性娇小13――14欧美| 国产精品久久久久影院老司| 三级小说欧洲区亚洲区| 国产精品全国免费观看高清| 成人av综合一区| 中文字幕资源网在线观看| 男女羞羞免费视频| 日本久久久网站| 色噜噜狠狠色综合欧洲selulu| 亚洲级视频在线观看免费1级| 免费成人进口网站| 免费在线观看一区二区| 九九热在线视频观看这里只有精品| 久久精品国产亚洲一区二区三区| 福利视频大全| 一区二区三区网| 久久久久久久久国产精品| 国产激情一区| 国内精品视频免费| 俺也去.com| 国产精品乱码久久久久| 91精品国产欧美一区二区| 亚洲美女屁股眼交3| av免费观看一区二区| 日本欧洲国产一区二区| 久久人人97超碰人人澡爱香蕉| 欧美电影免费| 欧美第一页浮力影院| 国产成人精品一区二区三区免费| 亚洲精品久久久北条麻妃| 疯狂试爱三2浴室激情视频| 麻豆久久久av免费| 日本欧美色综合网站免费| 含羞草www国产在线视频| 日韩精品不卡一区二区| jizzjizzjizz美国| 高清一区二区三区四区| 久久久久女教师免费一区| 国产一区二区免费看| 久久精品麻豆| 成人免费性视频| 日本xxxxx18| 日本三级久久| 欧美一区二区在线播放| 日本在线视频一区二区三区| www.男人天堂.com| 多男操一女视频| 亚洲AV无码久久精品国产一区| 日韩av片在线看| 国产在线一区二区三区播放| 懂色av蜜臀av粉嫩av永久| 成人91视频| 国产又黄又粗视频| 国产精品中文字幕在线观看| 日韩欧美中文字幕视频| 国产精品99久久99久久久二8| 艳妇乳肉豪妇荡乳xxx| 亚洲色成人www永久在线观看| 精品欧美一区二区精品少妇| 国产伦精品一区二区三区88av| 男女爱爱福利视频| 亚洲综合色在线| 国产桃色电影在线播放| 亚洲级视频在线观看免费1级| 最近最好的中文字幕2019免费| 欧洲美熟女乱又伦| 天堂v在线视频| 精品免费在线视频| 国产69精品99久久久久久宅男| 51色欧美片视频在线观看| 北条麻妃亚洲一区| 在线观影网站| 战狼4完整免费观看在线播放版| 久久精品日产第一区二区三区乱码| 日本少妇aaa| 在线视频1区| 99视频国产精品| 国产黄色免费观看| 亚洲一区二区三区在线观看网站| 国产亚洲美女久久| eeuss影院130020部| 国产精品亚洲产品| av资源免费观看| 中文字幕有码无码人妻av蜜桃| 成人激情视频免费在线| 中文字幕免费观看| 久久久久久一级片| 精品一区二区三区无码视频| 中文字幕亚洲综合久久五月天色无吗''| 国产精品网站大全| 精品久久香蕉国产线看观看gif| 国产亚洲精品aa| 国产成人精品自拍| 欧美日韩精品一区二区在线播放| 999福利在线视频| 亚洲最大在线| 天天摸天天干| 成人激情综合网| 91在线中文字幕| 欧美一二三视频| 国产在线拍揄自揄拍无码视频| 日韩一区二区久久| 国产精品自拍视频一区| 中文字幕av免费观看| 懂色av粉嫩av蜜乳av| 日韩高清不卡一区二区三区| 伊人久久综合视频| 亚洲成年人专区| 丰满熟妇人妻中文字幕| 自拍偷拍一区二区三区| 久久一区视频| 成人国产亚洲欧美成人综合网| 欧美熟乱15p| 性8sex亚洲区入口| 日本五码在线| 亚洲一本大道| 日韩黄色精品视频| 国产黄色录像视频| 91成人在线免费| 伊人久久大香线蕉精品组织观看| 日本成人一区二区三区| 日本少妇吞精囗交| fc2ppv素人在线| 国产一级免费在线观看| 91精品国产综合久久久久久丝袜| 欧美精品xxxxbbbb| 亚洲精品乱码| 欧美一卡2卡3卡4卡无卡免费观看水多多| 91夜夜未满十八勿入爽爽影院| 欧美日韩免费高清一区色橹橹| 欧美大片在线看免费观看| 国产伦精品一区二区三区视频我| 欧洲亚洲国产日韩| 成人晚上爱看视频| 日本不卡一区二区三区在线观看| 亚洲国产古装精品网站| 性欧美长视频免费观看不卡| 国产suv精品一区二区883| 九九九九九九精品任你躁| 亚洲欧洲日本专区| 青青久在线视频免费观看| 欧美成人ⅴideosxxxxx| 成人同人动漫免费观看| 日本黄色动态图| 精品一区二区国语对白| 亚洲成国产人片在线观看| 中文字幕免费高清在线| 91精品福利观看| 一级片免费在线| 999在线免费观看视频| 久久成人小视频| 91精品啪在线观看国产| 91午夜精品亚洲一区二区三区| 在线观看日韩羞羞视频| 国产精品又粗又长| 欧美黑人性猛交xxx| 九九夜夜操妹子| 国产精品露脸视频| 手机在线成人av| 97久久人人超碰caoprom| 欧美色涩在线第一页| 欧美日韩视频免费看| 色老板免费视频| 亚洲全黄一级网站| 黄色亚洲网站| 91精品人妻一区二区| 天天久久综合| 久草免费福利视频| 久久免费激情视频| 亚洲色图欧美日韩| 7799精品视频天天看| 欧美在线一区二区三区| 古典武侠综合av第一页| 日韩av一区二区三区四区| 国内精品麻豆| 久久av无码精品人妻系列试探| 91在线视频一区| 亚洲理论在线a中文字幕| 在线看日本不卡| www.com黄色片| 亚洲最快最全在线视频| 国产毛片精品视频| 欧美午夜在线一二页| 亚洲日本丝袜连裤袜办公室| 国产无精乱码一区二区三区| 国产精品国产三级国产专区51| 粉嫩av一区二区夜夜嗨|