精华内容
下载资源
问答
  • 由于微信小程序升级的原因,最近github上的wxappUnpacker-master小程序反编译工具已部分失效,运行node wuWxapkg.js 命令时会报 $gwx is not defined 错误, 导致page-frame.html文件无法反编译,无法解开wxss格式...

    由于微信小程序升级的原因,最近 github 上的 wxappUnpacker-master 小程序反编译工具已部分失效,运行 node wuWxapkg.js 命令时会报 $gwx is not defined 错误
    导致 page-frame.html 文件无法反编译,无法解开 wxss 格式文件,wxss 文件缺失
    解决办法如下,亲测有效
    修改反编译文件 wxappUnpacker 中 wuWxss.js,修改其中 runVM 方法:

    function runVM(name,code){
    
    	let wxAppCode = {};
    	
    	let handle = {cssFile:name};
    
    	let gg = new GwxCfg();
    
    	let tsandbox = {
    
    	$gwx:GwxCfg.prototype["$gwx"],
    
    	__mainPageFrameReady__:GwxCfg.prototype["$gwx"],
    
    	__wxAppCode__: wxAppCode,
    
    	setCssToHead:cssRebuild.bind(handle)
    
    }
    
    let vm = new VM({sandbox:tsandbox});
    
    vm.run(code);
    
    for(let name in wxAppCode){
    
    	if(name.endsWith(".wxss")){
    
    		handle.cssFile = path.resolve(frameName,"..",name);
    
    		wxAppCode[name]();
    
    	}
    }
    

    github地址

    展开全文
  • 由于微信小程序升级的原因,最近github上的wxappUnpacker-master小程序反编译工具已部分失效,运行node wuWxapkg.js 命令的时候会报 $gwx is not defined 错误, 导致page-frame.html文件无法反编译,无法解开wxss...

    $gwx is not defined 报错的问题

    由于微信小程序升级的原因,最近github上的wxappUnpacker-master小程序反编译工具已部分失效,运行node wuWxapkg.js 命令的时候会报 $gwx is not defined 错误,

    导致page-frame.html文件无法反编译,无法解开wxss格式文件,wxss文件缺失。解决办法如下,亲测有效

    修改反编译文件wxappUnpacker中wuWxss.js,修改其中runVM方法:

    function runVM(name,code){
    
    let wxAppCode={},handle={cssFile:name};
    
      let gg =new GwxCfg()
    
    let tsandbox = {
    
    $gwx:GwxCfg.prototype["$gwx"],
    
          __mainPageFrameReady__:GwxCfg.prototype["$gwx"],
    
          __wxAppCode__: wxAppCode,
    
          setCssToHead:cssRebuild.bind(handle)
    
    }
    
    let vm =new VM({sandbox:tsandbox});
    
      vm.run(code)
    
    for(let namein wxAppCode)if(name.endsWith(".wxss")){
    
    handle.cssFile=path.resolve(frameName,"..",name);
    
          wxAppCode[name]();
    
      }
    
    }
    复制代码

    如果这篇文章对你有一点点帮助,欢迎打赏

    转载于:https://juejin.im/post/5c887c2bf265da2d9c38aec3

    展开全文
  • * 用jad反编译混淆过的代码,能去大部分错误,当然逻辑的错误还是要自己修改。 * @author chruan * */ public class JadFormat { private String returnStr = null; /** * */ private Integer lineNum...

    在此特别声明,这只是学习使用,不得用于任何非法活动,否则,所有责任自负,与本人无关。


    要用jad如下,-safe:所有类都带包名
    jad -o -r -f -safe -ff -sjava -d com_src2 src/**/*.class
    pause


    
    package jad.chruan;
    
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    import org.chruan.util.DirUtil;
    /**
     * 格式化
     * 用jad反编译混淆过的代码,能去大部分错误,当然逻辑的错误还是要自己修改。
     * @author chruan
     *
     */
    public class JadFormat {
    
    	private String returnStr = null;
    
    	/**
    	 * 
    	 */
    	private Integer lineNum;
    	private List<ClassName> clsList;
    
    	public static void main(String[] args) {
    		JadFormat jadFormat = new JadFormat();
    		jadFormat.doWork();
    		System.out.println("end");
    	}
    
    	public void doWork() {
    		String path = "D:\\CHRUAN\\android\\mypj\\com_src";
    		String newsrc = "D:\\CHRUAN\\android\\mypj\\new_com_src";
    
    		int pathLen = path.length();
    		List<String> list = new ArrayList<String>();
    
    		// 取得所有文件路径
    		DirUtil.dir(path, list);
    
    		// 找到所有类,把文件名作为类名,并把文件 夹作为包,格式化类包
    		clsList = listClass(list, pathLen);
    		System.out.println(list.size());
    
    		// 遍历所有文件,修改所有错误。如,把一位字母类包修改为三位一样的。
    		for (int idx = 0, size = list.size(); idx < size; idx++) {
    
    			String fp = list.get(idx);
    			if (fp.endsWith(".java")) {
    
    				List<String> aticle = new ArrayList<String>();// 存放类文件
    				List<LineBean> returnLines = new ArrayList<LineBean>();// 用来把return语句放在方法最后
    				List<LineBean> superLines = new ArrayList<LineBean>();// 用来把super语句放在方法最前
    				lineNum = new Integer(-1);
    
    				File file = new File(fp);// 类文件
    				BufferedReader reader = null;
    				BufferedWriter writer = null;
    				try {
    
    					String newPath = fp.substring(pathLen);
    					newPath = newsrc + getNewSrcPath(newPath);
    
    					writer = new BufferedWriter(new FileWriter(
    							new File(newPath)));
    					reader = new BufferedReader(new FileReader(file));
    
    					// 按行处理
    					String line = null;
    					while ((line = reader.readLine()) != null) {
    						processModify(line, aticle, returnLines, superLines);
    						lineNum++;
    						aticle.add("\r\n");
    					}
    					preWrite(writer, aticle, returnLines, superLines);
    
    					processWrite(writer, aticle);
    					System.out.println(newPath);
    					// if (idx > 50)
    					// break;
    
    				} catch (Exception e) {
    					// TODO: handle exception
    					e.printStackTrace();
    
    				} finally {
    					if (reader != null)
    						try {
    							reader.close();
    						} catch (IOException e1) {
    							// TODO Auto-generated catch block
    							e1.printStackTrace();
    						}
    					if (writer != null)
    						try {
    							writer.close();
    						} catch (IOException e) {
    							// TODO Auto-generated catch block
    							e.printStackTrace();
    						}
    				}
    			}
    		}
    	}
    
    	/**
    	 * 找到所有类,把文件名作为类名,并把文件 夹作为包,格式化类包
    	 * 
    	 * @param list
    	 * @param pathLen
    	 * @return
    	 */
    	private List<ClassName> listClass(List<String> list, int pathLen) {
    		// TODO Auto-generated method stub
    		List<ClassName> clsList = new ArrayList<JadFormat.ClassName>();
    		int pLen = pathLen;
    		for (int idxx = 0, size = list.size(); idxx < size; idxx++) {
    
    			String path = list.get(idxx);
    			if (path.endsWith(".java")) {
    				boolean needReplace = false;
    				String newPath = path.substring(pLen);
    				// String newPath = path;
    				ClassName cls = new ClassName();
    
    				cls.orgClass = newPath.substring(1, newPath.length() - 5)
    						.replace('\\', '.');
    				int len = newPath.length();
    				int idx = 0;
    				char c = newPath.charAt(idx);
    				StringBuilder sb = new StringBuilder();
    				int dogCount = -1;
    				while (idx < len) {
    					char lastc = c;
    					int count = 0;
    					while (idx < len && (c = newPath.charAt(idx)) != '\\') {
    						sb.append(c);
    						count++;
    						lastc = c;
    						idx++;
    					}
    
    					if (count == 1) {
    						sb.append(lastc).append(lastc);
    						needReplace = true;
    					}
    
    					if (idx >= len)
    						break;
    					else {
    						sb.append(c);
    						idx++;
    						dogCount++;
    					}
    
    				}
    				if (needReplace) {
    					newPath = sb.deleteCharAt(0).toString();
    					newPath = newPath.replace('\\', '.');
    
    					cls.count = dogCount;
    					cls.regClass = "(^| |\\)|\\(|\\[|=|!)"
    							+ cls.orgClass.replace(".", "\\.")
    							+ "(;| |\\)|,|\\.|\\[|$)";
    					cls.length = newPath.length() - 5;
    					cls.packegedClass = newPath.substring(0, cls.length);
    					clsList.add(cls);
    				}
    			}
    
    		}
    		Collections.sort(clsList);
    		return clsList;
    	}
    
    	/**
    	 * 把文件路径换成新的文件路径 按修改的类包名
    	 * 
    	 * @param newPath
    	 * @return
    	 */
    	private String getNewSrcPath(String newPath) {
    		// TODO Auto-generated method stub
    		int len = newPath.length();
    		int idx = 0;
    		char c = newPath.charAt(idx);
    		StringBuilder sb = new StringBuilder();
    		// sb.append(c);
    		while (idx < len) {
    
    			char lastc = c;
    			int count = 0;
    			while (idx < len && (c = newPath.charAt(idx)) != '\\') {
    				sb.append(c);
    				count++;
    				lastc = c;
    				idx++;
    			}
    
    			if (count == 1)
    				sb.append(lastc).append(lastc);
    
    			if (idx >= len)
    				break;
    			else {
    				sb.append(c);
    				idx++;
    			}
    
    		}
    		return sb.toString();
    	}
    
    	/**
    	 * 就是把一些要注释的注释的注释掉,把包名中有一个字母包名的变成三个同字母
    	 * @param line
    	 * @param aticle
    	 * @param returnLines
    	 * @param superLines
    	 * @throws IOException
    	 */
    	private void processModify(String line, List<String> aticle,
    			List<LineBean> returnLines, List<LineBean> superLines)
    			throws IOException {
    		Pattern pattern;
    		Matcher m = null;
    
    		String lineTrim = line.trim();
    
    		// ######## 注释的
    		if (lineTrim.startsWith("//")) {
    			lineNum++;
    			aticle.add(line);
    			return;
    		}
    
    		// ######## 要注释的
    		if (line.equals("        return;") || lineTrim.startsWith("JVM INSTR")
    				|| lineTrim.equals("exception;") || lineTrim.equals("i;")
    				|| lineTrim.startsWith("throw exception")) {
    			lineNum++;
    			aticle.add("//" + line);
    			return;
    		}
    
    		// ######## 导入的
    		if (line.startsWith("import ")) {
    			boolean find = false;
    			pattern = Pattern.compile("(\\.[a-z]\\.)|( [a-z]\\.)");
    			do {
    				m = pattern.matcher(line);
    				find = m.find();
    				if (find) {
    					String s = m.group();
    					String aaa = s.substring(1, 2);
    					aaa = s.substring(0, 1) + aaa + aaa + aaa + ".";
    
    					line = m.replaceFirst(aaa);
    				}
    			} while (find);
    
    			lineNum++;
    			aticle.add(line);
    			return;
    		}
    
    		// ######## package
    		if (line.startsWith("package ")) {
    			boolean find = false;
    			pattern = Pattern.compile("(\\.[a-z](\\.|;))|( [a-z]\\.)");
    			do {
    				m = pattern.matcher(line);
    				find = m.find();
    				if (find) {
    					String s = m.group();
    					String aaa = s.substring(1, 2);
    					aaa = s.substring(0, 1) + aaa + aaa + aaa
    							+ s.substring(2, 3);
    					;
    
    					line = m.replaceFirst(aaa);
    				}
    			} while (find);
    
    			lineNum++;
    			aticle.add(line);
    			return;
    		}
    
    		// ######## 加逗号的
    		// || lineTrim.startsWith("break;")
    		// lineTrim.startsWith("continue;")
    		if (lineTrim.startsWith("break MISSING_BLOCK")
    				|| lineTrim.startsWith("break ")
    				|| lineTrim.startsWith("continue; ")
    				|| lineTrim.startsWith("break; /* Loop/switch")) {
    			lineNum++;
    			aticle.add("//" + line);
    			lineNum++;
    			aticle.add("\r\n");
    			lineNum++;
    			aticle.add(";");
    			return;
    		}
    
    		// ######## 跳到的
    		if (line.startsWith("_")) {
    			pattern = Pattern.compile("^\\_[a-zA-Z0-9]+\\d+\\:$");
    			m = pattern.matcher(line);
    			if (m.find()) {
    				lineNum++;
    				aticle.add("//" + line);
    				return;
    			}
    		}
    
    		// ########### 把类包修改
    		line = modifyPkg(line, aticle);
    
    		// ######## if goto的
    		if (lineTrim.startsWith("if")) {
    			pattern = Pattern
    					.compile("if\\(true\\) goto \\_[a-zA-Z0-9]+\\d+; else goto \\_[a-zA-Z0-9]+\\d+");
    			m = pattern.matcher(line);
    			if (m.find()) {
    				lineNum++;
    				aticle.add("//" + line);
    				return;
    			}
    		}
    
    		// ######## goto else 的
    		pattern = Pattern
    				.compile("goto \\_[a-zA-Z0-9]+\\d+; else goto \\_[a-zA-Z0-9]+\\d+");
    		m = pattern.matcher(line);
    		if (m.find()) {
    			lineNum++;
    			aticle.add(line.substring(0, m.start()));
    			lineNum++;
    			aticle.add("\r\n");
    			lineNum++;
    			aticle.add("//" + m.group());
    			lineNum++;
    			aticle.add("\r\n");
    			lineNum++;
    			aticle.add(";");
    			return;
    		}
    
    		// ######## goto 的
    		pattern = null;
    		m = null;
    		pattern = Pattern.compile("goto( \\_[a-zA-Z0-9]+\\d+)+");
    		m = pattern.matcher(lineTrim);
    		if (m.find()) {
    			lineNum++;
    			aticle.add("//" + line);
    			return;
    		}
    
    
    		// ### exception
    		pattern = null;
    		m = null;
    		pattern = Pattern.compile("^exception\\d*;$");
    		m = pattern.matcher(lineTrim);
    		if (m.find()) {
    			lineNum++;
    			aticle.add("//" + line);
    			return;
    		}
    
    		// ######## 一个变量放一行的。
    		pattern = null;
    		m = null;
    		pattern = Pattern.compile("^[a-zA-Z0-9]+;$");
    		m = pattern.matcher(lineTrim);
    		if (m.find()) {
    			if (lineTrim.indexOf("continue") != -1
    					|| lineTrim.indexOf("break") != -1)
    				;
    			else {
    				lineNum++;
    				aticle.add("//" + line);
    				return;
    			}
    		}
    
    		// ####### a/a/a/a/a/a/dd.getName()
    		pattern = null;
    		m = null;
    		pattern = Pattern.compile("\\b([a-z]+/){2,}[a-zA-Z]+\\b");
    		m = pattern.matcher(line);
    		if (m.find()) {
    			boolean find = false;
    			String oldLine = line;
    			String region = m.group();
    			line = region;
    			pattern = Pattern.compile("(/[a-z]/)|(\\b[a-z]/)");
    			int start = 0;
    			boolean found = false;
    			do {
    				m = pattern.matcher(line);
    				find = m.find(start);
    				if (find) {
    					found = true;
    					String s = m.group();
    					String aaa = "";
    					if (s.length() > 2) {
    						aaa = s.substring(1, 2);
    						aaa = s.substring(0, 1) + aaa + aaa + aaa + ".";
    					} else {
    						aaa = s.substring(0, 1);
    						aaa = aaa + aaa + aaa + ".";
    					}
    					line = m.replaceFirst(aaa);
    					start = m.end();
    				}
    			} while (find);
    
    			// if (found) {
    			lineNum++;
    			aticle.add("//" + oldLine);
    			lineNum++;
    			aticle.add("\r\n");
    			if (line.indexOf("java") != -1)
    				line = line.replace('/', '.');
    			line = oldLine.replace(region, line + ".class");
    
    			lineNum++;
    			aticle.add(line);
    			return;
    			// } else
    			// line = oldLine;
    
    		}
    
    		// ######## return
    		if (lineTrim.startsWith("return ")) {
    			lineNum++;
    			aticle.add("//" + line);
    
    			// System.out.println(aticle.get(aticle.size()-1));
    			LineBean lineBean = new LineBean();
    			lineBean.content = line;
    			lineBean.number = lineNum;
    			returnLines.add(lineBean);
    			return;
    		}
    
    		// ######## super
    		if (lineTrim.equals("super();")) {
    			lineNum++;
    			aticle.add("//" + line);
    
    			LineBean lineBean = new LineBean();
    			lineBean.content = line;
    			lineBean.number = lineNum;
    			superLines.add(lineBean);
    			return;
    		}
    
    		lineNum++;
    		aticle.add(line);
    
    	}
    
    	/**
    	 * 把局部变量移到最前,return移动最后,super()移动到最前。
    	 * @param writer
    	 * @param aticle
    	 * @param returnLines
    	 * @param superLines
    	 * @throws IOException
    	 */
    	private void preWrite(BufferedWriter writer, List<String> aticle,
    			List<LineBean> returnLines, List<LineBean> superLines)
    			throws IOException {
    
    		int rtSize = returnLines.size();
    		int atsize = aticle.size();
    		int lastNum = atsize;
    
    		// ####### 上是个变量的
    		for (int idx = 0; idx < atsize; idx++) {
    			String line = aticle.get(idx);
    			if (line.indexOf("JVM INSTR ") != -1) {
    				aticle.set(idx - 2, "//" + aticle.get(idx - 2));
    			}
    		}
    
    		// ############# return
    		for (int idx = rtSize - 1; idx >= 0; idx--) {
    			LineBean rt = returnLines.get(idx);
    			int last = rt.number;
    			int bigCount = 0;
    			aticle.get(rt.number);
    
    			boolean find = false;
    			for (int num = last + 1; num < lastNum; num++) {
    				String line = aticle.get(num).trim();
    				if (!line.startsWith("//"))
    					for (int i = 0, len = line.length(); i < len; i++) {
    						char c = line.charAt(i);
    						if (c == '{')
    							bigCount++;
    						else if (c == '}')
    							bigCount--;
    					}
    				if (bigCount < 0) {
    					aticle.set(num, rt.content + "\r\n" + aticle.get(num));
    					find = true;
    					break;
    				}
    			}
    			lastNum = rt.number;
    
    			if (!find)
    				System.out.println(rt.content);
    		}
    
    		// 往上找super()
    		int spSize = superLines.size();
    		for (int idx = 0; idx < spSize; idx++) {
    			LineBean rt = superLines.get(idx);
    			int bigCount = 0;
    			boolean find = false;
    			for (int num = rt.number - 1; num > 0; num--) {
    				String line = aticle.get(num).trim();
    
    				if (!line.startsWith("//"))
    					for (int i = 0, len = line.length(); i < len; i++) {
    						char c = line.charAt(i);
    						if (c == '{')
    							bigCount--;
    						else if (c == '}')
    							bigCount++;
    					}
    				if (bigCount < 0) {
    					aticle.set(num, aticle.get(num) + "\r\n" + rt.content);
    					find = true;
    					break;
    				}
    			}
    			if (!find)
    				System.out.println(rt.content);
    		}
    
    		// #######局部变量移到最前
    		moveArgs(aticle, atsize);
    		// System.out.println(atsize);
    		atsize = aticle.size();
    		// System.out.println(atsize+" ==============");
    
    	}
    
    	/**
    	 * 重新写到文件
    	 * @param writer
    	 * @param aticle
    	 * @throws IOException
    	 */
    	private void processWrite(BufferedWriter writer, List<String> aticle)
    			throws IOException {
    		// TODO Auto-generated method stub
    		int atsize = aticle.size();
    		StringBuilder sb = new StringBuilder();
    		for (int idx = 0; idx < atsize; idx++) {
    			String line = aticle.get(idx);
    			sb.append(line);
    		}
    		writer.write(sb.toString());
    	}
    
    	/**
    	 * 修改类包名
    	 * 
    	 * @param line
    	 * @param aticle
    	 * @return
    	 */
    	private String modifyPkg(String line, List<String> aticle) {
    		// TODO Auto-generated method stub
    
    		int clsCount = 0;
    		String oldLine = line;
    		for (int clsIdx = this.clsList.size() - 1; clsIdx >= 0; clsIdx--) {
    			int start = 0;
    			ClassName cls = clsList.get(clsIdx);
    			Pattern pattern = Pattern.compile(cls.regClass);
    
    			while (true) {
    				Matcher m = pattern.matcher(line);
    				if (m.find(start)) {
    					start = m.end();
    					String region = m.group();
    					String newRegion = region.replace(cls.orgClass,
    							cls.packegedClass);
    					// System.out.println(Matcher.quoteReplacement(region));
    					// line = line.replaceFirst(region,
    					// Matcher.quoteReplacement(newRegion));
    					line = m.replaceFirst(newRegion);
    					clsCount++;
    
    				} else
    					break;
    			}
    			if (clsCount > 5)
    				break;
    		}
    		if (clsCount > 0) {
    			lineNum++;
    			aticle.add("//" + oldLine);
    			lineNum++;
    			aticle.add("\r\n");
    		}
    		return line;
    	}
    
    	/**
    	 * 局部变量移到最前
    	 * @param aticle
    	 * @param atsize
    	 */
    	private void moveArgs(List<String> aticle, int atsize) {
    		// TODO Auto-generated method stub
    
    		List<ArgsList> argsSet = new ArrayList<ArgsList>();
    
    		// #######局部变量移到最前
    		int pos = 0;
    		boolean start = false;
    		Pattern pattern = Pattern
    				.compile("^(((public)|(protected)|(private))( [a-zA-Z\\.]+)? [a-zA-Z]+\\(.+\\))");
    		Pattern patternArgs = Pattern
    				.compile("^[a-zA-Z\\.]{1,25} [a-zA-Z0-9]{1,15};$");
    		int bigCount = 0;
    		ArgsList argsList = null;
    		for (int idx = 0; idx < atsize; idx++) {
    			String line = aticle.get(idx);
    			String lineTrim = line.trim();
    
    			if (!lineTrim.startsWith("//")) {
    				Matcher m = pattern.matcher(lineTrim);
    				// 找到方法开头
    				if (m.find()) {
    					if (lineTrim.indexOf(" class") != -1
    							|| lineTrim.indexOf(" interface") != -1
    							|| lineTrim.indexOf(";") != -1)
    						continue;
    
    					// System.out.println(line);
    					// 找到 {
    					boolean f = false;
    					while (true) {
    						if (lineTrim.startsWith("//")) {
    							idx++;
    							line = aticle.get(idx);
    							lineTrim = line.trim();
    							continue;
    						}
    						for (int idxx = 0, len = lineTrim.length(); idxx < len; idxx++) {
    							char c = lineTrim.charAt(idxx);
    							if (c == '{') {
    								bigCount++;
    								f = true;
    							} else if (c == '}')
    								bigCount--;
    						}
    
    						if (f && bigCount != 1)
    							throw new RuntimeException("bad code start!");
    						if (bigCount == 1) {
    							pos = idx;
    							start = true;
    							argsList = new ArgsList();
    							argsList.pos = pos;
    							argsSet.add(argsList);
    							break;
    						}
    						idx++;
    						line = aticle.get(idx);
    						lineTrim = line.trim();
    					}
    
    				} else if (start) {
    
    					// 找局部变量定义
    					boolean f = false;
    					while (true) {
    						if (lineTrim.startsWith("//")) {
    							idx++;
    							line = aticle.get(idx);
    							lineTrim = line.trim();
    							continue;
    						}
    						for (int idxx = 0, len = lineTrim.length(); idxx < len; idxx++) {
    							char c = lineTrim.charAt(idxx);
    							if (c == '{') {
    								bigCount++;
    							} else if (c == '}') {
    								bigCount--;
    								f = true;
    							}
    						}
    
    						if (f && bigCount < 0)
    							throw new RuntimeException("bad code end!");
    						// 到}了
    						if (bigCount == 0) {
    							pos = idx;
    							start = false;
    							break;
    						}
    
    						// 找局部变量定义
    						m = patternArgs.matcher(lineTrim);
    						if (m.find()) {
    							// list.add line;
    							// System.out.println(pos + "  " + line);
    							aticle.set(idx, "//" + line);
    							argsList.argsList.add("\r\n" + line);
    						}
    
    						idx++;
    						line = aticle.get(idx);
    						lineTrim = line.trim();
    					}
    
    				}
    
    			}
    		}
    
    		// 把找的加到列表中
    		List<String> newAticle = new ArrayList<String>();
    		int setSize = argsSet.size();
    		int count = 0;
    		for (int idx = 0; idx < setSize; idx++) {
    			ArgsList argsList2 = argsList = argsSet.get(idx);
    			if (argsList2 != null) {
    				while (count <= argsList2.pos) {
    					newAticle.add(aticle.get(count));
    					count++;
    				}
    				newAticle.addAll(argsList2.argsList);
    				// count = newAticle.size();
    			}
    		}
    		while (count < atsize) {
    			newAticle.add(aticle.get(count));
    			count++;
    		}
    		aticle.clear();
    		aticle.addAll(newAticle);
    
    	}
    
    	/**
    	 * 变量声明列表,用来把变量放在方法内的前面。
    	 * @author Administrator
    	 *
    	 */
    	class ArgsList {
    		int pos;
    		List<String> argsList = new ArrayList<String>();
    	}
    
    	/**
    	 * java文件的行
    	 * @author Administrator
    	 *
    	 */
    	class LineBean {
    		int number;
    		String content = null;
    	}
    
    	/**
    	 * java文件名
    	 * @author Administrator
    	 *
    	 */
    	class ClassName implements Comparable {
    		int count = 0;
    		int length = 0;
    		String packegedClass;
    		String orgClass;
    		String regClass;
    
    		@Override
    		public int compareTo(Object o) {
    			// TODO Auto-generated method stub
    			ClassName odj = (ClassName) o;
    			if (this.count > odj.count)
    				return 1;
    			else if (this.count < odj.count)
    				return -1;
    			else if (this.length > odj.length)
    				return 1;
    			else
    				return -1;
    		}
    
    		@Override
    		public String toString() {
    			// TODO Auto-generated method stub
    			return packegedClass + " " + count + " " + length + " " + regClass;
    		}
    	}
    }
    



    展开全文
  • http://blog.csdn.net/chruan/article/details/8484783

    http://blog.csdn.net/chruan/article/details/8484783

    展开全文
  • jad反编译心得

    2019-04-08 13:54:28
    工程文件反编译后,首先查看资源文件与配置文件格式是否对的,将src下的R文件放入gen下,修正src下源文件的编码错误. R.styleable:R下文件的编码错误通常是由资源文件引起的,修改资源文件 通常反编译后类型为...
  • Delphi Decompiler v1.1.211b Delphi反编译工具 三、 DeDe 3.5原版 反Delphi、 C++ bulid。(DeDe3.2004源码下载) DeDe3.50.04 Fix加强版 DEDE 3.50.4的修改版(超强版:P) by DarkNess0ut 01.修改了Title和...
  • ApkIDE——安卓反编译

    2014-10-19 10:52:47
    解决部份apk(如无Icon、无Features等特性的apk)反编译后出现错误的问题。 针对上网本小屏幕(屏幕分辨率高度600的)调整搜索面板中控件尺寸来显示全部。 同时为搜索、替换文本框增加一个扩展编辑器。 搜索结果面板...
  • Android apk反编译心得

    千次阅读 2012-08-10 17:45:25
    工程文件反编译后,首先查看资源文件与配置文件格式是否对的,将src下的R文件放入gen下,修正src下源文件的编码错误. R.styleable:R下文件的编码错误通常是由资源文件引起的,修改资源文件   通常...
  • android 反编译心得

    2014-06-11 09:55:38
    工程文件反编译后,首先查看资源文件与配置文件格式是否对的,将src下的R文件放入gen下,修正src下源文件的编码错误. R.styleable:R下文件的编码错误通常是由资源文件引起的,修改资源文件  &lt;declare-...
  • 本软件集成了Android开发中常见的一些编译/反编译工具,方便用户对Apk进行逆向分析,提供Apk信息查看功能.目前主要功能包括(详细使用方法见使用说明): ...1.点击浏览打开选择相应功能文件,如果格式错误将无法选...
  • $gwx is not defined 报错的问题 由于微信小程序内部升级的原因,最近github上的wxappUnpacker小程序反编译工具已...导致 page-frame.html 文件无法反编译,无法重新生成wxss格式文件。 经过笔者对小程序混淆源码的...
  • csb2csdcocostudio csb编成csd建完工程搜了遍才发现已经有大佬实现了csb2csd。可惜在windows系统折腾了几遍竟然没法编译成功(linux上一遍过了)。...如遇到转换过程报错或转换后格式错误的,欢迎反馈并尽量提...
  • - 应用程序可以使用并行的方法(线程) ,用于读取SWF /反编译的要快 禁止反编译 - 作为反编译,可以禁用,因此只有P码是可见的。这可如反编译需要很多时间例如可以使用。 添加FFDec到SWF文件上下文菜单 - 在...
  • JPEXS Free Flash Decompiler中文版是一款基于 Java 平台运行的免费 Flash 反编译工具。在使用 JPEXS Free Flash Decompiler 之前你需要确认你的系统中是否安装的有 Java,如果没有可以下载安装。 要求Windows中安装...
  • 简直了,mysql从linux移植到windows,编译通过,甚至也能正常插入数据,但是查找的时候就是找不到,mysql也不返回错误,找了一整天,代码怎么查都没问题,况且在linux平台运行完美 最后,忽然想仔细看看warning,...
  • 代码混淆说简单的其实就是为了防止别人反编译你的源代码,因为JAVA程序比较容易被反编译,所以如果...不过代码混淆还是不能阻止被反编译xml格式的布局文件,混淆的是JAVA文件。但是混淆后的代码如果经验多的话,可是...
  • UTF-8带BOM格式与UTF-8无BOM格式转换

    万次阅读 2017-10-28 19:59:27
    Qt在windows下使用VS建立的工程文件转到Linux环境下编译报出大量错误过来也一样,原来是编码的问题。 VS采用UTF-8 BOM格式编码,而Linux下采用UTF-8无BOM格式。BOM用来标记编码的字节顺序,但是由于编码字节顺序...
  • 掘安杯-python文件格式

    2019-04-19 23:41:16
    反编译也失败。 于是看了一眼wp。发现文件格式文件出了问题。 使用winhex查看文件格式 pyc文件格式前4个字节是magicnumber为03f30d0a 之后四个字节是时间图示为00000063 然后就是PyCodeObject对象了。首先是对象...
  • 放入winhex中改了文件头,再反编译没用。。。然后发现一些列东西与网上的pyc文件格式不同。。之后就改格式放入工具,改放入工具。重复了n次。。就放弃了这道题。 解题过程 赛后看了wp,才知道不同版本python格式还是...
  •  情形1——16位实模式下,通过int 13h将软盘上的kernel.elf文件加载到80000h地址处,找到elf的入口地址,然后跳进去,结果代码执行错误,输入"u/10 entry"(entry是在调试时候慢慢算出来的)汇编一
  • 1.查看Win32可执行和相关文件的资源(*.exe,*.dll,*.cpl,*.ocx),在已编译和反编译格式下都可以。2.提取(保存)资源到文件(*.res)格式,作为二进制,或作为反编过的译资源脚本或图像。3.修改(替换)可执行文件的资源...
  • 第16章 汇编其他格式的文件 319 16.1 汇编PDF文件 319 16.1.1 Adobe Acrobat为那些不循规蹈矩的人提供了什么 320 16.1.2 修改Adobe Acrobat 323 16.1.3 使用打印屏幕功能实施破解 324 16.1.4 尽量多懂几种...
  • 第一方法: 导致F11不能进入源代码,出现上述错误。在网上找到解决办法: 工具->选项->调试->常规->去掉“要求...全选CPP文件内容,选择 “编辑”-“高级”-“设置选定内容的格式”,保存,重新编译,OK搞定
  • jadx-gui-1.1.0.exe

    2020-06-30 11:09:56
    打开之后,你可以选择一个 apk、dex、jar、zip、class、aar 文件,可以看到 jadx 支持的格式还是挺多的,基本上编译成 Java 虚拟机能识别的字节码,它都可以进行反编译。除了选择一个文件,还可以直接将 apk 文件,...
  • ILSppy 是一个开源的 .NET 反编译工具。目前,ILSpy 6.0 Preview 1 已发布,该版本更新内容如下: 新的功能 添加搜索功能 资源(#1707) 组件(#1708) 命名空间(#1736) 将装配体列添加到搜索窗格(#1690)...
  • 2020数字中国虎符CTF-PWN-count writeup

    千次阅读 2020-04-19 17:40:15
    在运行时可以发现,无法执行二进制文件: 可执行文件格式错误 但是程序可以进行IDA反编译 找到sub_400990函数 __int64 sub_400990() { unsigned int v0; // w0 __int64 v1; // x0 __int64 v2; // x0 __int64 v3; ...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 138
精华内容 55
关键字:

反编译格式错误