1. 初识APK、Dalvik字节码以及Smali

后缀名为.apk是安卓手机app的格式。它的实质是一个ZIP压缩包,将它的后缀名修改为.zip便可以看到内部的文件结构。解压出来后一般有以下文件:

阅读全文 »

由于吾爱虚拟机是32位的,运行不了64位程序,所以这节课用物理机来操作。

1. 课程例子

拿到程序,先运行一下熟悉流程,再查壳,发现有MPRESS壳(压缩壳)。压缩壳在壳段开始的时候做的第一件事往往是pushad(保存寄存器),在壳段结束的时候做的最后一件事是popad(还原寄存器),所以我们可以用ESP定律脱压缩壳。但在64位的程序下,一般不会这么做。

阅读全文 »

在做第五六课的打补丁作业时,遇到了在不脱壳的情况下修改程序。在复制到可执行文件时提示“无法定位数据”。这是因为程序加壳后,代码段显示全是空代码,我们修改代码时,系统执行将某代码1修改为某代码2,但系统在代码段找不到某代码1,所以提示“无法定位数据”。

但如果我们将程序脱壳了,就可在程序上随意修改,所以脱壳的重要性就体现出来了。脱壳毁一生,破解穷三代(bushi)。

阅读全文 »

1. 课前预习

  • 熟悉OD字符串插件的使用
    右键或插件->中文搜索引擎->智能搜索,Ctrl+F搜索字符串。

  • 熟悉OD如何下断点
    Ctrl+G,直接搜索API下断
    Ctrl+N,输入表搜索API->右键->在每个参考上设置断点
    利用插件,ApiBreak和API断点设置工具都可以

阅读全文 »

1. 基础知识

1.1 协议

网络验证协议分为UDP和TCP协议。

目前市面上流行的网络验证一半都是TCP协议的。

采用TCP协议程序发送数据所用API为:send,接收数据所用API为:recv

采用UDP协议程序发送数据所用API为:WSASend,接收数据所用API为:WSARecv

阅读全文 »

1. 程序是什么语言编译的

从目前国内接触到程序看,比较流行的编译器有:VC系列、易语言、.NET、Delphi,一些曾经用的很多但渐渐少了有:VB、ASM、BC++,还有一些用的比较少的有:AutoIt、PB、QT等,下面提供一些实例,结合实例来看看“入口点代码”、“程序区段”和“加载模块”等特征。

阅读全文 »

拿到程序的第一时间运行一下,熟悉一下程序的流程。这个程序的流程是要我们输入UID和key。用PE工具查一下壳,发现有UPX壳,用ESP定律即可脱壳。验证程序是否脱壳成功,可载入OD看是否能查询到字符串,或载入IDA查看是否有函数或是否可以反编译出伪代码。脱壳后还要保证程序与未脱壳程序执行的流程要一致。

阅读全文 »