![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
复读机
「已注销」
这个作者很懒,什么都没留下…
展开
-
加密与解密——序列号保护方式
序列号保护的本质就是验证用户名和序列号之间的映射关系,越复杂的映射关系越难破解,根据映射关系的不同,程序检测序列号有以下几种方式: 序列号 = F (用户名) 如果把这个过程看作加密解密并进行密文对比的过程,那么用户名就是明文,而序列号则是密文,F函数就是加密算法了。这种保护方法虽然简单,但极为不安全,因为在程序运行的某一时刻,内存中一定会出现正确的序列号,也就是加密函数结束后。只...原创 2019-01-23 00:23:45 · 4901 阅读 · 0 评论 -
加密与解密——防范算法求逆
U表示用户名R表示序列号F表示验证函数 堡垒战术堡垒战术的基本思想就是原地固守,用尽手段使得一段算法得坚不可摧,难以求逆。堡垒战术融入了身份验证和数字签名的一些思想,它将只有软件开发者才知道的一个特征值或指纹作为验证算法的一部分,以这个特征值的散列映射作为最后的对比值。特征值与验证算法混合起来后,令人无法分辨,在没有找到特征值的情况下使得逆向算法变为不可行。例:(其中MD5...原创 2019-01-23 00:25:09 · 318 阅读 · 0 评论 -
加密与解密——抵御静态分析
抵御静态分析本质上就是降低反汇编代码的可读性,不过这种保护方式通常只是起到了扰乱作用,如果只是单独使用其中一种,那就只是纸老虎而已,理论上通过动态分析的方法,可以完全无视这样的保护,所以这些保护技术需要和其他保护技术相互配合才能达到良好的效果。 花指令数据与代码的区分是反汇编中的一个关键问题,花指令就是向代码中添加一些无用的数据和代码,使得反汇编器的反汇编结果出现局部不正确的情况,或者...原创 2019-01-23 00:28:04 · 561 阅读 · 0 评论 -
anti-debug1——侦测
BeingDebugged标记最简单也最常用的反调试方法就是使用IsDebuggerPresent函数了,它返回一个标志位BeingDebugged,这个标志位存在于PEB(进程环境块)中,偏移位置为0x2IsDebuggerPresent(void){return NtCurrentPeb()->BeingDebugged;}要找到BeingDebugged在当前进...原创 2019-01-23 00:29:35 · 423 阅读 · 0 评论 -
anti-debug2——扰乱
利用SEH反调试在SEH的机制下,当发生异常时,操作系统会接收这个异常然后调用进程中注册的SEH处理,但这样的异常发生在调试中时,异常就会由调试器来接收处理,根据这个特征就可用来反调试。EXCEPTION_BREAKPOINT是断点异常,若程序处于调试运行状态。则系统会立刻停止运行程序,并将控制权交给调试器。所以当遇到int3指令时,正常运行的程序会调用SEH中的代码处理,而调试中的...原创 2019-01-23 00:30:41 · 497 阅读 · 0 评论 -
anti-debug0——结构
注:这里的反调试技术主要针对Windows平台TEBTEB指线程环境块,它是一个结构体,包含进程中运行线程的各种信息,每个线程中都有一个对应的TEB结构体。由于这个结构体实在太复杂,这里只说几个跟调试有关的部分。+0x30 ProcessEnvironmentBlock它是指向PEB结构体的指针,PEB是进程控制块,每个进程都有一个对应的PEB+0x00 Nt...原创 2019-01-23 00:31:49 · 208 阅读 · 0 评论 -
加密与解密——虚拟机的设计
虚拟机的设计这里说的虚拟机是一种解释执行的系统,类似现在许多解释执行的语言,它可以将自定义的中间字节码当作机器码来执行,仿佛就是在一台机器上执行的一样。而虚拟机保护技术就是基于这样的思想,软件作者通过设计一个虚拟机来执行关键算法和代码,这样,破解人员想要还原出算法,就必须要先对这个解释器进行全方位的分析,最后找出自定义的指令集,才能还原出伪汇编代码,这样使得逆向分析的工作量大大增加,再配合上诸...原创 2019-01-23 00:35:15 · 1192 阅读 · 0 评论 -
APK文件 | Dalvik虚拟机与Smali语法
APK结构apk文件从文件结构上来讲,是zip压缩包格式,可以直接通过解压工具打开,例如:META-INF目录这个文件夹下存放的是签名信息。res目录这个文件夹下存放的是app需要的资源文件,如图片、布局等。lib目录这个文件夹下存放的是应用的依赖库,是以.so的后缀名结尾的文件。根据硬件的CPU架构,可分为4种:ARM、ARM-V7、MIPS和X86,所以通常存在...原创 2019-02-25 19:58:54 · 361 阅读 · 0 评论