J2ME逆向工程实战(逆向某著名即时通讯软件

0 阅读 作者:adsadadaddadasda 2017-10-18

原文:http://bbs.csdn.net/topics/310236434


何谓逆向工程?所谓逆向工程就是分析编译之后的二进制文件,并且依据分析出的程序架构重写全部代码。

逆向工程有什么好处?软件开发是一个逐步求精的过程,一款成熟的软件需要许多人付出艰辛的努力不断的测试,这是一个耗费大量时间与金钱的过程,而逆向工程可以直接分析稳定运行的成熟的软件,写出源代码,在此基础上二次开发,从而降低开发成本与风险。

以逆向某著名即时通讯软件(手机J2ME版)为例,需要做的准备工作如下:
一:知识准备
必须熟悉Java虚拟机指令。用IDA工具反编译之后的代码以虚拟机指令码显示,所以必须要知道指令的具体含义。参考文档:http://java.sun.com/docs/books/jvms/second_edition/html/VMSpecTOC.doc.html
二:工具准备
主要使用3种工具,它们是DJ Java Decompiler, IDA, Eclipse。
使用DJ Java Decompiler完成初步的反编译,此工具依据class文件生成java文件,不过,遇到逻辑稍微复杂一点的代码,它就无能力了,这时候就要用到IDA。IDA是一款非常强大的反编译工具,可以用流程图的方式显示反编译之后的指令。

做好以上准备之后就可以开始工作了,先使用DJ Java Decompiler分析整个jar包,自动生成java代码文件,生成的代码文件有许多错误,在总共323个类文件中,有137个类文件有错误。DJ Java Decompiler已经完成了它的使命,下面该Eclipse和IDA出场了,在Eclipse中新建立一个Eclipse Me工程,把生成的java类文件复制到该工程所在文件夹中的src目录中,编译工程,以便让Eclipse检测到有错误的类。使用IDA逐个分析有错误的类,手工重写代码,当全部错误更正之后,再开始分析每行代码的含义。由于代码已经被混淆过,生成的类,字段,方法全是以a,b,c字母表示,需要对每个类,字段,方法赋予有意义的名称。在此示例中,字符串资源有655个,颜色值有104个,为此还要在Excel编写脚本,以便辅助分析源代码(未完待续)。



原文地址:http://blog.csdn.net/adsadadaddadasda/article/details/78235325
广告一下
热门教程
PHP7报A non well formed numeric value encountered 0
Linux系统下关闭mongodb的几种命令分享 0
mongodb删除数据、删除集合、删除数据库的命令 0
Git&Github极速入门与攻坚实战课程 0
python爬虫教程使用Django和scrapy实现 0
libnetsnmpmibs.so.31: cannot open shared object file 0
数据结构和算法视频教程 0
redis的hash结构怎么删除数据呢? 0
C++和LUA解析器的数据交互实战视频 0
mongodb errmsg" : "too many users are authenticated 0
C++基础入门视频教程 0
用30个小时精通C++视频教程可能吗? 0
C++分布式多线程游戏服务器开发视频教程socket tcp boost库 0
C++培训教程就业班教程 0
layui的util工具格式时间戳为字符串 0
C++实战教程之远程桌面远程控制实战 1
网络安全培训视频教程 0
LINUX_C++软件工程师视频教程高级项目实战 0
C++高级数据结构与算法视频教程 0
跨域问题很头疼?通过配置nginx轻松解决ajax跨域问题 0
相关文章
【译】JavaScript数据结构(3):单向链表与双向链表 16
10个JavaScript难点 16
【译】苹果拒绝支持PWA,有损Web的未来 16
iView 一周年了,同时发布了 2.0 正式版,但这只是开始... 16
nodejs+mongodb构建一个简单登录注册功能 16
【译】JavaScript数据结构(4):树 16
组件化开发与黑箱 16
TypeScript - 不止稳,而且快 16
webpack3+anujs+ReactCSSTransitionGroup 16
原生js实现图片放大镜效果 16
WEB缓存探究第二弹——实战 16
纯笔记:vfork 的一些使用场景(顺便讲一下 fork 的原理) 16
Android APP 内部捐赠实现(支付宝&微信) 16
WKWebView 的一些小总结 16
模型评价(一) AUC大法 16
开始使用GraphQL 16
Webpack模块化原理简析 16
gulp使用问题记录 16
使用Angular4动画为页面添彩 16
Python27 Matplotlib (win64 python2.7) 安装及简单使用 16