随笔分类 -  破解逆向

摘要:IA-32指令解析详解 0x00 前言 这段时间忙于考试,信息论和最优化,还有算法分析,有点让人头大。期间花了几天看SEH机制,能明白个大概,但是对于VC++对于SHE的包装似乎还是不是很明白,发现逆向工程核心原理对于这段写的太简单,至于加密与解密则是模棱两可,软件加密技术内幕倒是详解了,可是太老了 阅读全文
posted @ 2018-12-15 20:07 2f28 阅读(3583) 评论(0) 推荐(1)
摘要:TLS回调函数以及反调试简单使用 0x00 TLS介绍 TLS(Thread Local Storage,线程局部储存),主要用于给线程独立的传值,由于线程不拥有进程的资源,所以几个同一进程的几个线程需要独立赋值时的需要通过TLS技术。每个线程创建时都会分配一个index所以,这个索引index是全 阅读全文
posted @ 2018-12-01 21:12 2f28 阅读(3701) 评论(0) 推荐(0)
摘要:通过注入DLL后使用热补丁钩取API 0x00 对比修改API的前五个字节钩取API 对前一种方法钩取API的流程梳理如下: 所以每次进入新函数后就要反复进行挂钩脱钩,这是一个极度消耗cpu的工作,特别是对于要整个系统的进程都要注入dll时就更要命了。 现在有一种更好的方式来弥补这种方法的不足,这就 阅读全文
posted @ 2018-11-26 15:22 2f28 阅读(682) 评论(0) 推荐(0)
摘要:通过注入DLL修改API代码实现钩取(一) Ox00 大致思路 本实验目标:注入指定dll后隐藏我们的目标进程。 下面两图表示了API钩取之前与API被钩取之后程序的执行过程: 其实明白之后发现原理并不是很难,无非就是先获取到API函数的地址,然后再把原先API的首地址改为JMP 指令跳往指定函数, 阅读全文
posted @ 2018-11-24 20:54 2f28 阅读(1272) 评论(0) 推荐(0)
摘要:通过调试对WriteFile()API的钩取 0x00 目标与思路 目标:钩取指定的notepad.exe进程writeFile()API函数,对notepad.exe进程的写入的字符保存时保存为大写形式 思路: 1)使用DebugActiveProcess函数使调试器附加到指定进程中。 2)使用W 阅读全文
posted @ 2018-11-20 18:57 2f28 阅读(384) 评论(0) 推荐(0)
摘要:代码注入——汇编编写注代码 0x00 思路 在准备些汇编代码之前,我们先要理清楚整个调用过程的思路,以及过程中的参数传递过程。我的的目标是在指定的目标程序中注入一个messagebox线程,首先要调用messageBox就需要用到LoadLibrary装入user32库函数。我们还需要Getproc 阅读全文
posted @ 2018-11-18 17:39 2f28 阅读(1976) 评论(0) 推荐(0)
摘要:代码注入之——c++代码注入 0x00 代码注入和DLL注入的区别 0x01 通过c++编写注入代码 1)编写注入程序 代码如下: // CodeInjection.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include "pch.h" #include < 阅读全文
posted @ 2018-11-17 16:33 2f28 阅读(4020) 评论(1) 推荐(1)
摘要:DLL注入之修改PE静态注入 0x00 前言 我们要注入的的力量功能是下载baidu首页数据。代码如下: #include "stdio.h" #include"stdio.h" #include "windows.h" #include "shlobj.h" #include "Wininet.h 阅读全文
posted @ 2018-11-16 16:28 2f28 阅读(2431) 评论(0) 推荐(0)
摘要:DLL注入之windows消息钩取 0x00 通过Windows消息的钩取 通过Windows消息钩取可以使用SetWindowsHookEx。该函数的原型如下: SetWindowsHookEx( __in int idHook, \\钩子类型 __in HOOKPROC lpfn, \\回调函数 阅读全文
posted @ 2018-11-13 19:07 2f28 阅读(1046) 评论(0) 推荐(0)
摘要:0x00 前言 对于上篇所讲的那个练习,PE文件属于运行时解压缩文件,而且文件包含校验和检验,如果直接修改代码可能得花点功夫了。对于这种情况我们可以使用内嵌补丁轻松解决。 由上图我们知道要进行运行内嵌补丁,先得找到外壳程序跳往OEP的关键跳转。上篇我们已经知道4018083处为跳往OEP的关键跳。 阅读全文
posted @ 2018-11-11 10:52 2f28 阅读(264) 评论(0) 推荐(0)
摘要:内嵌补丁练习(一) 0x00 前言 首先介绍以下运行时压缩或者运行解压文件,这类文件通常是代码在运行之前已经压缩过或者代码被加密过,在运行过程中在进行解压缩或者解密的PE文件。通常这样做的目的可能为了压缩文件体积或者加密代码保护代码安全。下图位运行时解压缩文件和普通压缩文件对比。 0x01 调试查看 阅读全文
posted @ 2018-11-10 21:53 2f28 阅读(322) 评论(0) 推荐(0)
摘要:0x00《逆向工程核心原理》 不得不说这本书真是很适合入门,而且讲的特别细致,纵使我已经看过了《加密与解密》但是看一章开始我发现我还是能获得很多东西,要入门这本书一定要看!!! 0x01 《加密与解密第三版》 本书是著名的看雪论坛的著作,也是很经典的一本书,我们图书馆居然第一版第二版,第三版都有,而 阅读全文
posted @ 2018-11-04 16:18 2f28 阅读(740) 评论(0) 推荐(0)
摘要:0x00 前言 对于脱壳后的程序往往不能直接运行,这是因为它们很多都没有重建输入表。当然用的od脱壳可能可以。重建输入表一般都是用专业软件比如ImportREC。但是对于逆向研究者来说会自己重讲输入表是必须的技能。这就需要读者对前面几篇所讲的PE文件格式非常熟悉。 0x01 寻找OEP脱壳脱壳 前面 阅读全文
posted @ 2018-10-29 15:23 2f28 阅读(732) 评论(0) 推荐(0)
摘要:0x00 前言 上一篇介绍了壳程序的加载过程以及通过两次内存断点法寻找OEP,这篇我们将利用新的的方法——堆栈平衡法来寻找OEP。 0x01 堆栈平衡法原理 堆栈平衡原理就是利用壳程序在运行前后需要保存和恢复原程序的堆栈环境来实现的。我们可以把壳程序当作一个子程序,调用这个子程序前,肯定需要保存原程 阅读全文
posted @ 2018-10-26 14:58 2f28 阅读(1915) 评论(0) 推荐(0)
摘要:0x00 前言 对于加壳程序第一件事就是要找到OEP(oringinal Entry point),由于加壳的缘故,当PE文件载入OD或者其他调试软件时进入的的往往是壳程序的入口地址。所以要进行逆向分析第一步就必须找到PE程序的原始入口点。 0x01 壳的加载过程 壳和病毒在某些方面比较类似,都需要 阅读全文
posted @ 2018-10-26 11:40 2f28 阅读(1772) 评论(0) 推荐(0)
摘要:0x00 前言 前面了解了PE文件的输入和输出,今天来看看另一个重要的结构——资源。资源结构是很典型的树形结构,层层查找,最终找到资源位置。 0x01 资源结构介绍 Windows程序的各种界面成为资源,包括加速键,位图,光标,对话框,图标,菜单,串标,工具栏,版本信息等等,在所有的PE文件中资源结 阅读全文
posted @ 2018-10-23 14:33 2f28 阅读(2286) 评论(0) 推荐(3)
摘要:PE文件格式详解(七) Ox00 前言 前面好几篇在讲输入表,今天要讲的是输出表和地址的是地址重定位。有了前面的基础,其实对于怎么找输出表地址重定位的表已经非常熟悉了。 0x01 输出表结构 当创建一个DLL文件时,实际上创建了一组能让EXE或者其他DLL调用的一组函数,PE装载器根据DLL文件中输 阅读全文
posted @ 2018-10-22 16:46 2f28 阅读(2271) 评论(0) 推荐(0)
摘要:0x00 前言 前面两篇讲到了输出表的内容以及涉及如何在hexWorkShop中找到输出表及输入DLL,感觉有几个地方还是没有理解好,比如由数据目录表DataDirectory[16]找到输出表表后以为找到输入DLL就完了,其实这一流程的最终功能是通过输入DLL找到输入DLL调用的函数,这一步骤是通 阅读全文
posted @ 2018-10-21 11:04 2f28 阅读(2504) 评论(0) 推荐(0)
摘要:0x00 前言 前一篇了解了区块虚拟地址和文件地址转换的相关知识,这一篇该把我们所学拿出来用用了。这篇我们将了解更为重要的一个知识点——输入表和输出表的知识。 0x01 输入表 首先我们有疑问。这个输入表是啥?为啥有输入表?其实输入表就是记录PE输入函数相关信息的一张表。那为什么要有这张表?答:原来 阅读全文
posted @ 2018-10-19 21:42 2f28 阅读(3280) 评论(0) 推荐(0)
摘要:0x00 前言 上一篇介绍了区块表的信息,以及如何在hexwrokshop找到区块表。接下来,我们继续深入了解区块,并且学会文件偏移和虚拟地址转换的知识。 0x01 区块对齐值 首先我们要知道啥事区块对齐?为啥要区块对齐?这个问题其实困扰了我很久,只能怪我操作系统没学好。。。我现在的理解是由于内存和 阅读全文
posted @ 2018-10-19 19:25 2f28 阅读(3404) 评论(0) 推荐(0)