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

首頁(yè) > 編程 > Java > 正文

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

2019-11-11 06:03:53
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

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

1、java Decompiler

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

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

2、Java 反編譯器 JD-GUI

JD-GUI 是一個(gè)用 C++ 開(kāi)發(fā)的 Java 反編譯工具,由 Pavel Kouznetsov開(kāi)發(fā),支持Windows、Linux和蘋(píng)果Mac Os三個(gè)平臺(tái)。而且提供了Eclipse平臺(tái)下的插件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文件非常方便但是會(huì)偶爾地方報(bào)錯(cuò),需要自己分析代碼,比如創(chuàng)建一些 沒(méi)有必要的局部變量出錯(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編譯出來(lái)的代碼莫名其妙,這個(gè)時(shí)候可以結(jié)合

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

下面給出一個(gè)class 文件的一個(gè)函數(shù)由 jd-gui編譯的函數(shù) (有問(wèn)題)
@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工具分析出來(lái)的結(jié)果(也有問(wèn)題) 
 @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)最終分析出來(lái)的結(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);/*     */   }


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
韩国av电影免费观看| 男女激情免费视频| 久久精品99国产精品日本| 一本久中文高清| 久久亚洲国产成人精品无码区| 亚洲精品大片www| 亚洲av无码成人精品区| 一区二区福利视频| 久久国产精品久久久久| 国产精品suv一区| 99re免费99re在线视频手机版| 日日摸日日碰夜夜爽av| 亚洲一区二区三区美女| 美女国产精品久久久| 成年人视频免费| 久久久国产午夜精品| 国产精品午夜免费| 无码人妻av一区二区三区波多野| 欧美日韩午夜影院| 成人精品一区二区三区电影黑人| 天海翼视频在线观看| av电影一区二区三区| 日韩午夜影院| 中文字幕在线1| 国产一区二区三区av电影| 国产美女福利在线| 男人操女人下面视频| 色资源二区在线视频| 精品中文字幕一区二区小辣椒| 欧美日韩综合色| 男人看的污网站| 国产高清精品软男同| 中文字幕jux大岛优香| 欧美精品日韩少妇| 国产大片精品免费永久看nba| 亚洲色图100p| 色噜噜狠狠狠综合曰曰曰| 国产主播一区| 偷窥自拍亚洲色图| 人体内射精一区二区三区| 台湾亚洲精品一区二区tv| 久久久久久综合| 色狠狠一区二区三区香蕉| 日本免费一区二区视频| 国产秒拍福利视频露脸| 久久嫩草精品久久久精品一| 久久精品91久久久久久再现| 欧美破处大片在线视频| 先锋影音男人av资源| 日本免费福利视频| 亚洲一区二区av电影| 国产免费黄色小视频| 欧美一区二区三区爱爱| 亚洲第一福利视频在线| 亚洲熟女乱综合一区二区三区| 五月天婷婷在线视频| 亚洲国产成人精品久久久国产成人一区| 欧美一卡二卡三卡| 久久久久在线观看| 国产精品18久久久久久vr| 日韩中文字幕综合| 欧美日韩无遮挡| 中文字幕777| 国产字幕在线观看| 午夜久久久久久电影| 精品一区二区在线免费观看| 在线亚洲精品自拍| 久久不射中文字幕| 美国一级片在线观看| 在线免费三级电影网站| 蜜臀精品一区二区| 欧美成人sm免费视频| 麻豆电影在线观看| 中文成人激情娱乐网| 蜜桃在线一区| 中文字幕免费高清在线| 久久久精品在线视频| 中国china体内裑精亚洲片| 国产激情视频一区二区| 欧美精品亚洲精品日韩精品| 51国偷自产一区二区三区的来源| 国产精品二三区| 狠狠久久综合婷婷不卡| av中文资源在线| 国产伦精品一区二区三区高清| 亚洲青青一区| 美女国产精品| 在线观看高清av| 国产在线观看免费av| 亚洲已满18点击进入在线看片| 亚洲第九十九页| 91欧美大片| 日韩一区二区三区免费视频| 亚洲一区二区三区四区五区xx| 91天堂在线观看| 日韩理论电影中文字幕| 日韩一级精品视频在线观看| 91成人看片片| 国产美女www爽爽爽视频| 91看片在线播放| 伊人久久成人网| 久久久久久一区二区三区四区别墅| 亚洲日本无吗高清不卡| 91久久精品国产性色| 日本高清xxxx| 亚洲中字黄色| 欧美精品第一页在线播放| 领导边摸边吃奶边做爽在线观看| 三上悠亚av一区二区三区| 欧美成人精品一区二区三区在线看| 美女被久久久| 成人手机在线电影| 国产日韩网站| 真人抽搐一进一出视频| 亚洲在线偷拍自拍| 国产精品成人无码免费| 欧美性极品xxxx做受| 四色永久免费网站| 欧美超碰在线观看| 国产激情片在线观看| 免费污视频在线| 国产精品白丝在线| 男裸体无遮挡网站| 懂色av一区二区三区蜜臀| 精品国产一区二区三区日日嗨| 免费观看国产精品视频| 草草视频在线免费观看| 欧美成人a在线| 久久这里有精品15一区二区三区| 国产99在线|中文| 色综合久久久久久久久五月| 亚洲一二三区不卡| 午夜成人影视| 夜夜操天天干| 少妇被狂c下部羞羞漫画| 国产揄拍国内精品对白| 大肉大捧一进一出好爽视频| 99久久久无码国产精品免费| 老司机久久精品| 激情五月开心婷婷| 久久精品夜夜夜夜久久| 蜜桃麻豆影像在线观看| 欧美日韩国产美女| 天天精品视频| 91欧美一区二区| 天天摸天天做天天爽水多| 午夜免费久久久久| 中文字幕日韩免费视频| 国产亚洲一区字幕| 强伦女教师2:伦理在线观看| 熟妇人妻一区二区三区四区| 国产欧美日本一区视频| 精品三级av在线| 国产一区二区香蕉| 亚洲激情校园春色| 亚洲色图欧美视频| 伊人久久精品视频| 日韩不卡在线播放| 九一免费看片| 久久色视频免费观看| 在线激情av| 8x8x拔插拔插影库永久免费| 欧美日韩成人免费视频| 最近中文字幕免费视频| 一本一本久久a久久精品综合妖精| 亚洲午夜av| 成人有码在线视频| 国产精品传媒| 视频一区二区三区不卡| 欧美裸体xxxx极品少妇| 91国产精品一区| 精品国产av 无码一区二区三区| 日韩午夜中文字幕| 一区二区日韩电影| 亚洲精品白虎| 国产综合色在线观看| 91在线精品观看| 黄色成人在线观看| 国产真实伦在线观看| 国产极品视频在线观看| 久久久999国产| 在线观看91精品国产入口| 在线不卡免费欧美| 亚洲黄色小说视频| xxxx.欧美| 亚洲一区二区三区四区在线播放| 91电影在线播放| 夜夜春亚洲嫩草影视日日摸夜夜添夜| 日本欧美黄网站| 91夜夜蜜桃臀一区二区三区| 欧美熟妇另类久久久久久不卡| 亚洲欧美一区二区在线观看| 狠狠躁18三区二区一区| 欧美酷刑日本凌虐凌虐| 国产精品美女久久久免费| 精选一区二区三区四区五区| a天堂中文在线| 欧美精品一区在线播放| 日本小视频在线免费观看| 欧美一三区三区四区免费在线看| 国产精品视频网站| 91午夜精品亚洲一区二区三区| av日韩在线网站| 免费成人在线观看| 国产性生活毛片| 国产高清不卡无码视频| 国产欧美日韩专区发布| 91国偷自产一区二区三区成为亚洲经典| 久久精品国产av一区二区三区| 精品美女久久| wwwav国产| 国产美女www爽爽爽| 日本精品在线中文字幕| 日韩视频在线播放| 国产精品自拍在线观看| 成人网在线免费观看| 九九久久九九久久| 国产欧美日韩在线一区二区| 久久日文中文字幕乱码| 日韩av一区二区在线播放| av毛片免费| 亚洲一区二区自拍偷拍| 国产亚洲成av人片在线观黄桃| 日韩精品自拍偷拍| 日本三级一区| 日韩精品久久| 99国产精品| 激情成人亚洲| 天堂在线观看免费视频| 97在线视频精品| 免费萌白酱国产一区二区三区| 粉嫩av一区二区三区免费观看| 亚州国产精品久久久| 欧美极度另类性三渗透| 99久久精品久久久久久清纯| 欧美激情精品久久久久久免费印度| 午夜视频你懂的| 尤物网站在线| 1024日韩| 中文字幕一区二区三区免费视频| 国产一区二区观看| 欧美偷窥清纯综合图区| 亚洲国产午夜精品| 精品欧美一区二区三区| 91免费视频网| 一区二区三区久久久久| 色黄视频在线观看| 色偷偷亚洲第一成人综合网址| 5278欧美一区二区三区| 日韩毛片在线播放| www黄色日本| 亚洲91网站| 亚洲一二三区在线观看| 成年人视频免费在线播放| 精品欧美一区二区三区在线观看| 国产精品久久国产精麻豆96堂| 成人伦理视频网站| 亚洲欧美中文字幕在线一区| 亚洲国产97在线精品一区| 日韩中文视频| 国产又爽又黄的视频| 欧美视频一区二区三区在线观看| 91精品国产乱码久久久久久久久| av剧情在线观看| 成年在线观看视频| 午夜在线视频观看日韩17c| 国产精品伦一区二区三区视频| 大白屁股一区二区视频| 国产熟女一区二区三区四区| 伊人亚洲综合网| 欧美日韩一卡| jvid福利在线一区二区| 国产精品久久av| 日韩av一区二区三区四区| 欧美激情在线有限公司| 亚洲区第一页| 99精品视频中文字幕| 最新国产热播激情视频| 91麻豆文化传媒在线观看| 亚洲激情av在线| 91丨porny丨对白| 国产伊人精品在线| 另类ts人妖一区二区三区| 欧美男男freegayvideosroom| 欧美亚洲一级片| 日韩免费观看在线观看| 天天干天天摸天天操| 成人小视频免费在线观看| 亚洲精品美国一| 欧美日韩亚洲自拍| 黑人精品一区二区| 成年视频在线观看| 在线中文字幕播放| 国产在线观看免费网站| 中文字幕一区二区三区人妻不卡| 亚洲精品国精品久久99热| 亚洲午夜久久久久久久久| 99精品在线免费| 国产精品超碰97尤物18| 欧美在线免费观看亚洲| 精品国产一区二区三区麻豆小说| 日韩激情av| 99精品免费在线观看| 久久亚洲一区二区三区四区五区高| 精品欧美国产| 大奶在线精品| 欧美偷拍自拍| 国产99久一区二区三区a片| 欧美久久久久久久久久久久久| 成人福利免费网站| 超级白嫩亚洲国产第一| 免费看一级毛片| 国产精品熟女视频| 亚洲一区二区中文在线| 中国成人在线视频| 精品福利网址导航| 亚洲 中文字幕 日韩 无码| 国产极品在线视频| 婷婷亚洲五月| 成人三级在线| 青青草原综合久久大伊人精品优势| 亚洲欧美一区二区激情| 久久久久国产免费免费| 久久久综合亚洲91久久98| 日韩久久精品| 成人国产1314www色视频| 日韩成人在线电影网| 91免费视频播放|