内存提取SWF,破解doswf方法概述
参考文献:
http://blog.ceflash.com/%E5%86%99%E7%82%B9swf%E4%BA%8C%E8%BF%9B%E5%88%B6%E7%9A%84%E4%B8%9C%E8%A5%BF/
http://m.blog.csdn.net/blog/crazyingBird/7173445
http://bbs.9ria.com/thread-173116-1-1.html
http://my.oschina.net/zhyuliang/blog/207175
http://stackoverflow.com/questions/13856300/converting-hexadecimal-to-byte-in-java
步骤:
1. 运行HxD,打开IE的进程,就是加载了flash那个。
2. 到达二进制的最后一个位置,向前查找FWS。
3. 找到之后,简单看下内容,符合
FWS.‰œ..x.._... .....D.....C.ÿÿÿ?._œ..ˆ.'<.getSWFVersion.timeout.target.ASSetPropFlags.isConnected.ASnat
这样的,就是一个有效开头。
4. 向后找40 00 00 00. 然后整段复制到剪贴板。
5. 使用Java加载这段16进制,转为二进制:
String hello = FileUtils.readFileToString(new File("E:\\Baiduyun\\侠物语\\新建文本文档.txt")); List<Byte> b = new ArrayList<Byte>(); for (String bbb : hello.split(" ")) { b.add((Byte) (byte) (int) (Integer.parseInt(bbb, 16) & 0xFF)); } byte[] bbbb = new byte[b.size()]; for (int i = 0; i < bbbb.length; i++) bbbb[i] = b.get(i); FileUtils.writeByteArrayToFile(new File("E:\\Baiduyun\\侠物语\\GameLoader.crack.swf"), bbbb);
6. 用asv2010打开,完成破解。