逆コンパイルの見方について

このQ&Aのポイント
  • 逆コンパイルの見方について教えてください。
  • 逆コンパイルを行った結果が読めない場合、どうすれば良いでしょうか。
  • 同様の修正を行いたい場合、どのように逆コンパイルを読めばよいですか。
回答を見る
  • ベストアンサー

逆コンパイルの見方について(再度)

もう一度だけ教えて下さい御願いします。逆コンパイルをした結果が読めません。どうのようにに読めばいいでしょうか、同様の修正を行いたいと思います。 private GenericApplicationForm prepareContentData() throws Exception { Connection conn; DBResult resultP; DBResult resultT; conn = null; resultP = null; resultT = null; DBResult resultC = null; Object obj; conn = DBUtil.getConnection(srcform.getWebInfoPath()); resultP = daGetParentContent(conn); if(resultP.getRs().next()) { break MISSING_BLOCK_LABEL_51; } obj = returnList(); DBUtil.closeConnection(conn); return ((GenericApplicationForm) (obj)); setParentContent(resultP); if("sch".equalsIgnoreCase(srcform.getContentType())) { break MISSING_BLOCK_LABEL_107; } resultT = daGetParentToUser(conn); if(resultT.getRs().next()) { break MISSING_BLOCK_LABEL_102; } obj = returnList(); DBUtil.closeConnection(conn); return ((GenericApplicationForm) (obj)); setParentToUser(resultT); DBResult resultC = daGetChildContent(conn); setChildContent(resultC); if(!"refresh".equalsIgnoreCase(srcform.getEventName())) { srcform.setSelectContentID(""); String languages[] = GetConfVal.getConfVal("def_datalanguage", srcform.getBasicInfoDTO()).split(","); srcform.setEntryTitle(new String[languages.length]); srcform.setEntryContent(new String[languages.length]); srcform.setEntryContentOriginalFlag(new String[languages.length]); srcform.setEntryContentLanguage(new String[languages.length]); for(int i = 0; i < languages.length; i++) { srcform.setEntryTitle("", i); srcform.setEntryContent("", i); srcform.setEntryContentOriginalFlag("", i); srcform.setEntryContentLanguage("", i); } } srcform.setFocusElement(null); obj = srcform; DBUtil.closeConnection(conn); return ((GenericApplicationForm) (obj)); Exception exception; exception; DBUtil.closeConnection(conn); throw exception; } 気張ってはいるのですが、もう一度ご指導願います。

  • Java
  • 回答数1
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • Lieserl
  • ベストアンサー率81% (31/38)
回答No.1

if (条件式) { break MISSING_BLOCK_LABEL_XXX; } 文1 return リターンコード 文2 となっていたら if (条件式) { } else { 文1 return リターンコード } 文2 と読み替えてみれば良いと思います。 最後の4行はcatch句だと思うけど、 どこからtryがかかっているかはわからないですね。

yotarou
質問者

お礼

ありがとうございます。

関連するQ&A

  • 逆コンパイルの見方について(再度)

    逆コンパイル(JAD)で以下のようになります。 if(resultP.getRs().next()) {をどう処置するかが問題だと思いますが、如何せん実力不足です。break MISSING_BLOCK_LABELが複数あるので色々 やってみなしたが駄目です。 アドバイス下さるよう御願い申し上げます。 private GenericApplicationForm prepareContentData() throws Exception { Connection conn; DBResult resultP; DBResult resultT; conn = null; resultP = null; resultT = null; DBResult resultC = null; Object obj; conn = DBUtil.getConnection(srcform.getWebInfoPath()); resultP = daGetParentContent(conn); if(resultP.getRs().next()) { break MISSING_BLOCK_LABEL_51; } obj = returnList(); DBUtil.closeConnection(conn); return ((GenericApplicationForm) (obj)); setParentContent(resultP); if("sch".equalsIgnoreCase(srcform.getContentType())) { break MISSING_BLOCK_LABEL_107; } resultT = daGetParentToUser(conn); if(resultT.getRs().next()) { break MISSING_BLOCK_LABEL_102; } obj = returnList(); DBUtil.closeConnection(conn); return ((GenericApplicationForm) (obj)); setParentToUser(resultT); DBResult resultC = daGetChildContent(conn); setChildContent(resultC); if(!"refresh".equalsIgnoreCase(srcform.getEventName())) { srcform.setSelectContentID(""); String languages[] = GetConfVal.getConfVal("def_datalanguage", srcform.getBasicInfoDTO()).split(","); srcform.setEntryTitle(new String[languages.length]); srcform.setEntryContent(new String[languages.length]); srcform.setEntryContentOriginalFlag(new String[languages.length]); srcform.setEntryContentLanguage(new String[languages.length]); for(int i = 0; i < languages.length; i++) { srcform.setEntryTitle("", i); srcform.setEntryContent("", i); srcform.setEntryContentOriginalFlag("", i); srcform.setEntryContentLanguage("", i); } } srcform.setFocusElement(null); obj = srcform; DBUtil.closeConnection(conn); return ((GenericApplicationForm) (obj)); Exception exception; exception; DBUtil.closeConnection(conn); throw exception; } 何卒宜しく御願い致します。

    • ベストアンサー
    • Java
  • 逆コンパイルの見方について(再度)

    askaaska`様 コンパイルまでは出来ましたが実行段階で不調です。やみくもにやっているのでご迷惑をお掛けしているのは重々承知しています。恐らくこのプログラムからJSPを実行してWebに表示しているものと考えられます。残念ながら画面が遷移しません。このプログラムだけです、あとは無理やり直しました。邪道とは思いますが方法がありません。 public class TranslationEntryBL { private final String STR_ARRAY[]; private TranslationEntryForm srcform; private TranslationEntryBL() { STR_ARRAY = new String[0]; srcform = null; } public TranslationEntryBL(TranslationEntryForm srcform) { STR_ARRAY = new String[0]; this.srcform = null; this.srcform = srcform; } public GenericApplicationForm init() throws Exception { initCommonInfo(); if(srcform.getParentContentID().equalsIgnoreCase(srcform.getSelectContentID()) && !"scx".equalsIgnoreCase(srcform.getContentType())) { srcform.setFocusElement("entryTitle-1"); } else if(srcform.getEntryContent().length > 0) { srcform.setFocusElement("entryContent"); } else { srcform.setFocusElement(""); } return prepareContentData(); } public GenericApplicationForm refresh() throws Exception { return init(); } public GenericApplicationForm returnList() throws Exception { TranslationListForm nextform = new TranslationListForm(srcform); nextform.setEventName("init"); return nextform; } private GenericApplicationForm prepareContentData() throws Exception { Connection conn; DBResult resultP; DBResult resultT; conn = null; resultP = null; resultT = null; DBResult resultC = null; Object obj; conn = DBUtil.getConnection(srcform.getWebInfoPath()); resultP = daGetParentContent(conn); // kokomade okay if(resultP.getRs().next()) { // kokomade okay obj = returnList(); DBUtil.closeConnection(conn); // kokomade okay return ((GenericApplicationForm) (obj)); // kokodetomaru } setParentContent(resultP); resultC = daGetChildContent(conn); setChildContent(resultC); if(!"refresh".equalsIgnoreCase(srcform.getEventName())) { srcform.setSelectContentID(""); String languages[] = GetConfVal.getConfVal("def_datalanguage", srcform.getBasicInfoDTO()).split(","); srcform.setEntryTitle(new String[languages.length]); srcform.setEntryContent(new String[languages.length]); srcform.setEntryContentOriginalFlag(new String[languages.length]); srcform.setEntryContentLanguage(new String[languages.length]); for(int i = 0; i < languages.length; i++) { srcform.setEntryTitle("", i); srcform.setEntryContent("", i); srcform.setEntryContentOriginalFlag("", i); srcform.setEntryContentLanguage("", i); } } try { srcform.setFocusElement(null); obj = srcform; } catch (Exception exception) { DBUtil.closeConnection(conn); throw exception; } DBUtil.closeConnection(conn); return ((GenericApplicationForm) (obj)); } return ((GenericApplicationForm) (obj));のところで処理が止まります。何かアドバイスを下さい御願いします。尚、止まると判断しているのはBEEP音を入れてどこまで動いたかを確認したものです。 最早、専門家でないと出来ない領域かと思いますが、何卒宜しく御願い致します。

    • ベストアンサー
    • Java
  • 逆コンパイルの見方について

    ソースがなくて困ってJADの逆コンパイルをしてみました。 (Decompiled by Jad v1.5.8e.)以下のように結果が出ます。 public GenericApplicationForm save() throws Exception { Connection conn = null; TranslationEntryForm translationentryform; initCommonInfo(); if(checkEntryContent()) { break MISSING_BLOCK_LABEL_24; } translationentryform = srcform; DBUtil.closeConnection(conn); return transentryform; conn = DBUtil.getConnection(srcform.getWebInfoPath()); daSaveContent(conn); conn.commit(); ContentData(); break MISSING_BLOCK_LABEL_61; Exception exception; exception; DBUtil.closeConnection(conn); throw exception; DBUtil.closeConnection(conn); return srcform; } Break MISSING_BLOCK_LABEL とexception;並びにCloseが2箇所あるところがおかしいと思うのですが、どう読めば良いでしょうか 変な質問で申し訳ありませんが宜しく御願い致します。

    • ベストアンサー
    • Java
  • 逆コンパイルの見方について(再度)

    Jad v1.5.8e.で逆コンパイルしています。下段のParseException e;をどう理解していいか分かりません。恐らくsdfFrom.parse(val)との関係だと思うのですが public class Formatter { public Formatter() { } public static String convDateFormat(String val, String formatFrom, String formatTo) throws IllegalArgumentException { SimpleDateFormat sdfFrom; SimpleDateFormat sdfTo; if(val == null || formatFrom == null || formatTo == null) { throw new IllegalArgumentException(); } sdfFrom = Util.getSDF(formatFrom); sdfTo = Util.getSDF(formatTo); sdfFrom.setLenient(false); sdfTo.setLenient(false); return sdfTo.format(sdfFrom.parse(val)); ParseException e; e; return val; } 何卒、宜しく御願いします。

    • ベストアンサー
    • Java
  • コネクションを使いまし??? au携帯でオープンアプリで通信のテスト

    au携帯でオープンアプリで通信のテストをしています。 HTTP GETメソッドを実行する には以下のようにすれば良いのですが、 下のreadHttpConnection関数を呼び出すごとに、 通信確認 このオープンアプリは通信を行おうとしています。 通信を許可しますか? ●許可する ○許可しない となります、以前の質問でコネクションを使いましをすれば、最初の1回で済むと回答を得ましたが、どのように使いまわしをすればそうなるのかわかりません。 conn = (HttpConnection)Connector.open(url, Connector.READ, true); ここに入力するURLは、毎回異なるため(例えば http://test?s=1 や http://test?s=2 など) どうしたらよいのでしょうか? //=== ソース === int readHttpConnection(String url, byte[] data) throws Exception { HttpConnection conn = null; InputStream in = null; int i, length = 0; try { conn = (HttpConnection)Connector.open(url, Connector.READ, true); conn.setRequestMethod(HttpConnection.GET); in = conn.openInputStream() ; while((i = in.read(data, length, data.length - length)) > 0) length += i; } catch(Exception ex) { } finally { if(in != null) in.close(); if(conn != null) conn.close(); } return length; }

    • ベストアンサー
    • Java
  • 動的セレクトボックスのSelectedについて

    以下のように、動的セレクトボックスを作りました。これ自体は問題なく動くのですが、selectedの指定方法がわかりません。例えば、ページ表示に「東京都」と「中央区」を選択している状態にしたいです。よろしくお願いいたします。 <html> <head> <script type="text/javascript"><!-- function SelectOption(parentValue, text, title, value, style) { this.parentValue = parentValue; this.setOption = function() { this.text = text; this.value = value; this.title = title; if(style) { this.style.cssText = style; } }; return this; } function SelectBox(id) { function getObject() { var obj = document.getElementById(id); if(!obj.options && ( (typeof obj.length) == "number") ) { if(obj.length > 0) { obj = obj[0]; } else { obj = null; } } return obj; } var options = []; this.registOption = function(option) { options[options.length] = option; }; var child = null; this.setChild = function(childObj) { child = childObj; }; this.make = function(parentValue) { var obj = getObject(); if(obj) { obj.options.length = 0; var opt = (parentValue != null) ? [] : options; if(parentValue != null) { for(var i = 0; i < options.length; i++) { if( (options[i].parentValue == null) || (options[i].parentValue == parentValue) ) { opt[opt.length] = options[i]; } } } obj.options.length = opt.length; for(var i = 0; i < opt.length; i++) { opt[i].setOption.call(obj.options[i]); } if(child) { child.make(obj.value); } } }; return this; } var box1 = new SelectBox("sb1"); box1.registOption(new SelectOption(null, "都道府県", "", "0", "color:gray;")); box1.registOption(new SelectOption(null, "東京都" , "都道府県", "1")); box1.registOption(new SelectOption(null, "神奈川県", "都道府県", "2")); var box2 = new SelectBox("sb2"); box2.registOption(new SelectOption(null, "区市町村", "", "0", "color:gray;")); box2.registOption(new SelectOption("1" , "千代田区", "区市町村", "1")); box2.registOption(new SelectOption("1" , "中央区" , "区市町村", "2")); box1.setChild(box2); window.onload = function() { box2.make("1"); }; //--></script> </head> <body> <form> <select id="sb1" onchange="box2.make(this.value);"></select> <select id="sb2"></select> </select> </form> </body> </html>

  • javaの掲示板について

    今現在パスワードを比較して一致していれば削除としたのですがjava.sql.SQLException: Can not issue data manipulation statements with executeQuery().というエラーがtomcatにでます。 サーブレットはこう書いています //削除 if(deleteMessage != null){ String deleteid = request.getParameter("id"); String deletepassword = request.getParameter("deletepassword"); String rspassword = dao.getPassword(deleteid); if (deletepassword.equals(rspassword)){ dao.deleteMessage(delete); success = "削除しました。"; request.setAttribute("success", success); } else{ errorpass = "パスワードが違います。"; request.setAttribute("errorpass", errorpass); } } 比較用のパスワードをデータベースから取り出すDAOはこうしています。 public int deleteMessage(String strid) throws Exception { Vector messageList = new Vector(); int i = 0; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try{ conn = this.getConnection(); String sql = "delete from MESSAGE_TABLE where ID = ? "; pstmt = conn.prepareStatement(sql); pstmt.setString(1, strid); rs = pstmt.executeUpdate(); } finally { this.close(rs); this.close(pstmt); this.close(conn); } return i; } public String getPassword(String id) throws Exception { Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; String rspassword = null; try { String deleteid = null; conn = this.getConnection(); String sql = "SELECT * FROM MESSAGE_TABLE where ID = ? "; pstmt = conn.prepareStatement(sql); pstmt.setString(1, id); rs = pstmt.executeQuery(); if(rs.next()){ rspassword = rs.getString("PASSWORD"); } } finally { this.close(rs); this.close(pstmt); this.close(conn); } return rspassword; } データベースからパスワードがとれていないから起きているのだとは思うのですが、どのようにしたらとれるでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • セレクトボックスに"value"と"word"を付け加えたい。

    初めての投稿をさせてもらいます。JavaScript初心者な者で解る方がいらっしゃればご教授のほど宜しくお願いします。 質問させてもらいたい事はこちらのソースに"value"と"word"を付け加えることは出来ますでしょうか? 外部ファイルには /** * 選択肢クラス * @param parentValue 親の値(null:いつでも表示) * @param text 表示テキスト * @param value 値 * @param style CSS(省略可) */ function SelectOption(parentValue, text, value, style) { this.parentValue = parentValue; this.setOption = function() { this.text = text; this.value = value; if(style) { this.style.cssText = style; } }; return this; } /** * セレクトボックスクラス * @param id セレクトボックスID */ function SelectBox(id) { /** * IDに対応オブジェクトを取得 * @return オブジェクトorNULL */ function getObject() { var obj = document.getElementById(id); if(!obj.options && ( (typeof obj.length) == "number") ) { if(obj.length > 0) { obj = obj[0]; } else { obj = null; } } return obj; } // オプションのリスト var options = []; /** * オプション登録 * @param condition 表示条件 */ this.registOption = function(option) { options[options.length] = option; }; // 子のオブジェクト var child = null; /** * 子のオブジェクトを設定する * @param childObj 子のオブジェクト */ this.setChild = function(childObj) { child = childObj; }; /** * オプション反映 * @param parentValue 親の値(null:全部表示) * ※比較に==を使っているのでundefinedもnullと等しく扱われる。 */ this.make = function(parentValue) { var obj = getObject(); if(obj) { // 選択肢削除 obj.options.length = 0; // 表示すべき選択肢抽出 var opt = (parentValue != null) ? [] : options; if(parentValue != null) { for(var i = 0; i < options.length; i++) { if( (options[i].parentValue == null) || (options[i].parentValue == parentValue) ) { opt[opt.length] = options[i]; } } } // 選択肢反映 obj.options.length = opt.length; for(var i = 0; i < opt.length; i++) { opt[i].setOption.call(obj.options[i]); } // 子のオブジェクトにも連鎖反映 if(child) { child.make(obj.value); } } }; return this; } HTMLファイルには <html> <head> <title>セレクトボックス親子関係</title> <script type="text/javascript" src="Select.js" charset="Shift_JIS"></script> <script type="text/javascript"><!-- var box1 = new SelectBox("sb1"); box1.registOption(new SelectOption(null, "都道府県", "0", "color:gray;")); box1.registOption(new SelectOption(null, "東京都" , "1")); box1.registOption(new SelectOption(null, "神奈川県", "2")); var box2 = new SelectBox("sb2"); box2.registOption(new SelectOption(null, "区市町村", "0", "color:gray;")); box2.registOption(new SelectOption("1" , "千代田区", "1")); box2.registOption(new SelectOption("1" , "中央区" , "2")); box2.registOption(new SelectOption("2" , "横浜市" , "3")); box2.registOption(new SelectOption("2" , "川崎市" , "4")); var box3 = new SelectBox("sb3"); box3.registOption(new SelectOption(null, "詳細" , "0", "color:gray;")); box3.registOption(new SelectOption("1" , "一番町" , "1")); box3.registOption(new SelectOption("3" , "みなとみらい", "2")); box1.setChild(box2); box2.setChild(box3); window.onload = function() { box1.make(null); }; //--></script> </head> <body> <form> <select id="sb1" onchange="box2.make(this.value);"></select> <select id="sb2" onchange="box3.make(this.value);"></select> <select id="sb3"></select> </form> </body> </html> となっております。

  • iアプリとサーブレットの連動(eclipse)

    はじめまして、java初心者の者です。 現在私は、eclipseを使って、iアプリ開発に挑戦しています。 その中で、iアプリとサーブレットを連動させる方法が分からず、困っています。 iアプリ上の画面で、aと入力してサーブレットに送ると、サーブレットでテキストデータを書き換え、Aに変更して送り返すという、本当に初歩的な動作を試したいのですが、上手く連動してくれません。 ネット上のサンプルソースを丸写しで使っても動かないため、おそらく設定やファイルの置き場所、接続先の記述などに問題があるのだと思います。 インターネット等でいろいろと情報を集めてみたのですが、そもそもeclipseの中でDoJaプロジェクトを作成した場合、サーブレットを使うにはどのような設定が必要なのか、またデータはどのフォルダへ保存するべきなのかといった基礎的な情報が収集できず、困っています。 tomcatプロジェクトを作成し、その中でjspとサーブレットを連動させるテストは成功したのですが、DoJaプロジェクトではweb.xmlファイルを作らなくていいのか?など、本当に基礎的な部分が全く理解できていません・・・。 また、以下がネット上で拾ったサンプルコードです。 同じフォルダにあるサーブレット(Test)と連動させたいと思っているのですが、下記に何か間違いはないのでしょうか? ---------------------------------------------------------------- import com.nttdocomo.ui.*; import java.io.*; import com.nttdocomo.io.*; import javax.microedition.io.*; public class A extends IApplication { public void start() { String res = http("servlet/Test?test=a"); showDialog(res); } void showDialog(String s) { Dialog d = new Dialog(0, "dialog"); d.setText("" + s); d.show(); } String http(String name) { String url = IApplication.getCurrentApp().getSourceURL(); url += name; String res = null; HttpConnection conn = null; try { conn = (HttpConnection)Connector.open(url, Connector.READ); conn.setRequestMethod(HttpConnection.GET); conn.connect(); InputStream in = conn.openInputStream(); int len = (int)conn.getLength(); byte[] buf = new byte[len]; int off = 0; for (;;) { int n = in.read(buf, off, len); if (n < 0) throw new Exception(); off += n; len -= n; if (len == 0) break; } in.close(); conn.close(); return new String(buf); } catch (Exception e) { try { conn.close(); } catch (Exception e2) { } } return null; } } --------------------------------------------------------------- 本当に基礎的な質問で申し訳ありません。 どなたかご存知の方がいらっしゃいましたら、何卒よろしくお願いいたします。 ※以下、私の環境をお伝えいたします。 ・eclipse3.1 ・DoJa-5.1 ・apache-tomcat-6.0.20

    • ベストアンサー
    • Java
  • checkbox必須チェック

    function hissuCheck(form) { var paramArray = Array("…24個"); var alrtArray = Array("…24個"); var len = paramArray.length; for(i=0; i<len; i++) { var obj = form.elements[paramArray[i]]; if(obj.type == "text") { if(obj.value == "") { alert(alrtArray[i]+"は必須入力です"); form.elements[paramArray[i]].focus(); return false; } } else if(obj.type == "select-one" || obj.type == "select-multi") { for(varSelected=0, j=0; j<obj.options.length; j++) { if(obj.options[j].selected)varSelected+=obj.options[j].value; } if(varSelected == 0) { alert(alrtArray[i]+"は必須入力です"); form.elements[paramArray[i]].focus(); return false; } } else { for(varChecked=0, k=0; k<obj.length; k++) { if(obj[k].type == "checkbox") { if(obj[k].checked)varChecked++; } } if(varChecked == 0) { alert(alrtArray[i]+"は必須入力です"); return false; } } } return true; } 必須チェックですが、最後のチェックボックスだけがチェックしても「…は必須です」とアラートが表示されてしまいます。どうか宜しくお願いします

専門家に質問してみよう