![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
反编译
dianyueneo
这个作者很懒,什么都没留下…
展开
-
enum的反编译
源码: public enum Type { SELECT, UPDATE, INSERT, DELETE };反编译后:public static final class Type extends Enum { public static final Type SELECT; public static final T转载 2012-07-26 10:31:04 · 2032 阅读 · 2 评论 -
关于synthetic标记
有synthetic标记的field和method是class内部使用的,正常的源代码里不会出现synthetic field。小颖编译工具用的就是jad.所有反编译工具都不能保证完全正确地反编译class。所以你不能要求太多。 下面我给大家介绍一下synthetic 下面的例子是最常见的synthetic field 12345678910111213转载 2012-07-26 11:25:48 · 635 阅读 · 0 评论 -
do...break...while >>> while
源码: Script script = m_script; try { while(script.hasMoreChars()) { char ch = script.nextChar(); switch(ch) {转载 2012-07-26 11:29:15 · 530 阅读 · 0 评论 -
关于Object与String
源码: public NewMemberWelcomeAnnounce (String string, Component component, boolean fInit) { super(string, component, false); if (fInit) __init();转载 2012-07-26 10:49:13 · 394 阅读 · 0 评论 -
if内有break,break一般会成对
源码: if(fReentrant) { aoKey = SimpleEnumerator.toArray(iterator(), ao != null ? ao : OverflowMap.EMPTY_ARRAY); }else{ gate.close(-1L);转载 2012-07-26 11:23:02 · 2354 阅读 · 0 评论 -
关于goto _L2; else goto _L1
源码: Script script = m_script; int iLine = script.getLine(); int ofInLine = script.getOffset(); try { ParsePosition pos; String sData;转载 2012-07-26 11:28:05 · 2011 阅读 · 0 评论 -
read(Reader reader)
1234567891011121314151617181920 int BLOCK; char ach[]; CharArrayWriter writer; BLOCK = 1024; ach = new char[BLOCK]; writer = new CharArrayWriter(BL转载 2012-07-27 10:09:05 · 1255 阅读 · 0 评论 -
经典的if..break to if else
源码: XmlElement xmlStub; List list; if(isAnonymous()) return fromXml(xml); if(isAttribute()) { XmlValue xmlValue = findAttribute(xml);转载 2012-07-27 10:09:26 · 1148 阅读 · 0 评论 -
Iterator equals比较的逻辑误区
public boolean equals(Object o) { Iterator iterThis; Iterator iterThat; if(!(o instanceof Map)) break MISSING_BLOCK_LABEL_84; Ma转载 2012-07-27 10:08:29 · 950 阅读 · 0 评论 -
关于!$assertionsDisabled
static final boolean $assertionsDisabled; /* synthetic field */ if(!$assertionsDisabled && ((WeakReference)oIterActive).get() != iter) throw new AssertionError(); s转载 2012-07-27 10:08:45 · 2153 阅读 · 0 评论 -
if+break+Exception
源码: Method methodClone; if (o == null) return null; if (!isCloneRequired()) return o; methodClone = getCloner(); if (methodClone != null) { try { return methodClone.invoke(o转载 2012-07-27 10:09:15 · 539 阅读 · 0 评论 -
java 枚举类型分析
最近做android开发,需要用到枚举值,这样可以连续赋值,我按之前c++那样书写,如下所示:[java] view plaincopypublic enum ColorSelect { RED_BAGE = 0, GREEN_BAGE, BLUE_BAGE;转载 2012-12-25 15:46:44 · 901 阅读 · 0 评论 -
do...while to for
源码: for(Enumeration e = tblTest.keys(); e.hasMoreElements();) { String key = (String)e.nextElement(); if(m_tblCache.containsKey(key))转载 2012-07-26 10:41:10 · 403 阅读 · 0 评论 -
关于JVM INSTR swap赋值
源码:return new Token(_$2.substring(0, _$4()),_$3,_$3 + _$4());反编译后: Token _$27() { JVM INSTR new #15 ; JVM INSTR dup ; JVM INSTR swap ; _$2.substring(0,转载 2012-07-26 10:36:32 · 754 阅读 · 0 评论 -
关于if+for+break
源码: if(getThreadGate().isActiveThread() || hasListeners()) { for(Iterator iter = keySet().iterator(); iter.hasNext(); iter.remove()) iter.next(); }els转载 2012-07-26 11:21:39 · 678 阅读 · 0 评论 -
关于stream.read(ab, 0, BLOCK)
源码: int cb; try{ while((cb = stream.read(ab, 0, BLOCK)) > 0){ streamBuf.write(ab, 0, cb); } }catch(EOFException e){ }反编译后:_L2:转载 2012-07-26 10:47:51 · 435 阅读 · 0 评论 -
关于Loop/switch isn't completed
源码: while(iterThat.hasNext()) sNameThat = (String)iterThat.next();反编译后: if(!iterThat.hasNext()) continue; /* Loop/switch isn't completed */ sNameThat =转载 2012-07-26 11:15:20 · 1063 阅读 · 0 评论 -
关于while与do...while...
源码:while (iter.hasNext()) { xml = (com.tangosol.run.xml.XmlElement) iter.next(); if (xml.getSafeElement("scheme-name").getString().equals(sSchemeName)) { return (com.tangos转载 2012-07-26 11:16:28 · 491 阅读 · 0 评论 -
循环中断
源码: while(++cAttempts < 255) { Map mapStatus = getStatusMap(); synchronized(mapStatus) { status = (Status)mapStatus.get(oKey); if(status == nu转载 2012-07-26 11:19:24 · 583 阅读 · 0 评论 -
关于break MISSING_BLOCK_LABEL成对出现
源码:ThreadGate gate; gate = getThreadGate(); if (!gate.isActiveThread()) { gate.enter(-1L); evict(((Map) (getFrontMap()))); evict(getBackMap()); processDeferredEvents(true); gate.e转载 2012-07-26 11:20:24 · 5270 阅读 · 0 评论 -
关于用不存在的类定义
发现com.XXX.XXX....并不存在,此时Validator应该是本类的内部类.删除com.XXX.XXX. com.XXX.XXX.Validator __m_Validator; ....转载 2012-07-26 11:24:00 · 438 阅读 · 0 评论 -
关于class$java$lang$Character
源码:map.put("Character", java.lang.Character.class);反编译后:map.put("Character", XmlBean.class$java$lang$Character != null ? ((Object) (XmlBean.class$java$lang$Character)) :转载 2012-07-26 11:26:50 · 699 阅读 · 0 评论 -
关于JVM INSTR iadd(混淆后的反编译)
源码: _$4 = _$4+i;反编译后: void _$3(int i) { this; this; JVM INSTR swap ; _$4; i; JVM INSTR iadd ; _$4; }转载 2012-07-26 10:34:44 · 778 阅读 · 0 评论 -
关于!$assertionsDisabled
源码:assert ((WeakReference)oIterActive).get() == iter;//注意条件相反反编译后:static final boolean $assertionsDisabled; /* synthetic field */ if(!$assertionsDisabled && ((WeakReference)oIterAc转载 2012-07-26 10:42:27 · 2880 阅读 · 1 评论 -
关于InputStream与super,final
源码:public static InputStream getInputStream(final DataInput in) { if(in instanceof InputStream) return (InputStream)in; else return new InputStream() {转载 2012-07-26 11:12:00 · 581 阅读 · 0 评论 -
关于switch
源码:boolean fCompressable; com.tangosol.io.WriteBuffer.BufferOutput out; if (dfl != 0.0D || !isSkippable()) { fCompressable = isCompressable(); encodePosition(iPos); out = m_out; if转载 2012-07-26 11:13:58 · 587 阅读 · 0 评论 -
android反编译-反编译工具和方法
前言开发过程中有些时候会遇到一些功能,自己不知道该怎么做,然而别的软件里面已经有了,这个时候可以采用反编译的方式,解开其他的程序,来了解一些它的做法,同时啊,还可以借鉴别人的软件结构,资源文件,等等,哈哈。那我就来讲解一些关于反编译相关的知识,主要分三篇,第一篇介绍反编译的工具和方法,第二篇,介绍smali的语法,第三篇介绍如何防止反编译,主要通过这几篇文章,了解如何去做反编译和代码加固。转载 2015-08-11 13:03:10 · 4936 阅读 · 0 评论