导航:首页 > 源码编译 > 反编译ref

反编译ref

发布时间:2025-03-18 08:22:15

‘壹’ 怎么将vfp项目反编译成代码

ReFox 功能很强大,我一般用它来保护我的程序。
Decompile 你的 EXE 后,会产生一个与你 EXE 同主文件名的 .ref 文件,用文本打开这个文件,做为存档应该是够用了,但不能直接运行。

‘贰’ java 学习方法或捷径--求教

JAVA同其它任何一门编程语言一样,都是要从浅到深的过程,如果你想愉快的学习这门语言的话,给你看篇文章,记住JAVA学习要有耐心!下面的文章也许对你有帮助
1. Java语言基础
谈到Java语言基础学习的书籍,大家肯定会推荐Bruce Eckel的《Thinking in Java》。它是一本写的相当深刻的技术书籍,Java语言基础部分基本没有其它任何一本书可以超越它。该书的作者Bruce Eckel在网络上被称为天才的投机者,作者的《Thinking in C++》在1995年曾获SoftwareDevelopment Jolt Award最佳书籍大奖,《Thinking in Java》被评为1999年Java World“最爱读者欢迎图书”,并且赢得了编辑首选图书奖。作者从1986年至今,已经发表了超过150篇计算机技术文章,出版了6本书(其中4本是关于C++的),并且在全世界做了数百次演讲。他是《Thinking in Java》、《Thinking in C++》、《C++ Inside & Out》《Using C++》和《Thinking in Patterns》的作者,同时还是《Black Belt C++》文集的编辑。他的书被读者称为“最好的Java参考书……绝对让人震惊”;“购买Java参考书最明智的选择”;“我见过的最棒的编程指南”。作者的非凡才华,极其跨越语言的能力,使作者被选为Java发展10年间与Java关系最密切的10个人物之一。

《Thinking in Java》讲述了Java语言的方方面面,很多Java语言的老手都评价“这是一本将Java语言讲得相当丑陋的书”。该书谈及了java语言的很多细节,每一个方面都是相当深刻的。通过本书你可以看到“丑陋的”java语言。

网络上关于java语言讲解的视频很多很多,其中不凡有垃圾。《翁恺—JAVA语言》可能是你学习java语言基础的唯一选择,该讲座基本按照《Thinking in Java》这本书讲解,其中不凡有翁老师的很多有意思的笑话。我很幸运学习就是从此视频开始的。内容包括30讲,我总共看了3遍。

不过,对于初学者我不太推荐使用《Thinking in Java》,我比较推荐Prentice Hall PTR 的《Core Java 2》国内称为《Java 2 核心技术》,目前是第七版。网络上大家都可以下载到电子版。Oreilly的《Java in a nutshell》也是一个不错的选择。读完以上两本后,你可以看看翁恺老师的视频,接着可以研究《Thinking in Java》了。

2. Java数据结构
市面上关于Java数据结构的书本身就很少很少。大致有APress 的《Java Collections》,Jones 和Bartlett 的《Data Structures in Java》、《Object-oriented Data Structures Using Java》以及Prentice Hall 出版的《Data Structures and Algorithms in Java》 (Dec 19, 2005)还有一本就是《Data Structures And Algorithms With Object-oriented Design Patterns In Java》。很幸运我的第一本英文书就是APress 的《Java Collections》(本书在国内可能根本就没有中文版――只能下载英文版了),很不错,讲得很有条例、很简单,是一本完完全全Java Collections API介绍的书籍,其中不凡有扩展API的例子。这是我推荐你学习java数据结构的唯一一本好书。其它的Jones 和Bartlett的那两本国内好像有一本中文版,想看你也可以看看。

在学习完API后,你可以看看java.util包中对应的类了。不过只有在学习过设计模式后你才有可能完全理解整个Java Collections Framework。Java Collections Framework使用了很多着名的设计模式如:迭代器(Iterator)模式,工厂方法模式、装饰器模式、适配器模式等等。通过研究java.util包中数据结构的源代码,你可以知道臭名昭着的Properties类的设计了,同时可能基本具备设计简单的数据结构的能力了。

所谓学习无止境,学习完Sun提供了Java Collections Framework后,你可以研究Apche的另一个Java Collections Framework,很有意思哦。互为补充的两个Framework。

在大家学习、研究Java Collections之前,我提示一下Java Collections主要包括以下三部分:接口(Interface)、实现(Implemention)和算法(Algorithm)。

1. 接口主要有List、Set、Queue和 Map。List 、Se t和Queue是 Collection接口的子接口。

2. 实现主要是实现这些接口的具体类。如实现List接口的ArrayList、LinkedList、Stack和Vector;实现Set接口的HashSet、TreeSet 和LinkedHashSet;实现Queue接口的PriorityQueue、SynchronousQueue等等;实现Map接口的HashMap、TreeMap、Hashtable、Properties、WeakHashMap等等。

3. 算法主要是由Arrays类和Collections类提供的,它是整个Java Collection Framework算法的核心。支持各种类型的排序,查找等常用操作。

Java Collections中包含两个版本的数据结构,主要是原先的支持同步的数据结构和后来不支持同步的数据结构。

Java Collection Framework在使用Comparator和Comparable接口支持排序。同时提供新旧两个版本的迭代器Iterator和Enumeraton,以及它们如何转换等等。

在java.util包中的Obserable接口和Observer类是考察者模式的核心。

……

3. Java IO
市面上关于IO的书籍也仅仅只有Oreilly出版社的两本,都是Elliotte Rusty Harold的着作。两本书的风格基本一致,推荐阅读是第一版的《Jvava I/O》,讲得比较浅显,内容相对比较集中,实例也很多。第二版今年5月国外才出版,很有幸我在网络上下载了第二版,讲得极其详细――726页的大块头(我化了两个星期),这次将NIO和IO和在一起,还包括J2ME部分的,不过串口、并口通信部分好像类库支持不够,自己不能实际操作。

与第一版的《Jvava I/O》一起的Oreilly还有一本《Jvava NIO》,也是很不错的哦。

大家在依次阅读完《Jvava I/O》以及《Jvava NIO》后,可以研究java.io包中的源代码了。在大家研究源代码前我给点提示:

Java的io包主要包括:

1. 两种流:字节流(byte Stream)和字符流(character stream),这两种流不存在所谓的谁代替谁、谁比谁高级之说,它们互为补充,只是侧重点不同而已。

2. 两种对称:1.字节流、字符流的对称;2.输入、输出的对称。

3. 一个桥梁:将字节流转变为字符流的InputStreamReader和OutputStreamWriter。

其中必须注意:

1. PipedInputStream和PipedOutputStrem是两个比较有趣的类。

2. 支持Buffered的流是我们经常使用的类。

3. 装饰器(Decorator)模式在java最着名的应用就是用于io的设计。仔细研究各个Filter流与具体流的关系,多看设计模式的书籍。相信你会有所所获。

4. 学习好io包,是研究net包,rmi包……的基础哦!

4 . Java数据库
数据库的书籍太多太多了,也是太烂太烂了!这方面的书我基本都研究过,推荐的你就看看Apress的《JDBC Recipes A Problem Solution Approach 》很不错,国外2005年底才出版,(国内好像没有中文版,不过出了中文版也不一定值得看――国内经常将国外的书翻译得一塌糊涂、不堪入目)不过我们真的很幸运,网络上有电子版的。值得一看。推荐我看的第一本比较满意的――Wiley出版的《Java Database Bible》,讲得很不错!Sun公司自己的关于JDBC API介绍的那一本《JDBC API Tutorial andRefernece》也不错。我第二本JDBC的就是研究的这套API。

不过目前这些书都是一些相对比较浮浅的API应用的书籍。有机会我会给大家带来介绍JDBC API以及JDBC实现内部细节的书!我尽快努力,同时希望得到大家的支持!

顺便给学习JDBC的朋友一点提示:

JDBC的学习和使用主要是这套API,其使用过程也是极其简单,下面是使用JDBC的一般流程:

1. 加载某个数据库的驱动(Driver类),通常使用Class.forName(“驱动的类名“);

2. 连接数据库――

Connection con = DriverManager.getConnection(url,username,password);

3. 得到会话――Statement stmt = con.createStatement();

4. 执行操作――Result rs = stmt.executeQuery(“SQL查询语句”);

5. 处理结果――

while(rs.next()){

String col1 = rs.getString(1);

……

}

简单吧!整个JDBC中可以变化的一般是:

1. 可以由Connection对象创建Statement、PreparedStatement和CallableStatement创建三种类型的Statement。

2. 可以创建多种类型的ResultSet:支持单向移动和个自由移动;可更新的和不可更新的;支持不同等级的交易的…..

3. 数据输入的批处理。

4. 结果集中特殊类型(Blob、Clob、Arrary和Ref、Struct)列的操作。

5. 这些特殊类型的录入数据库。

6. javax.sql包中特殊结果集(CachedRowSet、JdbcRowSet、WebRowSet)的操作。

7. 其它的就是一个DataSource了,也很简单!一个J2EE中的被管理对象

简单吧!相信大家很快就会征服JDBC。

5. Java 网络编程
网络编程――一个神秘的、充满挑战的方向。不过在谈Java网络编程之前首先感谢Sun公司的开发人员,因为它们天才的设想,充满智慧的架构,使广大java程序员学习java网络编程变得异常简单。

Java网络编程方面的书,我推荐O'Reilly的《Java Network Programming》,目前已经第三版了,以前的版本市面上肯定有!网络上早有第三版的电子版,国外2004年出版,706页哦!讲得很全,比较深入,太深入的可能由于Sun有些东西没有完全公开,所以也就不好讲了,有兴趣的可以下载看看!第二本还是O'Reilly 1998年出版的《Java distributed computing 》,基础部分写得比较详细,后面的实例还是值得研究的。

在大家阅读这些书之前,给大家一点提示:

java网络编程其实相对比较简单,入门也很快很快。java网络编程主要包括两个部分:1.Socket;2.URL部分。不过第二部分也完全建立在第一部分的基础上。

1. Socket包括客户端的Socket和服务器端的ServerSocket。还有就是DatagramSocket和DatagramPacket,它对应于UDP通信协议。 总之,Socket部分是建立其它高级协议的基础。

2. URL类是一个网络资源定位器,通常和具体的网络协议如HTTP,FTP,Telnet……相关。通过该类可以连接网络上的资源,通过其openStream可以以io包中的流(InputStream)的形式读取网络资源;通过其OpenConnection方法,可以打开一个连接,在此连接上可以不仅可以完成读的操作,还可以完成写的操作。

Java的网络编程大体包括以上两部分。网络编程和IO以及多线程部分非常密切,在学习此部分前大家一定对这两部分了解比较透彻。

学习了以上部分你可以研究java.net包中的与此相关的源代码了!研究所有的源代码还为时尚早。在整个net包中包含:ContentHandlerFactory、URLStreamHandlerFactory、URLStreamHandler、URLClassLoader等辅助类,它们构成了java.net网络编程的框架,通过研究其源代码,你不仅可以快速理解java.net包,还可以为以后扩展该包打下基础,甚至可以将此思维方式运用到自己的项目中。

到此为止你对java.net包应该才了解60%,还有一部分你可以使用JDecompiler之类的反编译软件打开你JDK安装目录下\jdkxxx\jre\lib目录中的rt.jar,用WinRAR之类的软件打开它的sun.net包,反编译所有的文件,它是URL类工作的细节。当研究完该sun.net包,你就会对整个网络编程很熟悉很熟悉了。

一切看起来我们已经对网络编程很精通了。其实不然,刚刚开始而已,要想深入,请继续吧!网络上很多优秀的网络编程库甚至软件可以为我们“添加功力”。如Apache的HttpCore和HTTPConnection 是两个和HTTP协议相关库;JGroups是研究分布式通信、群组通信的必读库;接着我们可以研究P2P的软件包,如Sun公司的JXTA,它可能是java平台点对点通信未来的标准哦!接着你可以研究成熟得不得了,使用极其广泛得P2P软件Azureus!www.sourceforge.net可以下载到!

千里之行始于足下!Just do it !(目前我也只研究了net包,其它的会在不久的将来继续深入。Sun公司因为某些原因没有公开net的其它实现细节,在其允许将其源代码以文字的形式加以研究,以及允许将其没有公开的实现写入书中时,我很希望能出一本java网络编程的书籍,以飧广大读者!!)

6. Servlet和JSP
Servlet、JSP的书也是满地都是!值得推荐的也仅仅两三本。实推Addison Wiley的《Servlets and JavaServer pages :The J2EE Technology Web Tier》,又是一本很厚的哦!国外2003年出版、784页,讲得比较全,例子也很多,特别是第八章Filter,举了几个不错的例子。其它所有我看到的关于Servlet和JSP的书都没有如此深入的!(可能有我没有看到而已)。O’reilly的《Java Servlet Programming》和《Java Server Pages》相对比较好懂一些,可以读读!

在大家学习Servlet和Jsp之前我还是要提醒一下:

本质上说Servlet就是一个实现Servlet接口的、部署于服务器端的服务器端的程序罢了!它可以象写其它任何java应用程序一样编写,它可以操作数据库、可以操作本地文件、可以连接本地EJB……编写Servlet程序的一般流程为:

1. 继承一个HttpServlet类;

2. 覆盖其doGet、doPost方法;

3. 在覆盖方法的内部操作方法参数HttpServletRequest和HttpServletResponse。

4. 读取请求利用HttpServletRequest。利用HttpServletRequest你可以操作Http协议的协议头、可以得到请求的操作方法、可以得到请求的路径、可以得到请求的字符串、以及和请求客户相关的信息,更主要的你可以得到Cookie和HttpSession这两个对象。

5. 利用Cookie你可以操作“甜心”对象或者将其写入HttpServletResponse中。

6. 向客户输出信息可以使用HttpServletResponse。使用HttpServletResponse可以写入各种类型的协议头、可以增加Cookie、可以重定向其它URL、可以向客户发送Http协议的状态码。

7. 利用HttpSession在会话内完成你想实现的任何功能。

同时Servlet还提供了一些事件和事件监听器(简单的观察者模式而已)。还有就是过滤器(Filter)和包装器(ServletRequestWrapper、ServletResponseWrapper)――简单的流的使用和装饰器模式的使用。

学习Sevlet、JSP必然要部署到服务器中,记住通常文件部署的步骤和参数的设置以及在程序中如何使用就可以了。

完全理解Servlet后,学习jsp相对比较容易了!Jsp完全建立在Servlet的基础上,它是为了迎合那些喜欢在Html文档中嵌入脚本(如:PHP之类的网页编程语言)的程序员的需要罢了!学起来也相当的容易!

一切看起来似乎那么的风平浪静,简单好学!简单的表象背后有其复杂的机理。要想对Servlet和Jsp彻底研究,你得研究Tomcat等开源软件的具体实现。它无非就是一个服务器,在客户利用网页通过HTTP协议向服务器发送请求后,服务器将此HTTP请求转化为相应的HttpServletRequest对象,调用你编写的Servlet罢了,在你的Servlet中你肯定操作了此HttpServletRequest了吧,同时操作了HttpServletResponse了吧,服务器就将此HttpServletResponse按照HTTP协议的要求利用HTTP协议发送给你的浏览器了!在服务器端的Jsp网页在被客户请求后,Tomcat会利用编译软件,使用javax.servlet.jsp包中的模板,编译此jsp文件,编译后就是一个Servlet!以后的操作和Servlet完全一样哦!

在Servlet和Jsp的基础上出现了,所谓的高级技术:JSTL,Struts……无非就是一些标签和MVC模式的使用。

继续前进吧!胜利就在前方!!

7. 多线程
一个看起来很神秘,却很容易上手、很难精通的方向!

我推荐两本我感觉很好的书籍。首先是我第一本能上手看的这方面的书,Sams 1998年出版的《Java Thread Programming》,写得暴好,很容易读懂,我有空还时常看当时的笔记!要知道怎么好你自己看吧!第二本OReilly三次出版的《Java Threads》,最新是2004版,国内好像有中文版,推荐你还是看英文版的吧!书中谈到了与多线程相关的N个方向,如IO、Swing、Collection等等。

给大家一点提示吧!java类库中与多线程相关的类不是很多,主要有:Thread、ThreadGroup以及ThreadLocal和InheritableThreadLocal四个类和一个Runnable接口;关键字synchronize、volatile ;以及Object对象的wait、notify、notifyAll方法!

1 Thread是多线程的核心类,提供了一系列创建和操作多线程的方法。

2 ThreadGroup是一个管理Thread的工具类。

3 ThreadLocal和InheritableThreadLocal为Thread提供了一个类似保险箱功能的存储线程对象的类!

4 Runnable不用说了吧!

5 synchronize是同步方法和同步块的核心哦!多个线程调用此方法时,只有一个线程可以使用此方法,其它方法阻塞,从而保证被操作对象内部状态完整性。某个线程调用带有synchronize的方法或块时会得到该对象的对象锁,完成块中的操作后释放此对象锁,从而其它对象可以继续操作。

6 wait、notify、notifyAll提供了有效的等待/通知机制。Java语言中每一个对象都有一个休息室,任何线程在其操作的对象的状态不满足的情况下,在该对象的休息室中休息,释放对象锁;当其它线程操作该对象后,唤醒休息室中的线程,它们再检查条件,当条件满足后,执行相应的操作。

多线程大致就这么多基础的!简单吗!这对于一个真正的程序员应该是不够的,真正对多线程要有所掌握,请您研究java.util.concurrent包吧!大师Doug Lea的作品,原先是一个开源的一致性编程的库,后来被Sun公司并入java类库。作者的网站上也有另外一个版本的该类库!值得研究的好东西!Hibernation、OpenJMS等开源软件都使用了此包!

8. 设计模式
谈到设计模式很多人多会推荐GOF的那本,该书在Amzon上是五星级的推荐书籍。不过对于学习java没多久的、特别是java初学者,我很不推荐这本书。主要是该书的例子基本都是C++的,很多细节没有讲述得足够清楚。

我给大家推荐的第一本是阎宏博士的《Java 与模式》,它是第一本中国人自己写的关于设计模式的书籍,写的比较有趣,融合了很多中华民族的文化和观念,例子、类图都比较多,且相对简单!非常不错的入门书籍――又是大块头哦!

其次我推荐Wiley出版社出版的《Pattern In Java》一套三本,我才看了第一本,好像第二本不怎么样,第三本还不错!

第三本是中文翻译版的关于多线程模式的(很难得的中文翻译版)中国铁道出版社2003年出版的《Java多线程设计模式》,将多线程模式讲得非常浅显,配有大量的图例,每章都有习题,最后有答案!我研究多线程模式就是由它开始的!

第四本,今年出版的Head First系列的《Head First Design Pattern》,秉承Head First系列图书的优点,大量的类图、丰富的实例、有趣的注解,值得购买!

其次在J2EE方向你可以研究阅读Addison Wesley 2002年出版的《Patterns of Enterprise Application Architecture》,众多大腕的作品,讲企业消息集成的!Sun提供的《J2EE PATTERNS SL500》也很好!晚了推荐那一本Amzon 4星半的《Holub on patterns》,大师的作品,提供了,很值得研究的例子,不过对上面四本不是很熟悉的读者,最好不要读它!可能会让你比较累!

我学习设计模式经过一段很曲折的路线,前前后后大约看了20本,阎宏博士的《Java 与模式》我看了4遍,还排除我第一次基本没看懂的看!记得研一时老师给我们讲了GOF的那本,作为选修课,我和它们计算机系的硕士、博士们一起,到最后一个班40-50个人,不超过3个人明白,我也没有明白任何一点(基础差吧――主要我对C++语言一点都不了解),凭我不伏输的性格,我认为我对java语言理解还可以,我就借了《Java 与模式》,结果还是基本没看懂。很有幸的是读研三时,听过了上交大饶若楠老师关于Java OOP语言的讲座,我懂了组合书籍模式等三种设计模式后,对其它模式有了强烈的兴趣和要征服它的愿望!工作后我买的第一本就是《Java 与模式》,第一遍花了2个月研究了这个1000多页的大块头,后来第三遍15天左右就可以搞定,笔记记了一大本!从此一发不可收拾。

选对书、埋头研究。相信很快就会入门的!

学习Java语言8个简单的部分,这只是我们研究Java语言的开始!这些都懂了充其量一个java程序员而已,后面的路很长很长!我们可以继续研究数据库实现的源代码、Servlet服务器的源代码、RMI、EJB、JNDI、面向方面编程、重构、ANT工具、Eclipse工具、Spring工具、JBoss、JOnAS、Apache Geronimo等J2EE服务器!研究了这些你可能会成为一个出色的J2EE Architecture!你可以继续研究剖析器、编译器、JNODE(java写的操作系统)……

感谢大家有此耐心,听我罗罗嗦嗦大半天!感谢大家的阅读,感谢群里的朋友!这篇文章主要应群里朋友的呼声――不知道如何选书、不知道从何看起!大半天的功夫完成赶此文章,字句上难免有失误,同时由于能力有限不凡有错误!请阅读后批评指正!

上面基本是我研究java语言的顺序,以上书籍都是我阅读过的,不存在替任何出版社宣传的成分!有的方法可能不适合你,假如你能收获一点,两点甚至更多,请你不要吝啬推荐给你的朋友――共同学习!

感谢大家的阅读;感谢互联网的设计者;感谢java的设计师;感谢www.open-open.com和www.sourceforge.net网站!

‘叁’ 如何绕过android网络安全配置

Android Nougat(Android 7)引入了一种名叫网络安全配置(Network Security Configuration)的新型安全功能,这种新功能可以允许Android开发者们在无需修改App代码的情况下自定义他们的网络安全设置。

但是这种功能将有可能影响Android移动端应用的安全测评。如果需要拦截HTTPS流量,那么就必须安装代理证书,而且还必须安装在“用户证书”之中,而默认情况下这类证书是不被信任的。

接下来,我们将给大家介绍这种新机制的运行模式,以及如何通过重新编译或运行时钩子机制来修改这种新型安全机制的默认行为。

开发者如何使用该功能

为了修改默认配置,我们需要在resources目录中创建一个XML文件来指定自定义配置信息。下面给出的是一份配置文件样本,代码给应用程序的所有HTTPS链接配置了用户证书:

<?xml version="1.0"encoding="utf-8"?>
<network-security-config>
<base-config>
<trust-anchors>
<certificates src="system"/>
<certificates src="user"/>
</trust-anchors>
</base-config>
</network-security-config>

除此之外,该文件还需要在AndroidManifest文件中进行引用,即在application标签中的android:networkSecurityConfig参数中指定:

<?xml version="1.0"encoding="utf-8"?>
<manifest ... >
<applicationandroid:networkSecurityConfig="@xml/network_security_config"
... >
...
</application>
</manifest>

渗透测试人员如何绕过该功能

重新编译

如果待测试的应用程序运行在Android 7以及更高版本的Android平台中(或者targetSdkVersion键配置为版本24或更高),应用程序很可能使用的是默认配置。因此,用户证书(例如代理CA证书)将不会被应用程序所信任。

一般来说,修改默认配置的方法是在插入了XML内容(激活证书容器)之后再对应用程序进行重新编译。那么接下来,我们就要使用apktool来对应用程序进行修改了。

首先,我们要做的就是使用apktool来对应用程序进行反编译。完成之后,我们还需要在resources目录中创建一个XML文件并修改AndroidManifest.xml文件中的相关参数(指向网络安全配置文件)。此时,我们就可以再次使用apktool来对应用程序进行重新编译,然后使用jarsigner工具来对生成的APK文件签名。

当我们使用任意证书完成对APK文件的重新签名后,我们就可以使用adb来将其安装到手机之中了。如果手机经过配置后可以通过中间代理(例如Burp Suite)来发送流量,那么只要手机系统中安装了CA证书,我们就可以拦截HTTPS流量了。

运行时钩子

但是在某些情况下,刚才所介绍的方法也许是不可行的。比如说,如果应用程序使用了shareId来跟其他应用程序共享同一ID,而我们又需要直接访问其数据的话,那么这两个应用程序必须使用同一份证书来进行签名。如果应用程序经过了重新编译和重新签名之后,那这个保护功能也就多余了,而且我们也不可能再使用开发者之前的初始证书来对修改后的APK进行签名。

对于这种场景,我们就可以使用动态构造技术了,因为这种方法可以允许我们在运行时对程序的行为进行修改而无须修改应用程序的代码。为了实现这种操作,我们需要创建一个Frida脚本来调整应用程序(目标SDK版本>=24)网络安全配置的默认行为。

android.security.net.config包实现了网络安全配置模块,其主类ManifestConfigSource可以加载XML文件中自定义的配置信息,如果resources文件不存在的话,它将会加载默认配置。相关代码如下所示:

package android.security.net.config;
public class ConfigSource {

. . .
private ConfigSource getConfigSource() { synchronized (mLock) {

. . .
if (mConfigResourceId != 0) {

. . .

source = newXmlConfigSource(mContext, mConfigResourceId, debugBuild, mTargetSdkVersion,mTargetSandboxVesrsion);
} else {
. . .
source = new DefaultConfigSource(usesCleartextTraffic,mTargetSdkVersion, mTargetSandboxVesrsion);
}
mConfigSource = source; return mConfigSource;
}
}
. . .
}

DefaultConfigSource类是ManifestConfigSource类中定义的一个私类,如果没有使用XML文件来修改配置信息的话,系统将会默认使用这个类:

package android.security.net.config;
public class ConfigSource {
...
private static final class DefaultConfigSource implements ConfigSource { private final NetworkSecurityConfig mDefaultConfig; public DefaultConfigSource(boolean usesCleartextTraffic, inttargetSdkVersion, int targetSandboxVesrsion) {
mDefaultConfig =NetworkSecurityConfig.getDefaultBuilder(targetSdkVersion,
targetSandboxVesrsion)
.setCleartextTrafficPermitted(usesCleartextTraffic)
.build();
} @Override
public NetworkSecurityConfig getDefaultConfig() { return mDefaultConfig;
} @Override
public Set<Pair<Domain, NetworkSecurityConfig>>getPerDomainConfigs() { return null;
}
}
}

请大家看看这个类的构造器,它可以接收三个参数,其中一个就是应用程序的目标SDK版本。这个值可以使用getDefaultBuilder()方法来构造NetworkSecurityConfig类。在最后一段代码中,如果targetSdkVersion的值小于或等于23(Android Marshmallow,即Android 6.0),代码将会加载用户证书。

package android.security.net.config;
public final class NetworkSecurityConfig {
...
public static final Builder getDefaultBuilder(int targetSdkVersion, inttargetSandboxVesrsion) {
Builder builder = new Builder()
.setHstsEnforced(DEFAULT_HSTS_ENFORCED) // System certificatestore, does not bypass static pins.
.addCertificatesEntryRef(
newCertificatesEntryRef(SystemCertificateSource.getInstance(), false)); final = targetSandboxVesrsion < 2;
builder.setCleartextTrafficPermitted(cleartextTrafficPermitted); // Applications targeting N andabove must opt in into trusting the user added certificate
// store.
if (targetSdkVersion <=Build.VERSION_CODES.M) { // User certificate store,does not bypass static pins.
builder.addCertificatesEntryRef(
newCertificatesEntryRef(UserCertificateSource.getInstance(), false));
} return builder;
}

...

接下来,我们需要使用一个Frida脚本来挂钩DefaultConfigSource类的构造器,并修改其中的targetSdkVersion值。除此之外,这个脚本还需要挂钩getDefaultBuilder()方法来确保这个值已经被成功修改了。

Java.perform(function(){
var ANDROID_VERSION_M = 23;

var DefaultConfigSource =Java.use("android.security.net.config.ManifestConfigSource$DefaultConfigSource");
var NetworkSecurityConfig = Java.use("android.security.net.config.NetworkSecurityConfig");

DefaultConfigSource.$init.overload("boolean","int").implementation = function(usesCleartextTraffic,targetSdkVersion){
console.log("[+] Modifying DefaultConfigSource constructor"); return this.$init.overload("boolean","int").call(this, usesCleartextTraffic, ANDROID_VERSION_M);
};

DefaultConfigSource.$init.overload("boolean", "int","int").implementation = function(usesCleartextTraffic,targetSdkVersion, targetSandboxVersion){
console.log("[+]Modifying DefaultConfigSource constructor"); return this.$init.overload("boolean", "int","int").call(this, usesCleartextTraffic, ANDROID_VERSION_M,targetSandboxVersion);
};

NetworkSecurityConfig.getDefaultBuilder.overload("int").implementation= function(targetSdkVersion){
console.log("[+] getDefaultBuilder original targetSdkVersion =>" + targetSdkVersion.toString()); return this.getDefaultBuilder.overload("int").call(this, ANDROID_VERSION_M);
};

NetworkSecurityConfig.getDefaultBuilder.overload("int","int").implementation = function(targetSdkVersion,targetSandboxVersion){
console.log("[+] getDefaultBuilder original targetSdkVersion =>" + targetSdkVersion.toString()); return this.getDefaultBuilder.overload("int","int").call(this, ANDROID_VERSION_M, targetSandboxVersion);
};
});

现在,在上面给出的Frida脚本的帮助下,我们可以使用类似Burp Suite之类的HTTP代理来拦截应用程序(所有目标SDK版本>=24的应用程序)的网络流量。

$ frida -U -l ntc.js -f<package_name> --no-pause

‘肆’ 绋嫔簭鑴卞3鏄浠涔堟剰镐濓纻

澹崇殑姒傚康锛
镓璋撯滃3钬濆氨鏄涓挞棬铡嬬缉镄勫伐鍏枫
杩欓噷镄勫帇缂╁苟涓嶆槸鎴戜滑骞虫椂浣跨敤镄凴AR銆乑IP杩欎簺宸ュ叿镄勫帇缂╋纴澹崇殑铡嬬缉鎸囩殑鏄阍埚筫xe銆乧om銆佸拰dll绛夌▼搴忔枃浠惰繘琛屽帇缂╋纴鍦ㄧ▼搴忎腑锷犲叆涓娈靛傚悓淇濇姢灞傜殑浠g爜锛屼娇铡熺▼搴忔枃浠朵唬镰佸け铡绘湰𨱒ラ溃鐩锛屼粠钥屼缭鎶ょ▼搴忎笉琚闱炴硶淇鏀瑰拰鍙岖紪璇戯纴杩欐靛傚悓淇濇姢灞傜殑浠g爜锛屼笌镊铹剁晫锷ㄦ岖墿镄勫3鍦ㄥ姛鑳戒笂链夊緢澶氱浉浼肩殑鍦版柟锛屾墍浠ユ垜浠灏卞舰璞″湴绉颁箣涓虹▼搴忕殑澹炽

澹崇殑浣灭敤锛
1.淇濇姢绋嫔簭涓嶈闱炴硶淇鏀瑰拰鍙岖紪璇戙
2.瀵圭▼搴忎笓闂ㄨ繘琛屽帇缂╋纴浠ュ噺灏忔枃浠跺ぇ灏忥纴鏂逛究浼犳挱鍜屽偍瀛樸

澹冲拰铡嬬缉杞浠剁殑铡嬬缉镄勫尯鍒鏄
铡嬬缉杞浠跺彧鑳藉熷帇缂╃▼搴
钥岀粡杩囧3铡嬬缉钖庣殑exe銆乧om鍜宒ll绛夌▼搴忔枃浠跺彲浠ヨ窡姝e父镄勭▼搴忎竴镙疯繍琛

涓嬮溃𨱒ヤ粙缁崭竴涓妫娴嫔3镄勮蒋浠
PEID v0.92
杩欎釜杞浠跺彲浠ユ娴嫔嚭 450绉嶅3
鏂扮増涓澧炲姞䦅呮瘨镓鎻忓姛鑳斤纴鏄鐩鍓嶅悇绫绘煡澹冲伐鍏蜂腑锛屾ц兘链寮虹殑銆
鍙﹀栬缮鍙璇嗗埆鍑篍XE鏂囦欢鏄鐢ㄤ粈涔堣瑷缂栧啓镄刅C++銆丏elphi銆乂B鎴朌elphi绛夈
鏀鎸佹枃浠跺す镓归噺镓鎻

鎴戜滑鐢≒EID瀵筫asymail.exe杩涜屾壂鎻
镓惧埌澹崇殑绫诲瀷浜
UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo
璇存槑鏄疷PX镄勫3
涓嬮溃杩涜

姝ラ2 鑴卞3
瀵逛竴涓锷犱简澹崇殑绋嫔簭锛屽幓闄ゅ叾涓镞犲叧镄勫共镓颁俊鎭鍜屼缭鎶ら檺鍒讹纴鎶娄粬镄勫3鑴卞幓锛岃В闄や吉瑁咃纴杩桦师杞浠舵湰𨱒ョ殑闱㈢洰銆傝繖涓杩囩▼灏卞彨锅氲㔉澹炽
鑴卞3鎴愬姛镄勬爣蹇
鑴卞3钖庣殑鏂囦欢姝e父杩愯岋纴锷熻兘娌℃湁鎹熻椼
杩樻湁涓鑸鑴卞3钖庣殑鏂囦欢闀垮害閮戒细澶т簬铡熸枃浠剁殑闀垮害銆
鍗充娇钖屼竴涓鏂囦欢锛岄噰鐢ㄤ笉钖岀殑鑴卞3杞浠惰繘琛岃㔉澹筹纴鐢变簬鑴卞3杞浠剁殑链虹悊涓嶉氾纴鑴卞嚭𨱒ョ殑鏂囦欢澶у皬涔熶笉灏界浉钖屻

鍏充簬鑴卞3链夋坠锷ㄨ㔉澹冲拰镊锷ㄨ㔉澹
镊锷ㄨ㔉澹冲氨鏄鐢ㄤ笓闂ㄧ殑鑴卞3链鸿㔉 寰堢亩鍗 鎸夊嚑涓嫔氨 OK浜
镓嫔姩鑴卞3鐩稿硅嚜锷ㄨ㔉澹 闇瑕佺殑鎶链钖閲忓井楂 杩欓噷涓嶅氲翠简

UPX鏄涓绉嶅緢钥佽屼笖寮哄ぇ镄勫3 涓嶈繃瀹幂殑鑴卞3链洪殢澶勫氨鑳芥垒鍒
UPX链韬绋嫔簭灏卞彲浠ラ氲繃
UPX 鏂囦欢钖 锛峝
𨱒ヨВ铡嬬缉 涓嶈繃杩欎簺闇瑕佺殑 锻戒护绗︿腑杈揿叆
浼樼偣鏂逛究蹇鎹 缂虹偣DOS鐣岄溃
涓轰简璁╁ぇ瀹剁渷铡婚夯鐑︾殑镎崭綔 灏变骇鐢熶简涓绉嶅彨 UPX SHELL镄勫栧3杞浠

UPX SHELL v3.09
UPX 澶栧3绋嫔簭锛
鐩镄勮︰PX镄勮㔉澹冲姞澹冲偦鐡滃寲

娉锛氩傛灉绋嫔簭娌℃湁锷犲3 闾d箞鎴戜滑灏卞彲浠ョ渷铡荤浜屾ョ殑鑴卞3浜嗭纴鐩存帴瀵硅蒋浠惰繘琛屽垎鏋愪简銆

鑴卞畬钖 鎴戜滑杩涜

姝ラ3
杩愯岀▼搴
灏濊瘯娉ㄥ唽
銮峰彇娉ㄥ唽鐩稿叧淇℃伅

阃氲繃灏濊瘯娉ㄥ唽 鎴戜滑鍙戠幇涓涓鍏抽敭镄勫瓧绗︿覆

钬滃簭鍒楀彿杈揿叆阌栾钬

姝ラ4
鍙嶆眹缂

鍙嶆眹缂栦竴鑸鐢ㄥ埌镄勮蒋浠 閮芥槸 W32Dasm
W32dasm瀵逛簬鏂版坠 鏄扑簬涓婃坠 镎崭綔绠鍗
W32Dasm链夊緢澶氱増链 杩欓噷鎴戞帹钻愪娇鐢 W32Dasm 镞犳瀬鐗

鎴戜滑鐜板湪鍙嶆眹缂朩ebEasyMail镄勭▼搴忔枃浠秂asymail.exe

铹跺悗鐪嬬湅鑳戒笉鑳芥垒鍒板垰镓岖殑瀛楃︿覆

姝ラ5
阃氲繃eXeScope杩欎釜杞浠舵潵镆ョ湅链鑳藉湪w32dasm涓姝g‘鏄剧ず镄勫瓧绗︿覆淇℃伅

eXeScope v6.50
镟存敼瀛椾綋锛屾洿鏀硅彍鍗曪纴镟存敼瀵硅瘽妗嗙殑鎺掑垪锛岄吨鍐椤彲镓ц屾枃浠剁殑璧勬簮锛屽寘𨰾(EXE锛娈LL锛孙CX锛夌瓑銆傛槸鏂逛究寮哄ぇ镄勬眽鍖栧伐鍏凤纴鍙浠ョ洿鎺ヤ慨鏀圭敤 VC++ 鍙 DELPHI 缂栧埗镄勭▼搴忕殑璧勬簮锛屽寘𨰾凿滃崟銆佸硅瘽妗嗐佸瓧绗︿覆琛ㄧ瓑
鏂扮増鍙浠ョ洿鎺ユ煡鐪 锷犲3鏂囦欢镄勮祫婧

鎴戜滑镓揿紑eXeScope
镓惧埌濡备笅瀛椾覆绗

122,"搴忓垪鍙疯緭鍏ラ敊璇 "
123,"鎭锽沧偍鎴愪负WebEasyMail姝e纺鐢ㄦ埛涓镄勪竴锻! "
124,娉ㄥ唽鎴愬姛
125,澶辫触

閲岖偣鏄122

姝ラ6
鍐嶆¤繑锲 w32dasm

* Possible Reference to String Resource ID=00122: "?椴筫?"

浣嗘槸鍙屽嚮钖
鎻愮ず璇存垒涓嶅埌杩欎釜瀛椾覆绗
涓嶆槸娌℃湁 鏄锲犱负 "?椴筫?"鏄涔辩爜 w32dasm瀵逛簬涓鏂囨樉绀轰笉鏄澶濂
姣旷珶涓嶆槸锲戒骇杞浠

鍏堟妸浠婂ぉ浼氱敤鍒扮殑姹囩紪锘烘湰鎸囦护璺熷ぇ瀹惰В閲娄竴涓

mov a,b ;鎶奲镄勫艰祴缁檃锛屼娇a锛漛
call 锛氲皟鐢ㄥ瓙绋嫔簭 锛屽瓙绋嫔簭浠ret缁扑负
ret 锛氲繑锲炰富绋嫔簭
je鎴杍z 锛氲嫢鐩哥瓑鍒栾烦杞
jne鎴杍nz 锛氲嫢涓岖浉绛夊垯璺宠浆
push xx锛歺x 铡嬫爤
pop xx锛歺x 鍑烘爤

镙堬纴灏辨槸闾d簺鐢辩紪璇戝櫒鍦ㄩ渶瑕佺殑镞跺椤垎閰嶏纴鍦ㄤ笉闇瑕佺殑镞跺栾嚜锷ㄦ竻妤氱殑鍙橀噺镄勫瓨鍌ㄥ尯銆傞噷闱㈢殑鍙橀噺阃氩父鏄灞閮ㄥ彉閲忋佸嚱鏁板弬鏁扮瓑銆

鎴戜滑鎼灭储
Possible Reference to String Resource ID=00122
锲犱负瀵笶鏂囨敮鎸佸緢濂
鎴戜滑𨱒ュ埌浜

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00406F17(C) //璺宠浆𨱒ヨ嚜 406F17
|

* Possible Reference to String Resource ID=00125: "1%"
|
:004070DD 6A7D push 0000007D
:004070DF 8D4C2410 lea ecx, dword ptr [esp+10]
:004070E3 E8F75A1200 call 0052CBDF

* Possible Reference to String Resource ID=00122: "?椴筫?"
|
:004070E8 6A7A push 0000007A
:004070EA 8D4C2408 lea ecx, dword ptr [esp+08]
:004070EE E8EC5A1200 call 0052CBDF

鎴戜滑𨱒ュ埌

:00406F01 8B876C080000 mov eax, dword ptr [edi+0000086C]杩欓噷鏄瀵
:00406F07 8B4C2408 mov ecx, dword ptr [esp+08]
:00406F0B 50 push eax//杩欎袱涓猠ax鍜宔cx鍏ユ爤灏辨瘆杈冭╂垜浠镐鐤戜简
:00406F0C 51 push ecx//浜х敓娉ㄥ唽镰
:00406F0D E8AE381100 call 0051A7C0//杩机ALL閲屽规敞鍐屼綅搴旇ヤ细链夎剧疆
:00406F12 83C40C add esp, 0000000C
:00406F15 85C0 test eax, eax// 妫娴嬫敞鍐屼綅
:00406F17 0F85C0010000 jne 004070DD //涓嶅瓨鍦ㄦ敞鍐屼綅 灏变细璺冲埌4070DD灏变细鍑虹幇闾d釜阌栾镄勫瓧涓茬︿简

鎴戜滑璁颁綇406F01杩欎釜鍦板潃

鎺ョ潃杩涜屼笅涓姝

姝ラ7
杩欎竴姝ユ垜浠杩涜岀殑鏄璋冭瘯

鐢ㄥ埌镄勮蒋浠舵槸ollydbg

濂戒简鎴戜滑镓惧埌浜 娉ㄥ唽镰0012AF04 00FD4A10 ASCII ""

浣嗘槸杩欎釜骞朵笉鏄鎴戜滑镄勪富瑕佺洰镄

鎴戜滑杩樿佸仛鍑哄睘浜庤嚜宸辩殑娉ㄥ唽链

鐩镐俊杩欎釜鏄寰埚氢汉姊﹀瘣浠ユ眰镄勪簨𨱍

姝ラ8
鍒朵綔娉ㄥ唽链

娉ㄥ唽链烘垜浠闇瑕佺殑鏄涓涓狵EYMAKE镄勮蒋浠
锲犱负2.0鏄婕旂ず鐗堣屼笖锅沧㈡洿鏂颁简
镓浠ユ垜浠鐢1.73鐗

锅氢竴涓鍐呭瓨娉ㄥ唽链 闇瑕佷笅闱㈠嚑涓璧勬枡

涓鏂鍦板潃锛406F0C
涓鏂娆℃暟锛1
绗涓瀛楄妭锛51
鎸囦护闀垮害锛1

濂戒简 涓涓瀹岀编镄勬敞鍐屾満 灏变骇鐢熶简
杩树笉璧跺揩鍙戠粰浣犵殑链嫔弸 镣钥涓涓
淇濊瘉璁╀粬杩风硦姝 浣╂湇寰椾綘瑕佹
鍏跺疄链钖庤缮链夊嚑涓姝ラ
灏辨槸鎾板啓镰存枃
涓嶈繃澶у堕兘鏄鏂版坠 杩欎釜姝ラ 灏卞幓浜嗗惂

涓岖煡涓嶈夎翠简杩欎箞澶氩帘璇 甯屾湜鑳藉瑰ぇ瀹舵湁浜涗綔鐢
濡傛灉链変粈涔堜笉镍 涓岖悊瑙g殑浜嬫儏 璇疯仈绯绘垜 鎴栬呭埌璁哄潧鍙戣创
QQ:9595859
MSN:[email protected]
浠婂ぉ镄勮剧▼灏卞埌杩欓噷 澶у惰刀蹇铡诲姩镓嫔疄璺靛惂锝烇紒

--------------------------------------------------------------------------------

-- 浣滆咃细admin
-- 鍙戝竷镞堕棿锛2005-10-11 11:13:00

-- 瀹炴垬镆ュ3鑴卞3鍒朵綔镰磋В娉ㄥ唽链烘渶璇︾粏镄勬暀绋

澶у跺ソ锛屾垜鏄痥carhc
浠婂ぉ8链1镞ヤ简 鍒氢粠鍖婚櫌锲炴潵 姝eソ鍑屾櫒
杩欐湡镄勮剧▼锅氭櫄浜 杩欓噷缁椤ぇ瀹堕亾涓姝
8链1镞 濡傛灉鎴戞病璁伴敊
鏄寤哄啗鑺
镞㈢劧鏄寤哄啗鑺 涔熻佽薄寰佹х殑寮勪簺涓滆タ𨱒
涓轰简寤哄啗鑺 杩欐湡鎴戦夋嫨镓揿嚮榛戞殚锷垮姏锛嶏紞榛戠ぞ浼

闾d箞浠婂ぉ镄勪富棰桦氨鏄
锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛
杩庢帴寤哄啗鑺傦纴阈查櫎榛戠ぞ浼
锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛
棣栧厛浠嬬粛杞浠

榛戠ぞ浼2.0
[锷熻兘绠浠媇:
1 浜斿ぇ蹇呭囧姛鑳
杩灭▼灞忓箷; 瀹屽叏鎺у埗; 鏂囦欢浼犻; Telnet; 杩灭▼鍏虫満
2 鎻愪緵IP鍙嶅脊瀹氢綅锷熻兘
鍙浠ラ氲繃闱欐両P锷ㄦ佸烟钖,缃戦〉鏂囦欢镄勬柟寮忓弽寮归氱煡IP.
3 闆嗘垚vidc瀹㈡埛绔
鍐呯绣镄勬湅鍙嬫兂鐢ㄨ嚜锷ㄤ笂绾垮姛鑳,鍙浠ュ疄鐜颁简
4 链杞浠堕泦鎴愪简甯哥敤鏀诲嚮宸ュ叿(濡侽penTelnet OpenTftp绛)
阃氲繃IPC𨰾疯礉,钥屼笖甯︽湁镙囧嗳镄勬嫹璐濊繘搴,鍏ㄧ悆棣栨¢溃涓;
opentelnet灏变笉浠嬬粛浜,鐩镐俊澶у堕兘鐭ラ亾;
opentftp涓烘湰杞浠剁嫭鍒,鍙浠ヨ繙绋嫔紑钖痶ftp链嶅姟;
5 链杞浠堕泦鎴愮殑鏋侀熺鍙f壂鎻忓櫒(镓鎻忛熷害涓栫晫棰嗗厛)
链寮濮嬫垜鐢ㄧ殑镓鎻忓櫒鏄澶у悕榧庨紟镄凷uperScan3.0,镒熻夐熷害寰堟参;
钖庢潵鏀圭敤SSPort1.0 镓鎻忛熷害链変简鏄庢樉镄勬彁楂.
缁忚繃阃熷害瀵规瘆,链杞浠舵壂鎻忛熷害姣掷SPort蹇 1/3 ,鏄疭uperScan镄凬鍊!!!
鎴戠殑链哄櫒鏄 璧涙壃700+256M鍐呭瓨,涓鑸镓鎻忛熷害涓180鍙/绉;
涓浜涘彿绉板彲浠ヨ揪鍒1000鍙/绉掔殑镓鎻忓櫒鍦ㄦ湰链轰笂璇曢獙鍙链120鍙/绉.
锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞
鍑嗗囧伐浣滐细

瀹夎呴粦绀句细
锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞
姝ラや竴 镆ュ3

Peid v0.92
ASPack 2.12 -> Alexey Solodovnikov銆
锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞
姝ラや簩 鑴卞3

镓嫔姩鑴卞3

蹇阃熻㔉鎺堿SPACK镓链夌増链镄勬柟娉

镄凮EP鍏抽敭镣瑰湪涓嬮溃

0048D3AF 61 POPAD
0048D3B0 75 08 JNZ SHORT 榛戠ぞ浼.0048D3BA
0048D3B2 B8 01000000 MOV EAX,1
0048D3B7 C2 0C00 RETN 0C//402c4a
0048D3BA 68 00000000 PUSH 0

402ca4灏辨槸鎴戜滑瑕佹垒镄凮EP

镊锷ㄨ㔉澹

AspackDie v1.41

杩欐槸涓涓灏忓皬镄 PE 鏂囦欢瑙e帇缂╁櫒 (EXE, DLL, ...) 濂瑰彲浠ヨВ铡嬬缉
镊 Aspack 2000 浠ュ悗镄勪换浣 Aspack 鐗堟湰. 鍖呮嫭:

- Aspack 2000
- Aspack 2001
- Aspack 2.1
- Aspack 2.11
- Aspack 2.11c/d
- Aspack 2.12
- Aspack 2.12a/b
- 涓浜涙湭鐭ョ殑鐗堟湰

锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛
姝ラや笁 璇曡繍琛岀▼搴 鍙戠幇绐佺牬镣

鐪嫔埌鍏抽敭瀛楃︿覆
钬沧敞鍐岀爜阌栾!钬
锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛
姝ラゅ洓 W32DASM 瀵绘垒绐佺牬镣

鐢╳32dasm杞藉叆宸茬粡鑴卞3镄勭▼搴
瀛楃︿覆瀵熺湅
链鍙戠幇 瀛楃︿覆 钥屾槸鍙戠幇涓鍫嗕贡镰
澶у朵簬鏄涓瀹氭兂鍒颁简绗涓鑺傜殑锷炴硶

鐢‥XESCOPE
锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛
姝ラゅ洓 瀵熸垒 瀛楃︿覆

镓揿紑eXeScope 骞惰浇鍏 浣嗘槸鍙戠幇 閮芥病链夊瓧绗︿覆
杩欓”
涓哄暐锻锛熷ぇ瀹朵竴瀹氢细鐤戦梾
涓鑸鐢╡XeScope镆ヤ笉鍒
鎴戜滑灏嗗紑濮
锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛
姝ラや簲 镆ヨ㈣蒋浠剁殑缂栬疟绫诲瀷

Peid v0.92
Microsoft Visual Basic 5.0 / 6.0
锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞
姝ラゅ叚 閲囩敤GetVBRes v0.51 瀵逛粯VB绋嫔簭

GetVBRes v0.51 涓涓闱炲父濂界殑VB姹夊寲宸ュ叿

瀵逛簬VB绋嫔簭 鎴戜滑鐢ㄤ笓闂ㄦ眽鍖栫敤镄凣etVBRes v0.51𨱒ュ逛粯瀹
涔熻告湁浜轰笉鐞呜В 涓哄暐鐢ㄦ眽鍖栧伐鍏峰憿
鍏跺疄eXeScope涔熷睘浜庢眽鍖栧伐鍏
GetVBRes杞藉叆榛戠ぞ浼
鍙戠幇娌℃湁涔辩爜浜
鐪嫔埌镄勫叏鏄瀹屾暣镄勫瓧绗
鎴戜滑镓惧埌浜
娉ㄥ唽镰侀敊璇!
杩欎釜瀛楃︿覆
鎺ョ潃涓轰简鑳芥闷鍒扮▼搴忓叧阌镣瑰湴鍧
鎴戜滑鎶娾沧敞鍐岀爜阌栾!钬
鏀规垚111111
涓哄暐鏀规垚111111锲犱负111111111
淇濆瓨淇鏀
锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛
姝ラゅ叚 鐢╓32Dasm杞藉叆淇鏀瑰悗镄勬枃浠
鍙戠幇瀛楃︿覆涓链111111
闾d釜灏辨槸鎴戜滑淇鏀圭殑 铡熸潵鏄钬沧敞鍐岀爜阌栾!钬

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004792EF(C)
|
:00479474 B904000280 mov ecx, 80020004
:00479479 B80A000000 mov eax, 0000000A
:0047947E 894D9C mov dword ptr [ebp-64], ecx
:00479481 894DAC mov dword ptr [ebp-54], ecx
:00479484 894DBC mov dword ptr [ebp-44], ecx
:00479487 8D5584 lea edx, dword ptr [ebp-7C]
:0047948A 8D4DC4 lea ecx, dword ptr [ebp-3C]
:0047948D 894594 mov dword ptr [ebp-6C], eax
:00479490 8945A4 mov dword ptr [ebp-5C], eax
:00479493 8945B4 mov dword ptr [ebp-4C], eax

* Possible StringData Ref from Code Obj ->"1111111" //鍒氭墠鎴戜滑鐪嫔埌镄勬敞鍐屽悧阌栾镄勫摝
|
:00479496 C7458C98194100 mov [ebp-74], 00411998
:0047949D C7458408000000 mov [ebp-7C], 00000008

鍙戠幇璺宠浆𨱒ヨ嚜鍒4792EF
瀹夌収涔犳傥 鎴戜滑𨱒ュ埌4792EF钖 鎺ョ潃钖戝墠鐪
鐪嫔埌涓涓璺冲埌杩欓噷镄勯偅涓鍦板潃
杩欓噷鏄40928C

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00479278(C)
|
:0047928C 8B55E4 mov edx, dword ptr [ebp-1C]

* Reference T MSVBVM60.__vbaStrMove, Ord:0000h
|
:0047928F 8B3578124000 mov esi, dword ptr [00401278]
:00479295 8D4DE0 lea ecx, dword ptr [ebp-20]
:00479298 895DE4 mov dword ptr [ebp-1C], ebx
:0047929B FFD6 call esi
:0047929D 8B4DE8 mov ecx, dword ptr [ebp-18]
:004792A0 6A01 push 00000001
:004792A2 8D55E0 lea edx, dword ptr [ebp-20]
:004792A5 51 push ecx
:004792A6 52 push edx
:004792A7 E8440F0000 call 0047A1F0
:004792AC 8BD0 mov edx, eax
:004792AE 8D4DDC lea ecx, dword ptr [ebp-24]
:004792B1 FFD6 call esi
:004792B3 50 push eax
:004792B4 53 push ebx

* Reference T MSVBVM60.__vbaInStr, Ord:0000h
|
:004792B5 FF15E8114000 Call dword ptr [004011E8]
:004792BB 8BF0 mov esi, eax
:004792BD 8D45E8 lea eax, dword ptr [ebp-18]
:004792C0 F7DE neg esi
:004792C2 8D4DDC lea ecx, dword ptr [ebp-24]
:004792C5 50 push eax
:004792C6 1BF6 sbb esi, esi
:004792C8 8D55E0 lea edx, dword ptr [ebp-20]
:004792CB 51 push ecx
:004792CC 52 push edx
:004792CD F7DE neg esi
:004792CF 6A03 push 00000003
:004792D1 F7DE neg esi

* Reference T MSVBVM60.__vbaFreeStrList, Ord:0000h
|
:004792D3 FF150C124000 Call dword ptr [0040120C]
:004792D9 8D45D4 lea eax, dword ptr [ebp-2C]
:004792DC 8D4DD8 lea ecx, dword ptr [ebp-28]
:004792DF 50 push eax
:004792E0 51 push ecx
:004792E1 6A02 push 00000002

* Reference T MSVBVM60.__vbaFreeObjList, Ord:0000h
|
:004792E3 FF1548104000 Call dword ptr [00401048]
:004792E9 83C41C add esp, 0000001C
:004792EC 663BF3 cmp si, bx
:004792EF 0F847F010000 je 00479474

鎴戜滑鍦
004792AC鐪嫔埌涓嬮溃杩欎簺
EAX=0015A47C, (UNICODE "")
EDX=00000000

镐鐤慐AX涓虹殑

涓烘敞鍐岀爜
锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞
姝ラや竷 鐢ㄤ笉纭瀹氭g‘镄勬敞鍐 灏濊瘯娉ㄥ唽



杩欎釜娉ㄥ唽钖
鎴戜滑鍙戠幇 娉ㄥ唽鎴愬姛
锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞
姝ラゅ叓 鍒跺仛娉ㄥ唽链

Keymake v1.73

涓鏂鍦板潃锛4792AC
涓鏂娆℃暟锛1
绗涓瀛楄妭锛8B
鎸囦护闀垮害锛2
锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞
姝ラや节 鍙戝竷娉ㄥ唽链

镓句竴涓缃戠珯姣斿傞粦锘烘垨钥呬綘镄勬湅鍙嬩箣闂
锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞
姝ラゅ崄 浼戞伅

榛戠ぞ浼氱粓浜庡共鎺変简
鐜板湪铡绘垒浣犵殑鐢锋湅鍙嬫垨钥呭コ链嫔弸
钥佸叕鎴栬呰佸﹩
镓句釜鍦版柟镵婅亰澶 鏀炬涧鏀炬涧
锻婅瘔浠栦滑 浣犲垰鍒氭妸榛戠ぞ浼 鎽嗗钩浜
涓瀹氩緢链夎叮镄
锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞
璇剧▼缁撴潫
锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞锛嶏紞
链変簨𨱍呭ぇ瀹跺彲浠ュ幓璁哄潧
涓嶈繃浣犲傛灉镐у瓙镐
鎴栬呭珜鎴戝洖澶岖殑阃熷害鎱
鎴戝缓璁浣犵洿鎺ヨ仈绯绘垜
鍙瑕佹垜鍦 锘烘湰鍙浠ラ┈涓婄粰浣犺В绛
涓嶅湪鍙浠ョ暀瑷
鎴戠殑涓や釜镵旂郴鏂瑰纺
QQ:9595859
MSN:[email protected]
链钖 璇翠竴涓浜
鎴戠殑濂虫湅鍙嬫渶杩戠敓䦅呬简
镓浠ユ墠瀵艰嚧杩欐湡镄勮剧▼ 杩欎箞鏅氭墠锅氩嚭𨱒
甯屾湜澶у惰兘鐞呜В鎴
鎴戣缮甯屾湜澶у惰兘绁濈忓ス镞╂棩搴峰
涓岖劧镄勮瘽
浣犱滑瑙佸埌鎴戠殑镞ュ瓙鍙鑳戒细灏戜简
鐢氲呖鍙鑳戒细娑埚け鍦ㄤ綘浠鐪煎墠
濂戒简涓嶈翠简 浠婂ぉ灏辨槸鍒版OVER钖
---------- kcarhc
2004骞8链1镞 鍑屾櫒 娌堥槼

--------------------------------------------------------------------------------

-- 浣滆咃细admin
-- 鍙戝竷镞堕棿锛2005-10-11 16:42:00

-- 浣跨敤OllyDbg蹇阃熻㔉澹

浣滆咃细KU-鍑屻
鐩镙囷细閲囩敤ASPACK銆乁PX锷犲3镄凬OTEPAD.EXE
宸ュ叿锛歄llyDbg 1.09鑻辨枃鐗堛丏UMP鎻掍欢銆丳Editor
绯荤粺锛欧in98SE
鍏抽敭璇嶏细 鑴卞3銆丱llyDbg銆丱D銆丏UMP銆丳USHAD銆丳OPAD

棰勫囩煡璇
銆 澶у氭暟澹抽兘链変竴涓鍏卞悓镄勭壒镣广傚湪澹冲嗳澶囧紑濮嬭В铡嬫椂閮借佹墽琛孭USHAD锛屽綋澹宠В铡
瀹屾椂閮借佽皟鐢≒OPAD銆傚埌搴昉USHAD鍜孭OPAD鏄浠涔埚共浠涔堢敤镄勫憿锛熷叾瀹濸USHAD鏄鐢ㄦ潵灏
镓链夋櫘阃氩瘎瀛桦櫒椤哄簭杩涙爤镄勬寚浠わ纴POPAD鏄镓链夋櫘阃氩瘎瀛桦櫒椤哄簭鍑烘爤鎸囦护銆侾OPAD镄勫嚭
镙堥‘搴忓拰PUSHAD鐩稿弽銆傚3涓轰简淇濇姢瀵勫瓨鍣锛屼究鍦ㄨВ铡嫔墠灏嗘墍链夊瘎瀛桦櫒杩涙爤淇濇姢璧锋潵锛
褰撹В铡嫔畬鎴愬悗鍙埚皢瀵勫瓨鍣ㄥ嚭镙堬纴鎭㈠嶅叾铡熻矊锛屽苟灏咺P璁剧疆涓哄师绋嫔簭镄凮EP銆傝繖镙锋垜浠灏卞彲浠ラ氲繃杩欎釜鐗圭偣蹇阃熻㔉鎺夊氱嶈蒋浠剁殑澹炽

ASPACK绡
銆 鍏堢敤ASPACK灏哊OTEPAD.EXE锷犲3銆傜敤OllyDbg锛堜互涓嬬亩绉疠D锛夎浇鍏ャ傜湅瑙佸厜镙囧仠鍦
澹崇殑鍏ュ彛澶勚
0040D001 >銆60銆銆銆銆銆銆銆PUSHAD ;澹崇殑鍏ュ彛銆傚嗳澶囧紑濮嬭В铡嬶纴淇濇姢瀵勫瓨鍣
0040D002銆銆E8 03000000銆銆CALL銆銆NOTEPAD.0040D00A
钬︹
鎴戜滑涓岖″畠锛岀洿鎺ュ悜涓嬬炕椤垫垒POPAD鎸囦护銆傚湪40D3AF澶勬垒鍒癙OPAD
钬︹
0040D3AF銆銆61銆銆銆銆銆銆銆POPAD ;瑙e帇瀹屾垚锛屾仮澶嶅瘎瀛桦櫒
0040D3B0銆銆75 08銆銆銆銆銆JNZ銆銆SHORT NOTEPAD.0040D3BA
0040D3B2銆銆B8 01000000銆銆MOV銆銆EAX, 1
0040D3B7銆銆C2 0C00銆銆銆銆RETN銆銆0C
0040D3BA銆銆68 CC104000銆銆PUSH銆銆NOTEPAD.004010CC ;杩斿洖鍒板师绋嫔簭OEP澶
0040D3BF銆銆C3銆銆銆銆銆銆銆RETN
钬︹
阃夊畾40D3AF杩欎竴琛岋纴F4杩愯屽埌姝ゅ勚傚湪杩欓噷璇存槑澹冲凡缁忓畬鎴愯В铡嫔伐浣溿傚苟涓旇繑锲炲埌铡
绋嫔簭镄勫叆鍙e勚侳8鍗曟ュ埌4010CC锛岃繖閲屼究鏄铡熺▼搴忕殑OEP銆傜敤DUMP鎻掍欢鐩存帴DUMP鍑烘潵灏卞彲浠ヤ简锛埚湪DUMP镞舵敞镒忓皢鍏ュ彛镣规敼涓10CC锛屽嵆4010CC-400000=10CC锛400000鏄鏄犺薄锘哄湴鍧锛夈傛枃浠跺ぇ灏忔槸77059瀛楄妭锛岀敤PEditor閲嶅缓PE澶翠究鍙浠ヤ简銆傛湭铡嬬缉镄勬枃浠跺ぇ灏忔槸53248瀛楄妭锛岃㔉澹冲悗镄勬枃浠跺ぇ灏忔槸60930瀛楄妭銆

UPX绡
銆 鐢║PX灏哊OTEPAD.EXE锷犲3锛岀劧钖庣敤OD杞藉叆銆傚仠鍦≒USHAD澶勶纴鐢ㄨ㔉ASPACK钖屾牱镄勬柟
娉曪纴钖戜笅缈婚〉镓綪OPAD銆
钬︹
0040E9FE銆銆61銆銆銆銆銆銆銆POPAD
0040E9FF銆- E9 C826FFFF銆銆JMP銆銆NOTEPAD.004010CC
钬︹
涓嬮溃镄凧MP灏辨槸璺宠浆鍒扮▼搴忕殑OEP澶勚侳4鍒40E9FF澶勶纴F8鍗曟ヤ竴涓嬶纴𨱒ュ埌OEP澶勶纴DUMP鍑烘潵銆侱UMP鏂囦欢镄勫ぇ灏忔槸65536瀛楄妭锛岀洿鎺ュ氨鍙浠ヨ繍琛屻备负浜嗗畬缇庯纴鐢≒Editor閲嶅缓PE澶淬傞偅涔堣㔉澹冲悗镄勬枃浠跺ぇ灏忔槸60293瀛楄妭銆

钖庤
銆 鐢ㄤ笂闱㈣寸殑鏂规硶锛屽緢澶氱嶅3閮藉彲浠ュ揩阃熺殑镓嫔姩鑴辨帀銆傚傛灉浣犳病链塐D镄凞UMP鎻掍欢锛
鍙浠ュ埌鏂拌哄潧镄勪笅杞藉尯镓俱傚傛灉瀹炲湪娌℃湁锛屼篃鍙浠ョ洿鎺ュ仠鍦∣EP澶勭敤PEDump𨱒DUMP銆傚緢涔呮病链夊啓涓滆タ浜嗐傝繖涓绡囨槸鍐欑粰鍒濆﹁呯粌镓嬬殑銆傚叾瀹炲3涔熸槸杞浠讹纴鍐嶆庝箞澶嶆潅閮芥湁鍙鑳借鑴变笅𨱒ャ傜濅綘濂借繍銆
銆 鍙﹀栵纴杞杞芥椂璇蜂缭鎸佹湰鏂囩殑瀹屾暣銆

--------------------------------------------------------------------------------

-- 浣滆咃细admin
-- 鍙戝竷镞堕棿锛2005-10-11 17:10:00

-- 鐢∣llydbg镓嬭㔉EncryptPE V1.2003.5.18锷犲3镄凞LL

链夊厔寮熻╃湅鐪婨ncryptPE锷犲3镄凞LL锛屾垜璇存柊鐗堢殑灏变笉琛屼简锛屾闷涓嶅畾镄勚傚悗𨱒ョ湅鏄疎ncryptPE V1.2003.5.18镞х増锷犲3镄勶纴搴旇ョ敤镄勬槸钥佺帇钥佸笀鍙戝竷镄勫厤璐圭増銆傚懙锻碉纴镓浠ヨ㔉浜嗕竴涓嬶纴椤轰究璁板綍杩囩▼銆
澶у跺彲浠ヨ嚜宸辩敤EncryptPE V1.2003.5.18鍏嶈垂鐗埚姞涓狤drLib.dll鐪嬬湅銆

钬斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺
涓銆侀伩寮IAT锷犲瘑

璁剧疆Ollydbg蹇界暐镓链夌殑寮傚父阃夐”銆傜敤IsDebug 1.4鎻掍欢铡绘帀Ollydbg镄勮皟璇曞櫒镙囧织銆
娣诲姞钬滃悓镞跺拷鐣0EEDFADE銆丆0000008銆009B25C銆00953D74钬濆纾甯搞

浠g爜:--------------------------------------------------------------------------------
00877000 60 pushad//杩涘叆OD钖庡仠鍦ㄨ繖
00877001 9C pushfd
00877002 64:FF35 00000000 push dword ptr fs:[0]
00877009 E8 79010000 call EdrLib.00877187
--------------------------------------------------------------------------------

涓嬫柇锛欱P IsDebuggerPresent 鏂涓嫔悗鍙栨秷鏂镣
鐜板湪鎴戜滑Ctrl+G:711A0000
涓轰綍鐢ㄨ繖涓鍦板潃锛熷洜涓笃12003518.EPE鏄鐩稿悓镄勚傚懙锻碉纴阍讳简涓镞х増镄勭┖瀛愩

鍏跺疄鍙浠ュ啀BP GetProcAddress锛屾牴鎹杩斿洖鍦板潃𨱒ュ垽鏂銆傚傛灉杩斿洖鍦板潃鏄711XXXXX锛岃存槑杩欐槸V12003518.EPE镄勮皟鐢锛屽氨鍙浠ュ彇娑堟柇镣笴trl+F9杩斿洖浜嗐傚叿浣撴儏鍐典互鍫嗘爤镄勮繑锲炲湴鍧涓哄嗳銆

鐜板湪Ctrl+S 鍦ㄢ沧暣涓鍖烘碘濇悳绱㈠懡浠ゅ簭鍒楋细

浠g爜:--------------------------------------------------------------------------------
mov eax,edi
mov edx,dword ptr ss:[ebp-8]
mov dword ptr ds:[eax],edx
xor eax,eax
--------------------------------------------------------------------------------

镓惧埌鍦711A339F澶勶纴鎴戜滑鍦711A339F澶勪笅涓 纭浠舵墽琛 鏂镣广
鐜板湪鎴戜滑鍏抽棴Ollydbg锛岄吨鏂拌浇鍏ヨ繖涓猟ll锛岀洿鎺Shift+F9杩愯岋纴涓鏂鍦711A339F澶

浠g爜:--------------------------------------------------------------------------------
711A339F 8BC7 mov eax,edi
711A33A1 8B55 F8 mov edx,dword ptr ss:[ebp-8]
//鏀逛负锛 mov edx,dword ptr ss:[ebp-4] 钸 姝g‘鍑芥暟鍐椤叆
711A33A4 8910 mov dword ptr ds:[eax],edx
711A33A6 33C0 xor eax,eax
711A33A8 5A pop edx
711A33A9 59 pop ecx
711A33AA 59 pop ecx
711A33AB 64:8910 mov dword ptr fs:[eax],edx
711A33AE EB 0A jmp short V1200351.711A33BA
--------------------------------------------------------------------------------

鎶711A33A1澶勪慨鏀瑰ソ涔嫔悗锛屽彇娑堜互鍓崭笅镄711A339F澶勭殑鏂镣广
鍐岰trl+S鎼灭储锻戒护搴忓垪锛

浠g爜:--------------------------------------------------------------------------------
add ebx,4
mov eax,dword ptr ss:[ebp-4C]
add eax,4
--------------------------------------------------------------------------------

镓惧埌鍦711A43C2澶勶纴鎴戜滑鍦ㄤ笅闱xor eax,eax镄711A4401涓嬫柇銆係hift+F9杩愯

浠g爜:--------------------------------------------------------------------------------
711A43C2 83C3 04 add ebx,4
711A43C5 8B45 B4 mov eax,dword ptr ss:[ebp-4C]
711A43C8 83C0 04 add eax,4
711A43CB 8945 B4 mov dword ptr ss:[ebp-4C],eax
711A43CE 8B03 mov eax,dword ptr ds:[ebx]
711A43D0 85C0 test eax,eax
711A43D2 0F87 39FDFFFF ja V1200351.711A4111
711A43D8 A1 74C71B71 mov eax,dword ptr ds:[711BC774]
711A43DD 8038 00 cmp byte ptr ds:[eax],0
711A43E0 75 1F jnz short V1200351.711A4401
711A43E2 8B45 C4 mov eax,dword ptr ss:[ebp-3C]
711A43E5 83C0 14 add eax,14
711A43E8 8945 C4 mov dword ptr ss:[ebp-3C],eax
711A43EB 8B45 C4 mov eax,dword ptr ss:[ebp-3C]
711A43EE 8378 0C 00 cmp dword ptr ds:[eax+C],0
711A43F2 76 0D jbe short V1200351.711A4401
711A43F4 8B45 C4 mov eax,dword ptr ss:[ebp-3C]
711A43F7 8378 10 00 cmp dword ptr ds:[eax+10],0
711A43FB 0F87 38FCFFFF ja V1200351.711A4039//寰鐜澶勭悊IAT
711A4401 33C0 xor eax,eax//姝ゅ勪笅鏂锛 钸
--------------------------------------------------------------------------------

褰撴垜浠涓鏂鍦711A4401澶勬椂IAT宸茬粡澶勭悊瀹屾瘯锛屾ゆ椂灏卞彲浠ョ敤ImportREC寰楀埌姝g‘镄勮緭鍏ヨ〃浜嗐
锲犱负EncryptPE钖庨溃链夎嚜镙¢獙锛屾墍浠ユ垜浠杩斿洖711A33A1澶勶纴镣瑰彸阌锛>鎾ら攒阃夋嫨锛屾仮澶嶅师𨱒ョ殑浠g爜銆

钬斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺
浜屻佸缑鍒伴吨瀹氢綅琛ㄤ俊鎭銆佽幏寰桹EP

Ctrl+S 鍦ㄢ沧暣涓鍖烘碘濇悳绱㈠懡浠ゅ簭鍒楋细

阅读全文

与反编译ref相关的资料

热点内容
8051单片机包含多大的ram 浏览:811
man文件linux 浏览:282
javaweb实现页面跳转 浏览:125
命令如什么 浏览:315
centos如何使用ftp服务器 浏览:981
直立车陀螺仪算法 浏览:69
coreldrawpdf下载 浏览:895
虚拟主机云服务器软件服务 浏览:370
苹果的怎么拉安卓的打游戏 浏览:412
游戏程序员负责角色 浏览:313
于丹pdf 浏览:716
反编译ref 浏览:550
鸿蒙智能文件夹怎么弄 浏览:547
grunt压缩html 浏览:791
macpdfword转换器 浏览:907
压缩面膜是什么材质 浏览:355
抖音发布作品怎么建文件夹 浏览:17
安卓如何更改谷歌地区 浏览:276
airpods为什么安卓连上声音很大 浏览:514
联想服务器按钮怎么开不了机 浏览:99