随笔分类 - 汇编学习
摘要:IA-32指令解析详解 0x00 前言 这段时间忙于考试,信息论和最优化,还有算法分析,有点让人头大。期间花了几天看SEH机制,能明白个大概,但是对于VC++对于SHE的包装似乎还是不是很明白,发现逆向工程核心原理对于这段写的太简单,至于加密与解密则是模棱两可,软件加密技术内幕倒是详解了,可是太老了
阅读全文
摘要:TLS回调函数以及反调试简单使用 0x00 TLS介绍 TLS(Thread Local Storage,线程局部储存),主要用于给线程独立的传值,由于线程不拥有进程的资源,所以几个同一进程的几个线程需要独立赋值时的需要通过TLS技术。每个线程创建时都会分配一个index所以,这个索引index是全
阅读全文
摘要:DLL注入之修改PE静态注入 0x00 前言 我们要注入的的力量功能是下载baidu首页数据。代码如下: #include "stdio.h" #include"stdio.h" #include "windows.h" #include "shlobj.h" #include "Wininet.h
阅读全文
摘要:0x00 前言 对于上篇所讲的那个练习,PE文件属于运行时解压缩文件,而且文件包含校验和检验,如果直接修改代码可能得花点功夫了。对于这种情况我们可以使用内嵌补丁轻松解决。 由上图我们知道要进行运行内嵌补丁,先得找到外壳程序跳往OEP的关键跳转。上篇我们已经知道4018083处为跳往OEP的关键跳。
阅读全文
摘要:内嵌补丁练习(一) 0x00 前言 首先介绍以下运行时压缩或者运行解压文件,这类文件通常是代码在运行之前已经压缩过或者代码被加密过,在运行过程中在进行解压缩或者解密的PE文件。通常这样做的目的可能为了压缩文件体积或者加密代码保护代码安全。下图位运行时解压缩文件和普通压缩文件对比。 0x01 调试查看
阅读全文
摘要:0x00《逆向工程核心原理》 不得不说这本书真是很适合入门,而且讲的特别细致,纵使我已经看过了《加密与解密》但是看一章开始我发现我还是能获得很多东西,要入门这本书一定要看!!! 0x01 《加密与解密第三版》 本书是著名的看雪论坛的著作,也是很经典的一本书,我们图书馆居然第一版第二版,第三版都有,而
阅读全文
摘要:其中IP=IP+所读指令的字节数。 那么,所读指令的字节数应该怎么判断呢? 汇编指令长度与寻址方式有关,规律或原则如下: 一、没有操作数的指令,指令长度为1个字节 二、操作数只涉及寄存器的的指令,指令长度为2个字节 如:mov bx,ax 三、操作数涉及内存地址的指令,指令长度为3个字节 如:mov
阅读全文
摘要:0x00 前言 对于脱壳后的程序往往不能直接运行,这是因为它们很多都没有重建输入表。当然用的od脱壳可能可以。重建输入表一般都是用专业软件比如ImportREC。但是对于逆向研究者来说会自己重讲输入表是必须的技能。这就需要读者对前面几篇所讲的PE文件格式非常熟悉。 0x01 寻找OEP脱壳脱壳 前面
阅读全文
摘要:0x00 前言 上一篇介绍了壳程序的加载过程以及通过两次内存断点法寻找OEP,这篇我们将利用新的的方法——堆栈平衡法来寻找OEP。 0x01 堆栈平衡法原理 堆栈平衡原理就是利用壳程序在运行前后需要保存和恢复原程序的堆栈环境来实现的。我们可以把壳程序当作一个子程序,调用这个子程序前,肯定需要保存原程
阅读全文
摘要:0x00 前言 对于加壳程序第一件事就是要找到OEP(oringinal Entry point),由于加壳的缘故,当PE文件载入OD或者其他调试软件时进入的的往往是壳程序的入口地址。所以要进行逆向分析第一步就必须找到PE程序的原始入口点。 0x01 壳的加载过程 壳和病毒在某些方面比较类似,都需要
阅读全文
摘要:0x00 前言 前面了解了PE文件的输入和输出,今天来看看另一个重要的结构——资源。资源结构是很典型的树形结构,层层查找,最终找到资源位置。 0x01 资源结构介绍 Windows程序的各种界面成为资源,包括加速键,位图,光标,对话框,图标,菜单,串标,工具栏,版本信息等等,在所有的PE文件中资源结
阅读全文
摘要:PE文件格式详解(七) Ox00 前言 前面好几篇在讲输入表,今天要讲的是输出表和地址的是地址重定位。有了前面的基础,其实对于怎么找输出表地址重定位的表已经非常熟悉了。 0x01 输出表结构 当创建一个DLL文件时,实际上创建了一组能让EXE或者其他DLL调用的一组函数,PE装载器根据DLL文件中输
阅读全文
摘要:0x00 前言 前面两篇讲到了输出表的内容以及涉及如何在hexWorkShop中找到输出表及输入DLL,感觉有几个地方还是没有理解好,比如由数据目录表DataDirectory[16]找到输出表表后以为找到输入DLL就完了,其实这一流程的最终功能是通过输入DLL找到输入DLL调用的函数,这一步骤是通
阅读全文
摘要:0x00 前言 前一篇了解了区块虚拟地址和文件地址转换的相关知识,这一篇该把我们所学拿出来用用了。这篇我们将了解更为重要的一个知识点——输入表和输出表的知识。 0x01 输入表 首先我们有疑问。这个输入表是啥?为啥有输入表?其实输入表就是记录PE输入函数相关信息的一张表。那为什么要有这张表?答:原来
阅读全文
摘要:0x00 前言 上一篇介绍了区块表的信息,以及如何在hexwrokshop找到区块表。接下来,我们继续深入了解区块,并且学会文件偏移和虚拟地址转换的知识。 0x01 区块对齐值 首先我们要知道啥事区块对齐?为啥要区块对齐?这个问题其实困扰了我很久,只能怪我操作系统没学好。。。我现在的理解是由于内存和
阅读全文
摘要:0x01 前言 上一篇讲到了数据目录表的结构和怎找到到数据目录表(DataDirectory[16]),这篇我们我来讲讲数据目录表后面的另一个结构——区块表。 0x01 区块 区块就是PE载入器将PE文件载入后,将PE文件分割成若干块,每块包含不同的信息,由读写数据块.data,代码块.code,只
阅读全文
摘要:0x00 前言 上一篇讲到了PE文件头的中IMAGE_FILE_HEADER结构的第二个结构,今天从IMAGE_FILE_HEADER中第三个结构sizeOfOptionalHeader讲起。这个字段的结构名也叫做IMAGE_OPTIONAL_HEDAER讲起。 0x01 IMAGE_OPTIONA
阅读全文
摘要:PE文件格式介绍(一) 0x00 前言 PE文件是portable File Format(可移植文件)的简写,我们比较熟悉的DLL和exe文件都是PE文件。了解PE文件格式有助于加深对操作系统的理解,掌握可执行文件的数据结构机器运行机制,对于逆向破解,加壳等安全方面方面的同学极其重要。接下来我将通
阅读全文
摘要:转自:https://www.cnblogs.com/huhewei/p/6080143.html 一、概述 __stdcall、__cdecl和__fastcall是三种函数调用协议,函数调用协议会影响函数参数的入栈方式、栈内数据的清除方式、编译器函数名的修饰规则等。 二、调用协议常用场合 __s
阅读全文
摘要:前言:对于经常接触逆向或者汇编的肯定都对push ebp,mov ebp, esp这两句印象深刻,由于他们经常出现在过程的开头,这也是找段首的一个依据,但是,过程为啥总要以这两句开头,这其中又有什么道理呢? 参考自:https://www.cnblogs.com/mengfanrong/p/5421
阅读全文

浙公网安备 33010602011771号