合集-基础知识

摘要:32位软件逆向技术 在编写win32应用程序时,都必须在源码里实现一个winmain函数,但首先执行的是启动函数的相关代码,由编译器生成。 函数的识别: call指令与跳转指令功能类似,不同的是,call指令保存返回信息,即将其之后的指令地址压入栈的顶部,当遇到ret指令时返回这个地址。 函数的参数 阅读全文
posted @ 2024-03-23 21:18 robot__i 阅读(90) 评论(0) 推荐(0)
摘要:序列号保护方式从网上下载的共享软件一般都有使用功能或者时间上的限制,如果超过了共享软件的试用期,注册过程一般是用户把自己的信息告诉软件公司,软件公司根据用户的信息,利用预先编写的一个用于计算注册码的程序算出一个序列号,并以电子邮件等形式将其发给用户。用户得到序列号之后在软件中输入注册信息和序列号。当 阅读全文
posted @ 2024-03-25 14:17 robot__i 阅读(67) 评论(0) 推荐(0)
摘要:对象是引用计数的——只有当对象的最后一个引用被释放之后,对象才会被销毁并从内存中释放。 对象不能被用户模式直接访问,用户模式通过一种间接的访问模式,这种机制被称为句柄,句柄是指向一个表格的入口索引。该表格在进程的基础上维护,逻辑上指向驻留在系统空间的一个内核对象。有各种函数用来打开,创建对象,并返回 阅读全文
posted @ 2024-03-29 12:13 robot__i 阅读(115) 评论(0) 推荐(0)
摘要:简介: ELF (Executable and Linkable Format)文件,也就是在 Linux 中的目标文件,主要有以下三种类型 可重定位文件(Relocatable File),包含由编译器生成的代码以及数据。链接器会将它与其它目标文件链接起来从而创建可执行文件或者共享目标文件。在 L 阅读全文
posted @ 2024-04-20 20:54 robot__i 阅读(431) 评论(0) 推荐(0)
摘要:二进制安全学习路线思维导图这里简单写了一下二进制安全的学习路线,后期还会进一步补充,希望能有帮助! 阅读全文
posted @ 2024-05-04 16:55 robot__i 阅读(71) 评论(0) 推荐(0)
摘要:壳的加载过程: 保存入口参数 加壳程序初始化时保存各寄存器的值 外壳执行完毕,恢复各寄存器值 最后在跳到源程序执行 获取所需函数API 一般壳的输入表中只有GetProcAdress、GetModuleHandle和LoadLibrary这几个API函数 如果需要其他API函数,则通过LoadLib 阅读全文
posted @ 2024-05-05 19:51 robot__i 阅读(133) 评论(0) 推荐(0)
摘要:1.SafeSEH机制 (1)编译器的工作 如果编译时打开这个开关,那么编译器就会在PE头的DllCharacteristics中加入一个标志,并在编译阶段提取所有异常处理程序的相对虚拟地址(RVA ),并将它放置在一个表中。这个表的位置是由PE头部的IMAGE_OPTIONAL_HEADER结构中 阅读全文
posted @ 2024-05-07 14:40 robot__i 阅读(46) 评论(0) 推荐(0)
摘要:函数检测 原理:函数检测就是通过windows自带的公开或未公开的函数直接检测程序是否处于调试状态。最简单的调试器检测函数是IsDebuggerPresent(): 该函数查询进程环境块(PEB)中的BeingDebugged标志,如果进程处在调试上下文中,则返回一个非零值,否则返回零。 BOOL 阅读全文
posted @ 2024-05-19 13:56 robot__i 阅读(86) 评论(0) 推荐(0)
摘要:CPU简介 CPU寄存器:每种cpu都有其固定的通用寄存器(GPR)。x86cpu里一般有8个GPR,x64里往往有16个,而arm里则通常有16个GPR,您可以认为CPU寄存器是一种存储单元,能够无差别的存储所有临时变量。 最简函数 int f() { return 123; } arm GCC4 阅读全文
posted @ 2024-06-06 13:24 robot__i 阅读(89) 评论(0) 推荐(0)
摘要:简介:运行时压缩是软件逆向分析学的常见主题,为了理解好它,需要掌握有关PE文件格式,操作系统的基本知识,同时也要了解有关压缩/解压缩算法的基本内容. 数据压缩 不论哪种形态的文件,都是由二进制组成的,只要使用合适的压损算法,就能减缩其大小,若不能复原,就称为有损压缩. 无损压缩 无损压缩用来缩减文件 阅读全文
posted @ 2024-06-21 21:08 robot__i 阅读(177) 评论(0) 推荐(0)