搜档网
当前位置:搜档网 › 脱壳基础知识入门

脱壳基础知识入门

脱壳基础知识入门
脱壳基础知识入门

脱壳基础知识入门

现在加解密发展己形成2个分支了,一个就是传统的算法,另一个就是加密壳。越来越多的软件采用了密码学相关算法,现在要做出一个软件注册机己不象前几年那么容易,这就要求解密者必须要有一定的数学功底和密码学知识,而这些在短时间内是不容易掌握的。除了密码学的应用,越来越多的软件加壳了,因此要求解密者必须掌握一些脱壳技术,这就使得壳成了解密必须迈过的一个门槛。壳发展到今天,强度越来越高了,将许多人挡在门外,使得大家望壳兴叹。另外,论坛现在两极分化比较严重,高手讨论的脱壳技术新手看不懂,很多人想学脱壳,但看到壳这么难,只好放弃了,造成新手与高手间一个断档,为了鼓励更多新人加入脱壳的行列,很有必要将壳有关知识总结一下。https://www.sodocs.net/doc/3113666413.html,主页提供的教学确实有点过时了,己到非更新不可了。相对于密码学算法,脱壳并不难,只要肯花时间,短期内还是比较容易取得成绩的。

第一课PE格式

要想学脱壳,第一步就得掌握PE格式,PE是Portable Executable File Format(可移植的执行体)简写,它是目前Windows平台上的主流可执行文件格式。

Microsoft Visual C++提供的WINNT.H里有PE数据结构的完整定义。

推荐文档:

ah007翻译的“PE文件格式”1.9版

qduwg翻译的PE文件格式

Iczelion's的PE文件格式

PE结构各字段偏移参考

学习PE格式的方法是自己先准备一个十六进制工具,如HexWorkshop,WinHex,用这些工具打开一个EXE文件对照着学。强烈推荐你用Stud_PE v.2.2.0.5这款工具辅助学习PE格式。PE格式学习的重点是在输入表(Import Table)这块。Stud_PE工具界面:

PE结构图:

第二课SEH技术

结构化异常处理(Structured Exception Handling,SEH)是Windows操作系统处理程序错误或异常的技术。SEH是Windows操作系统的一种系统机制,与特定的程序设计语言无关。

外壳程序里大量地使用了SEH,如果不了解SEH,将会使你跟踪十分困难。

SEH in ASM研究(一)by hume

SEH in ASM研究(二)by hume

Structured Exception Handling

加密与解密二版菜鸟学习笔记(2)-SEH结构化异常处理by ytcswb

由于Ollydbg对SEH处理异常灵活,因此脱壳用Ollydbg会大大提高效率。

附CONTEXT结构环境:

代码:

typedef struct_CONTEXT{

/*000*/DWORD ContextFlags;

/*004*/DWORD Dr0;

/*008*/DWORD Dr1;

/*00C*/DWORD Dr2;

/*010*/DWORD Dr3;

/*014*/DWORD Dr6;

/*018*/DWORD Dr7;

/*01C*/FLOATING_SAVE_AREA FloatSave;

/*08C*/DWORD SegGs;

/*090*/DWORD SegFs;

/*094*/DWORD SegEs;

/*098*/DWORD SegDs;

/*09C*/DWORD Edi;

/*0A0*/DWORD Esi;

/*0A4*/DWORD Ebx;

/*0A8*/DWORD Edx;

/*0AC*/DWORD Ecx;

/*0B0*/DWORD Eax;

/*0B4*/DWORD Ebp;

/*0B8*/DWORD Eip;

/*0BC*/DWORD SegCs;

/*0C0*/DWORD EFlags;

/*0C4*/DWORD Esp;

/*0C8*/DWORD SegSs;

/*0CC*/BYTE ExtendedRegisters[MAXIMUM_SUPPORTED_EXTENSION];

/*2CC*/}CONTEXT;

第三课认识壳

1.什么是壳?

在一些计算机软件里也有一段专门负责保护软件不被非法修改或反编译的程序。它们一般都是先于程序运行,拿到控制权,然后完成它们保护软件的任务。由于这段程序和自然界的壳在功能上有很多相同的地方,基于命名的规则,就把这样的程序称为“壳”了。

推荐文档:

一切从“壳”开始

描述壳的示意图:

2.壳的加载过程

这里谈的加壳工具不是WinZIP、WinRAR等数据压缩工具,而是谈压缩可执行文件EXE或DLL的工具。加壳过的EXE文件是可执行文件,它可以同正常的EXE文件一样执行。用户执行的实际上是外壳程序,这个外壳程序负责把用户原来的程序在内存中解压缩,并把控制权交还给解开后的真正程序,这一切工作都是在内存中运行的,整个过程对用户是透明的。

壳和病毒在某些方面比较类似,都需要比原程序代码更早的获得控制权。壳修改了原程序的执行文件的组织结构,从而能够比原程序的代码提前获得控制权,并且不会影响原程序的正常运行。

这里简单说说一般壳的装载过程。(参考了Ljtt以前写过的一篇文章)

1)获取壳自己所需要使用的API地址

如果用PE编辑工具查看加壳后的文件,会发现未加壳的文件和加壳后的文件的输入表不一样,加壳后的输入表一般所引入的DLL和API函数很少,甚至只有Kernel32.dll以及GetProcAddress这个API函数。

壳实际上还需要其他的API函数来完成它的工作,为了隐藏这些API,它一般只在壳的代码中用显式链接方式动态加载这些API函数:3个脱壳相关的重要函数介绍

2)解密原程序的各个区块(Section)的数据

壳出于保护原程序代码和数据的目的,一般都会加密原程序文件的各个区块。在程序执行时外壳将会对这些区块数据解密,以让程序能正常运行。壳一般按区块加密的,那么在解密时也按区块解密,并且把解密的区块数据按照区块的定义放在合适的内存位置。

如果加壳时用到了压缩技术,那么在解密之前还有一道工序,当然是解压缩。这也是一些壳的特色之一,比如说原来的程序文件未加壳时1~2M大小,加壳后反而只有几百K。

3)重定位

文件执行时将被映像到指定内存地址中,这个初始内存地址称为基地址(ImageBase)。当然这只是程序文件中声明的,程序运行时能够保证系统一定满足其要求吗?

对于EXE的程序文件来说,Windows系统会尽量满足。例如某EXE文件的基地址为0x400000,而运行时Windows 系统提供给程序的基地址也同样是0x400000。在这种情况下就不需要进行地址“重定位”了。由于不需要对EXE 文件进行“重定位”,所以加壳软件把原程序文件中用于保存重定位信息的区块干脆也删除了,这样使得加壳后

的文件更加小巧。有些工具提供“Wipe Reloc”的功能,其实就是这个作用。

不过对于DLL的动态链接库文件来说,Windows系统没有办法保证每一次DLL运行时提供相同的基地址。这样“重定位”就很重要了,此时壳中也需要提供进行“重定位”的代码,否则原程序中的代码是无法正常运行起来的。从这点来说,加壳的DLL比加壳的EXE更难修正。

4)HOOK-API

程序文件中的输入表的作用是让Windows系统在程序运行时提供API的实际地址给程序使用。在程序的第一行代码执行之前,Windows系统就完成了这个工作。

壳一般都修改了原程序文件的输入表,然后自己模仿Windows系统的工作来填充输入表中相关的数据。在填充过程中,外壳就可填充HOOK-API的代码的地址,这样就可间接地获得程序的控制权。

5)跳转到程序原入口点(OEP)

从这个时候起壳就把控制权交还给原程序了,一般的壳在这里会有明显的一个“分界线”。但现在的猛壳己没这界限了,壳里有肉,肉里有壳。

3.压缩引擎

各类加壳软件,其压缩算法一般不是自己实现的,大多是调用其他的压缩引擎。目前压缩引擎种类比较多,不同的压缩引擎有不同特点,如一些对图像压缩效果好,一些对数据压缩效果好。而加壳软件选择压缩引擎有一个特点,在保证压缩比的条件下,压缩速度慢些关系不是太大,但解压速度一定要快,这样加了壳的EXE文件运行起来速度才不会受太大的影响。例如下面几个压缩引擎就能满足这要求:

1.aPLib压缩引擎https://www.sodocs.net/doc/3113666413.html,/,这个库对于低于64K的文件压缩效果较好,速度较快。

2.JCALG1压缩引擎,相对于aPlib,JCALG1对于大文件效果好些。

3.LZMA压缩引擎https://www.sodocs.net/doc/3113666413.html,/zh-cn/sdk.html,LZMA是7-Zip程序中7z格式的默认压缩算法,压缩率很高。

第四课常见压缩壳与加密壳

加壳软件按照其加壳目的和作用,可分为两类:一是压缩(Packers),二是保护(Protectors)。压缩这类壳主要目的是减小程序体积,如ASPacK、UPX和PECompact等。另一类是保护程序,用上了各种反跟踪技术保护程序不被调试、脱壳等,其加壳后的体积大小不是其考虑的主要因素,如ASProtect、Armadillo、EXECryptor 等。随着加壳技术的发展,这两类软件之间的界线越来越模糊,很多加壳软件除具有较强的压缩性能,同时也有了较强的保护性能。

1.ASPacK

主页:https://www.sodocs.net/doc/3113666413.html,/

ASPack是款Win32可执行文件压缩软件,可压缩Windows32位可执行文件(.exe)以及库文件(.dll、.ocx),文件压缩比率高达40%~70%。

2.UPX

主页:https://www.sodocs.net/doc/3113666413.html,/

UPX是一个以命令行方式操作的可执行文件经典免费压缩程序,压缩算法自己实现,速度极快,压缩比极高。(开源)

3.PECompact

主页:https://www.sodocs.net/doc/3113666413.html,/

PECompact同样也是一款能压缩可执行文件的工具(支持EXE、DLL、SCR、OCX等文件)。相比同类软件,PECompact 提供了多种压缩项目的选择,用户可以根据需要确定哪些内部资源需要压缩处理。同时,该软件还提供了加解密的插件接口功能。

4.ASProtect

主页:https://www.sodocs.net/doc/3113666413.html,/

ASProtect是一款非常强大的Windows32位保护工具,这4、5年来,其一直在更新进步。其开发者是俄国人Alexey Solodovnikov。它拥有压缩、加密、反跟踪代码、反-反汇编代码、CRC校验和花指令等保护措施。它使用Blowfish、Twofish、TEA等强劲的加密算法,还用RSA1024作为注册密钥生成器。它还通过API钩子(API hooks,包括Import hooks(GPA hook)和Export hooks)与加壳的程序进行通信。甚至用到了多态变形引擎(Polymorphic Engine)。反Apihook代码(Anti-Apihook Code)和BPE32的多态变形引擎(BPE32的Polymorphic Engine)。并且ASProtect为软件开发人员提供SDK,实现加密程序内外结合。

更多与壳有关的描述参考:

纵横间谁能相抗—论壳与加壳技术作者:forgot

常见加密壳官方站点

ASProtect https://www.sodocs.net/doc/3113666413.html,/

ACProtect https://www.sodocs.net/doc/3113666413.html,/

Armadillo https://www.sodocs.net/doc/3113666413.html,/srt-news.shtml

EXECryptor https://www.sodocs.net/doc/3113666413.html,/cgi-bin/anon-www.cgi/https://www.sodocs.net/doc/3113666413.html,/

Obsidium http://www.obsidium.de/

PESpin http://pespin.w.interia.pl/

VMProtect http://www.polytech.ural.ru/

Xtreme-Protector https://www.sodocs.net/doc/3113666413.html,/xprotector/

Themida/WinLicense https://www.sodocs.net/doc/3113666413.html,/downloads.php

第五课文件类型分析

拿到一个壳,第一步就是用相关工具分析一下是什么壳,然后就可心中有数地跟踪分析。文件分析工具有PEID,FileInfo等。

1.PEiD

PEiD的GUI界面操作非常方便直观。它的原理是利用查特征串搜索来完成识别工作的。各种开发语言都有固定的启动代码部分,利用这点就可识别出是何种语言编编译的。同样,不同的壳也有其特征码,利用这点就可识别是被何种壳所加密。PEiD提供了一个扩展接口文件userdb.txt,用户可以自定义一些特征码,这样就可识别出新的文件类型。

有些外壳程序为了欺骗PEiD等文件识别软件,会伪造启动代码部分,例如将入口代码改成与Visual C++6.0所编程程序入口处类似代码,即可达到欺骗目的。所以,文件识别工具所给出的结果只是个参考,文件是否被加壳处理过,还得跟踪分析程序代码才可得知。可参考这个文档了解如何伪装:让侦测工具把壳识别为VC++7.0的源代码。目前Hying的壳PE-Armor伪装能力是最强的:

PEiD分析不出类型的文件就报告是“Nothing found*”,如出现这情况一般都是未知壳或新版的壳。

下面PEiD识别出这个软件是用Asprotect1.2x加的壳。

2.FileInfo

FileInfo(简称Fi)另一款不错的文件检测工具。Fi运行时是DOS界面,在DOS窗口中运行程序相当不便,建议采用下面的技巧:

1.用鼠标将文件拖到Fi主文件上。

2.将Fi快捷方放进Windows的SendTo文件夹里.以后要分析某文件,只需右击“发送到”功能就可打开Fi。FileInfo升级慢,其识别库不能自定义。而PEiD升级比较频繁,用户也可自定义特征码,因此PEiD用的比较普遍。

有时,FileInfo和PEID会报“PE Win GUI”,Win GUI就是Windows图形用户界面程序统称,表明程序可能没加壳。但不排除也有加壳的可能性,下图是一个ExeCryptor2.2x的壳,FileInfo报“*PE Win GUI*section*??”,其不能识别出来。识别信息中带了个问号,表明FI对给出的结果不是太肯定。

第六课寻找OEP

一般的压缩壳,如Aspack等都有专用的脱壳机。而加密壳(如ASProtect,Armadillo)一般很少有脱壳机,必须手工脱壳。手工脱壳一般情况是分三步:一是查找程序的真正入口点(OEP);二是抓取内存映像文件;三是输入表重建。(当然现在的加密壳复杂些,要考虑更多的东西)

OEP是Original Entry Point缩写,即程序加壳前的真正的入口点。

外壳初始化的现场环境(各寄存器值)与原程序的现场环境是相同的。加壳程序初始化时保存各寄存器的值,外壳执行完毕,会恢复各寄存器内容。其代码形式一般如下:

PUSHFD;将标志寄存器入栈保存

PUSHAD;push eax,ecx,edx,ebx,esp,ebp,esi,edi

……;外壳代码部分

POPAD;pop edi,esi,ebp,esp,ebx,edx,ecx,eax

POPFD;恢复标志寄存器

JMP OEP;

OEP:……;解压后的程序原代码

为了讲述方便,本节用UPX加壳的Win98记事本来演示。首先用PEid查看加壳前的记事本:

PEid显示Notepad.exe程序是用Microsoft Visual C++6.0编译的,接下来用UPX来加壳,方法是开个DOS窗口,用命令upx notepad.exe。如下图所示:

这时再用PEid查看加壳的文件,PEid会给出如下信息:UPX0.89.6-1.02/1.05-1.24->Markus&Laszlo UPX的壳可以用UPX.exe自身来脱,命令是:upx-d文件名。一些变种的UPX壳用UPX.EXE自身脱不了,这时可以试试UPX ShellEx这款工具。

本节实例下载:notepad.upx.rar

脱壳前建议用PE工具LordPE打开目标文件查看一下区块,以尽可能地多了解一些信息,对脱壳有帮助,如下图:

1.根据跨段指令寻找OEP

推荐用Ollydbg来调试脱壳,比SoftICE和TRW2000方便多了。运行Ollydbg,点击菜单“选项/调试设置”,将第一次暂停设在WinMain函数上。再用Ollydbg打开实例notepad.upx.exe就可中断在外壳的入口点处了:

上图相关代码如下:

0040E8C0>60pushad//一开始Ollydbg就会中断这行,这个就是外壳的入口点,注意这个pushad指令绝大多数加壳程序在被加密的程序中加上一个或多个段,所以依据跨段的转移指令(JMP)就可找到真正的入

口点,此时就会有POPAD/POPFD指令出现。UPX用了一次跨段的转移指令(JMP),在跳到OEP处会看到虚拟地址的值有一个突变,此时就能确定OEP了。

UPX壳比较简单,大家不必要跟踪去找这个跨段的转移指令,中断WinMain后,只需要在Ollydbg里往下翻屏,就会发现这个跨段转移指令:

上图相关代码如下:

0040EA0E61popad//注意这里的popad指令,和开始的pushad对应

0040EA0F-E9B826FFFF jmp004010CC//这里跳到OEP,将光标移到这,按F4执行到这行

这一句0040EA0F jmp004010CC就是跳到OEP的指令,执行到这,UPX外壳己将程序解压完毕,并模拟Windows 加载器的将原始程序加载到内存,004010CC就是映射到内存目标程序的入口点,此时就可抓取内存映像文件了。

2.根据堆栈平衡原理找OEP

这个堆栈平衡原理其找OEP原理这篇文档描述的比较详细:寻找真正的入口(OEP)--广义ESP定律作者:Lenus 操作方法:多数壳在运行到OEP的时候ESP=0012FFC4,这就是说程序的第一句是对0012FFC0进行写入操作,只要在0012FFC0下硬件写入断点(命令行里键入HW12FFC0),我们就能停在OEP的第二句处。

用OllyDBG重新加载实例程序notepad.upx.exe,在命令行下硬件写断点:

按F9执行程序,就会中断在OEP第二行:

此时如果将光标向上移,会发现第一句代码变乱了:

004010C7000D0A000055add[5500000A],cl

004010CD8BEC mov ebp,esp

这是因为Ollydbg将数据当汇编代码来分析了,你可以按Ctrl+ALT+向上光标键将当前显示的代码向上滚动一个字节就可看到正确的汇编代码了:

004010CC55push ebp

004010CD8BEC mov ebp,esp//中断在这行

004010CF83EC44sub esp,44

004010D256push esi

004010D3FF15E4634000call[4063E4];kernel32.GetCommandLineA

中断后,别忘点击菜单“调试/硬件断点/”打开硬件断点面板,将刚才的硬件断点删除。

小知识:硬件断点的原理作者:Lenus

3.根据编译语言特点找OEP

各类语言编译的文件入口点都有一些规律,可以这利用这点来寻找入口点。

1)Delphi程序

执行程序,用LordPE(或Prodump)选dump(full)脱壳,存为dump.exe。接着用Hex Workshop打开dump.exe,搜索文本“runtime”,搜到后,向前查找离“runtime”最近的十六进制数字“558B EC”,数字所在的地址就是程序的OEP。

2)Visual C程序

可以利用Visual C启动部分的几个函数GetCommandLineA(W)、GetVersion、GetModuleHandleA(W)、GetStartupInfoA(W)等来定位程序的OEP。

常见的各类编译语言的入口汇编代码都要熟悉,因为一些加密强壳会偷OEP处的代码到壳里,一般情况各编译语言入口代码都相同,到时只需要直接引用相关程序的入口代码,这给我们恢复代码带来方便。

4.用内存断点找OEP

Author:Lenus

From:https://www.sodocs.net/doc/3113666413.html,/&https://www.sodocs.net/doc/3113666413.html,/

E-mail:Lenus_M@https://www.sodocs.net/doc/3113666413.html,

--------------------------------------------------

1.前言

发现论坛中很多兄弟在询问:什么是二次内存断点,三次内存断点。还有很多人对内存断点的原理不是很明

白。其实只要懂得壳是如何解压代码的,那么就完全可以按自己的喜欢来下断。

本文要解决的问题是:

1.什么是内存断点?

2.如何在寻找OEP时使用内存断点。

3.内存断点的局限性。

2.内存断点寻找OEP的原理

i.首先,在OD中内存断点,硬件断点和普通断点(F2下断)是有本质区别的。硬件断点等效与SoftICE命令bpm,他的中断要用到DR0-DR7的调试寄存器,也就是说OD通过这些DR0-DR7的调试寄存器来判断是否断下。

普通断点(F2下断)等效于bpx,他是在所执行的的代码的当前地址的一个字节修改为CC(int3)。当程序运行到int3的时候就会产生一个异常,而这个异常将交给OD处理,把这个异常的regEIP-1以后就正好停在了需要的中断的地方(这个根据系统不同会不一样),同时OD在把上面的int3修改回原来的代码。

而内存断点基本上使用的是对代码使用的保护属性来实现中断。

内存断点分为:内存访问断点,内存写入断点。

我们知道,在程序运行的时候会有3种基本的状态产生:读取,写入,执行。

004AE242A100104000mov eax,dword ptr ds:[004AE24C]//004AE24C处的内存读取

004AE247A300104000mov dword ptr ds:[004AE24C],eax//004AE24C处的内存写入

004AE24C83C001add eax,1//004AE24C处的内存执行

那么我们应该如何中断在上面的几行呢?

1.当我们对004AE24C下内存访问断点的时候,可以中断在004AE242也可以中断在004AE247。

2.当我们对004AE24C下内存写入断点的时候,只能中断在004AE247。

3.当我们对004AE24C下内存访问断点的时候,能中断在004AE24C。

到这里你可能不明白了,为什么内存访问断点能中断在004AE247这一句对004AE24C的写入,而且还能中断在004AE24C的执行呢?

其实很简单,我们只要仔细体会一下“内存访问”这四个字的含义遍可以知道,当我们对004AE24C进行读取的时候需要“访问”他吧,当我对004AE24C进行写入的时候也需要“访问”他吧!!当然我们要执行内存地址004AE24C 的代码的时候也是还是要“访问”他的!

所以我们不难得出下面的结论:

1.内存写入中断的地方,一定是也可以用内存访问中断。

2.内存执行的地方,也可以用内存访问中断。

如果这时你认为,那么内存写入岂不是没用了。呵呵~那我要告诉你当然不是,如果你想快速的准确的定位到004AE247这一行的时候,那么他就大有作用了!

总结一下:内存断点不修改改原代码,不会像普通断点那样因为修改代码被程序校验而导致中断失败;对于区段的访问只是区域大了一点,其原理和上面分析的三行代码是一样的。

ii.如何使用内存断点来寻找OEP呢?

要回答这个问题首先要回答这一个问题:壳是如何解压代码的?

正如我们知道的,壳如果要把原来加密或压缩的代码运行起来就必须要解压和解密原来的代码。而这一个过程我们难道不能将他看做是对代码段(code段)的写入吗?好了,解压完毕了。我们要从壳代码的区段JMP到原来的代码段的时候,难道不正是对代码段(code段)的执行吗?

理清了上面的关系就好办了,那么如果载入OD后,我们直接对code段下内存访问断点的时候,一定会中断在壳对code段的写入的代码的上面,就像上面的004AE247的这一行。而如果当他把code段的代码全部解压解密完毕了以后,JMP到OEP的时候,我们是不是还可以停在OEP的代码上面呢?而且每按下F9都会中断,因为这时code 段在执行中哦!

相信很多人到这里已经明白了,为什么在教程中到达了某一个时候,某一行的时候。牛人们就叫我们对code

段下内存访问断点了吧。

而如果你还要继续问我为什么一定要到那个地方才可以下断呢?我难道不可以一开始就下断吗?

正入我上面所说的,如果你在前面下断很可能壳对code段还没解压完毕呢,这时如果你不停的按F9,你将会看到OD的下方不断的在提示你“对401000写入中断”“对401002写入中断”“对401004写入中断”.......如果你不介意按F9到他把正个code段写完的话,我除了同情你的“F9”以外,没什么其他的意见!

那么我们就没有别更快一点的办法了吗?

有的!那就是我们呼之欲出的两次内存断点办法。

怎么理解两次内存断点呢?

让我来做一个假设吧,假设我是一个壳的作者。一个EXE文件的有code段,data段,rsrc段.....依次排列在你的内存空间中,那么我会怎么解码呢?呵呵~我比较笨一点,我会先将code段解码,然后再将data段解压,接着是rsrc段......那么聪明的你不难发现,只要你在data断或者rsrc段下内存访问断点,那么中断的时候code段就已经解压完毕了。这时我们再对code段下内存反问断点,不就可以到达OEP了吗?

这里注意上面虽然下了两次内存访问断点,但是本质是不一样的,目的也是不一样的。

1.对data段下内存访问断点而中断是因为内存写入中断,目的是断在对对data段的解压时,这时壳要对data 段写数据,但是code段已经解压完毕。

2.对code段下内存访问断点而中断是因为内存执行中断,目的当然就是寻找OEP了。

总结一下:如果我们知道壳在什么地方对code段解压完毕我们就可以使用内存断点,找到OEP。如果不知道,那么我们就依靠2次内存断点去找,如果还不行就用多次内存断点。总之明白了原理在多次的内存断点其实都一样。从这个过程中我们了解的是壳在对区段解码的顺序!

iii.实战

说了这么多,我想大家都越越欲试了吧。

好吧,来弄一个猛壳怎么样:

注:本节实例有些难度,不适合新手练习,新手可以跳过这个实例的学习,等找到合适的实例会补充上来的本节实例下载:unpackme.rar

这个壳是一个hying的旧版,我们用他来实验一下我们内存断点法。

OD载入以后来到这里

0040D000u>56push esi//这里

0040D00152push edx

0040D00251push ecx

0040D00353push ebx

0040D00455push ebp

0040D005E815010000call unpackme.0040D11F

根据跟过一次的经验我们将先设置,除int3异常以外忽略其他异常,SHIFT+F9

003725B164:89250000000>mov fs:[0],esp

003725B8CC int3

003725B990nop//到这里

003725BA8BCD mov ecx,ebp

然后再设置除“除零”异常外,忽略其他异常。SHIFT+F9

00372660F7F3div ebx//到这里

0037266290nop

下面是很多的单步异常,太麻烦我们不管他,现在开始用内存断点的方法(记得将所有异常忽略)。

对code段下内存访问断点,希望他已经解压完毕。方法是按ALT+M键打开内存窗口,在.code段按F2设断:SHIFT+F9执行:

0040D19D A4movs byte ptr es:[edi],byte ptr ds:[esi]//还没解完呢

0040D19E B302mov bl,2

对data段下内存“写入”断点,试试看他是不是要写data段。

00372712F3:A4rep movs byte ptr es:[edi],byte ptr ds:[esi]//断到这里

003727145E pop esi

下面再对code段下内存访问断点。F9

003728558907mov dword ptr ds:[edi],eax;SHELL32.DragFinish//这里是对IAT加密

的地方了!!!

003728575A pop edx

003728580FB642FF movzx eax,byte ptr ds:[edx-1]

0037285C03D0add edx,eax

0037285E42inc edx

0037285F83C704add edi,4

0037286259pop ecx

00372863^E2A9loopd short0037280E

00372865^E963FFFFFF jmp003727CD

0037286A8BB593060000mov esi,dword ptr ss:[ebp+693]//到这里下断F2

现在如果再对data下访问断点已经是没用了。这时应该格外的小心。

我们现在就想既然这一段是对code解码的,那么我们就绕过他吧!

到0037286A下断F2,然后清除内存断点!!!!

F9以后停在这里,继续对code下内存访问断点。

看看左下角还在解码,哎~真是麻烦!

003728E1/EB1D jmp short00372900

003728E3|25FFFFFF7F and eax,7FFFFFFF

003728E8|038583060000add eax,dword ptr ss:[ebp+683]

003728EE|2B858F060000sub eax,dword ptr ss:[ebp+68F]

003728F4|8BDE mov ebx,esi

003728F6|2BD8sub ebx,eax

003728F8|8958FC mov dword ptr ds:[eax-4],ebx//停在这里

003728FB|83C708add edi,8

003728FE^|EB DB jmp short003728DB

00372900\64:FF3530000000push dword ptr fs:[30]//清除内存断点以后到这里下断,F9

又是一段解码的代码,再次使用上面的办法手动跳出去。

现在继续对code段下内存访问断点!!F9以后到达这里。

004010CC FFD7call edi;unpackme.004010CE//OEP哦

004010CE58pop eax

004010CF83EC44sub esp,44

004010D256push esi

004010D390nop

004010D4E8B518F7FF call0037298E

004010D98BF0mov esi,eax

呵呵~虽然不是我们熟悉的OEP,但是地址是没错了,况且根据我们的步骤,我可以很肯定的说这是code段的第一次“执行”中断!

所以这就是OEP了。

总结一下:当我们在寻找OEP的时候,要多次对code下断“赌”一“赌”他解压完毕,如果不是就对别的段试试~如果程序跑飞了,那就没办法了,重来呗~其实说起来要赌的是:当data段,idata段,rsrc段摆在你的面前,你会好好“珍惜”那个段,不过还好上天还会给我们从来一次的机会(ctrl+F2^_^),那么我们会对那个不会跑飞的段说3个字----“先断你”如果非要在上面加一个次数,我希望是“一次内存断点就好了”

vi.下面来讨论一下内存断点的局限性问题。

是不是什么壳都可以用内存中断啊?

不是每个都可以的,一些像UPX和ASPACK就不行。

为什么?

呵呵~follew me!

情况1.

我们来看看UPX的壳

首先,他的壳代码在UPX1段。

这里是他要跳到OEP的地方

0040ED4F/7711ja short NOTEPAD_.0040ED62

0040ED51|01C3add ebx,eax

0040ED53|8B03mov eax,dword ptr ds:[ebx]

0040ED55|86C4xchg ah,al

0040ED57|C1C010rol eax,10//在解码

0040ED5A|86C4xchg ah,al

0040ED5C|01F0add eax,esi

0040ED5E|8903mov dword ptr ds:[ebx],eax

0040ED60^|EB E2jmp short NOTEPAD_.0040ED44

0040ED62\240F and al,0F

0040ED64C1E010shl eax,10

0040ED6766:8B07mov ax,word ptr ds:[edi]

0040ED6A83C702add edi,2

0040ED6D^EB E2jmp short NOTEPAD_.0040ED51//回跳解码

0040ED6F61popad

0040ED70-E95723FFFF jmp NOTEPAD_.004010CC//跳到OEP

我们看到他在对code段解压完毕的时候马上就JMP到OEP去了,那么我们根本就来不及使用内存断点的办法。

你可能说,我可以在

0040ED6F61popad//这一句下段然后使用啊

呵呵~~当然可以,不过你把花在下内存断点的时间,多按下几次F8不更好?!

也就是说当一个壳如果他在JMP到OEP前的一行代码仍在都在对code段解压,那么我们就不能再使用这种办法了!

或者说我们没必要使用内存断点更贴切一点!

情况2.

对于一些在OEP处有stolen code的代码

我们来看看一个OEP

0049E2F4u>55push ebp//OEP

0049E2F58BEC mov ebp,esp

0049E2F783C4F4add esp,-0C

0049E2FA B8BCE04900mov eax,unpack.0049E0BC

0049E2FF E8048CF6FF call unpack.00406F08//这里调用子程序

0049E304A1B8FE4900mov eax,dword ptr ds:[49FEB8]

0049E30950push eax

0049E30A6A00push0

0049E30C681F000F00push0F001F

0049E311E8E68EF6FF call//API

0049E316A360194A00mov dword ptr ds:[4A1960],eax

0049E31B833D60194A0000cmp dword ptr ds:[4A1960],0

这个软件在被PESPIN加壳了以后这些全被偷掉了!

也就是说,壳在模拟OEP代码的时候必然会执行

0049E2FF E8048CF6FF call unpack.00406F08//这一步

而这个地方是call向code段的。如果我们使用内存访问断点,那么就停在这个子程序的地方

00406F0850push eax//会停在这里

00406F096A00push0

00406F0B E8F8FEFFFF call

00406F10BA04F14900mov edx,unpack.0049F104

00406F1552push edx

这里既不是处理stolen code的地方,也不是FOEP的地方。这就会对我们的判断产生误导。

当然你可以alt+F9返回到壳处理stolen的地方,然后用内存断点,或者按几下F8到达FOEP处,但试问如果你拿到一个未知的壳的时候又怎么知道应该这么处理呢?

还有其他一些情况留给大家总结吧!

在下的砖已抛出,各位的玉不久矣。

--------------------------------------------------

3.总结

好了说了很多,大家应该对内存断点的办法有了全面的了解,如果了解了内存断点的原理就不难明白他的使用方法,不难明白为什么有写壳不能使用内存断点的办法,其实任何的一种办法都需要经验的积累。相信如果大家在回答开篇的3个问题,已经不难了。

大家可以结合原理再好好的体会一下《手动脱壳进阶第八篇Skvp1.32》这篇文章。

第七课Dump内存映像

外壳程序解压还原后就会跳到OEP处执行,此时内存映像文件是己解压的程序。这时就可抓取内存映像文件了(该过程称为Dump)。当然不一定非要在程序原入口点抓取,只要能保证内存映像文件是己还原的就行了。有关Dump技术的原理大家可以参考:浅谈脱壳中的Dump技术作者:Lenus

继续上一个实例notepad.upx.exe,到OEP后就可以Dump取内存映像文件:

004010CC55push ebp

004010CD8BEC mov ebp,esp

004010CF83EC44sub esp,44

运行LordPE.EXE,点击Options,默认选项如下:

默认选上“Full dump:paste header from disk”,PE头的信息直接从磁盘文件获得。设置好后,在LordPE的进程窗口选择notepad.upx.exe,点击右键,执行“dump full”菜单命令。如图:

将内存抓取的文件另存为dumped.exe,此时程序还不能运行,接下来就是重建输入表。

第八课重建输入表

在脱壳中输入表处理是很关键的一个环节,因此要求脱壳者对PE格式中的输入表概念非常清楚。在磁盘文件中,PE文件的输入表结构如下图所示:

图8.1磁盘文件中的输入表

PE文件运行时,Windows系统加载器首先搜索OriginalFirstThunk,如果存在,装载程序迭代搜索数组中的每个指针,找到每个IMAGE_IMPORT_BY_NAME结构所指向的输入函数的地址,然后用函数入口地址来替代由FirstThunk指向的IMAGE_THUNK_DATA数组里的元素值(即用真实的函数地址填充到IAT里)。因当PE文件装载内存后准备执行时,上图己转换成这种情况了:

图8.2PE文件装载内存后的输入表

此时输入表中其它部分就不重要了,程序依靠IAT提供的函数地址就可正常运行(图8.2红圈部分)。如果程序加壳了,那壳自己模仿Windows装载器的工作来填充IAT中相关的数据,此时内存中就一张IAT表,输入表的其他部分是不存的(当然不是绝对的,也有不少壳,如Aspack等,内存中会出现完整的输入表结构),如图8.3所示。

图8.3外壳加载程序后的内部IAT

输入表重建就是根据图8.3这张IAT恢复整个输入表的结构(即图8.1这个结构),ImpREC这款工具就是这个功能。

一些压缩壳,填充IAT过程中没做什么手脚,用ImpREC工具可以直接重建输入表。而一些加密壳为了防止输入表被还原,就在IAT加密上大作文章,此时壳填充IAT里的不是实际的API地址,而是填充壳中用来HOOK-API的外壳代码的地址。这样壳中的代码一旦完成了加载工作,在进入原程序的代码之后,仍然能够间接地获得程序的控制权。因为程序总是需要与系统打交道,与系统交道的途径是API,而API的地址已经替换成了壳的HOOK-API 的地址,那程序每一次与系统打交道,都会让壳的代码获得一次控制权,这样壳可以进行反跟踪继续保护软件,同时也可完成某些特殊的任务。所以重建输入表的关键是获得没加密的IAT,一般的做法是跟踪加壳程序对IAT

处理过程,修改相关指令,不让外壳加密IAT。

UPX、ASPack等加壳保护的壳没加密IAT,而ASProtect、tElock等加密保护的壳都对IAT进行了加密处理。这篇先来简单的,即UPX壳。用OD打开上面的notepad.upx.exe实例,运行到OEP。(实际跟踪过程中,不一定要到OEP,只要外壳处理完IAT就可)然后如下操作:

1)运行ImportREC,在下拉列表框中选择notepad.upx.exe进程,如图:

2)上面己得知notepad.upx.exe的OEP地址是4010CC,则在左下角OEP处填入OEP的RVA值,这里填上10CC。点击“IAT AutoSearch”按钮,让其自动检测IAT偏移和大小,如出现下图表示ImportREC自己找到IAT的地址与大小了,即IAT地址:000062E0,大小248。

如果ImportREC没找到IAT偏移,则必须手工填入IAT偏移和大小(IAT偏移手动获得以后再讲述)。

3)点击“Get Import”按钮,让其分析IAT结构得到基本信息,如下图所示:

4)如发现某个DLL显示"valid:NO",按"Show Invalids"按钮将分析所有的无效信息,在Imported Function Found栏中点击鼠标右键,选择"Trace Level1(Disasm)",再按"Show Invalids"按钮。如果成功,可以看到所有的DLL都为"valid:YES"字样;

5)再次刷新"Show Invalids"按钮查看结果,如仍有无效的地址,继续手动用右键的Level2或3修复;

6)如还是出错,可以利用"Invalidate function(s)"、"Delete thunk(s)"、编辑Import表(双击函数)等功能手动修复。

7)开始修复已脱壳的程序。选择Add new section(缺省是选上的)来为Dump出来的文件加一个Section(虽然文件比较大,但避免了许多不必要的麻烦)。

8)单击"Fix Dump"按钮,并选择刚在前面己Dump出来的文件。如修复的文件名是"Dump.exe",它将创建一个"Dump_.exe",此外OEP也被修正。

经过这些步骤,这个UPX壳己成功脱掉。此时再用PEID查一下脱壳后的程序dumped_.exe,会显示是“Microsoft Visual C++6.0SPx Method1”,如下图所示:

再用LordPE查看脱壳后的输入表:

从上图可以看出,输入表己正确修复,此时脱壳后的文件己能成功运行了。

第九课手动确定IAT的地址与大小

在第八课中讲到,点击ImportREC的“IAT AutoSearch”按钮,一般情况下ImportREC可以自动识别出IAT地址与大小。但如果不能自动识别,就必须手动确定IAT地址与大小,然后将IAT的RVA与Size填进ImportREC,点击“Get Import”按钮就可得到输入表。

还是用上一节实例演示,用OD打开notepad.upx.exe,来到OEP处:

随便找一个API函数调用语句,如:

004010D3FF15E4634000call[4063E4];kernel32.GetCommandLineA

其中地址4063E4就是IAT中的一部分,在数据窗口下命令:D4063E4,显示如下:

上图每一组数据都是指向一个API函数,如8D2C817C就是地址:7C812C8D,在OD里按Ctrl+G,输入7C812C8D 跳到这个地址就会发现是kernel32.GetCommandLineA函数:

IAT是一块连续排列的数据,因此在数据窗口向上翻屏,直到出现00数据,寻找IAT起始地址:

然后向下翻屏,寻找IAT结束地址:

为了直观些,你也可以这样让数据窗口直接显示这些API函数,以确定IAT是否正确,在数据窗口点击鼠标右键:调整显示格式后的数据窗口:

这样就直观了,IAT中每组数据指向一个API函数,各DLL之间是以000000分开的。

因此IAT范围:0x4062E4~0x406524,大小为0x406524-0x4062E4=0x240

如果IAT加密了,此时IAT中的地址不是指向系统DLL中的API函数了,可能指向外壳。这就十分有必要找到外壳处理IAT的代码了,前面己说过,外壳加载时,会模拟Windows加载器,向IAT里填充当前操作系统API函数的实际地址。所以,在IAT里设个内存写断点,就可中断到这段代码处。

重新加载notepad.upx.exe,在IAT某个地址下内存写断点,这里选择0x4062E4这个地址设内存写断点,先在数据窗口下命令:D4062E4

然后选择一个地址,点击鼠标右键,下“内存写断点”。

此时只要有数据写入4062E4地址处,OD就会中断,按F9运行OD,会中断这里:

0040E96D>/8A02mov al,[edx]

0040E96F.|42inc edx

0040E970.|8807mov[edi],al

0040E972.|47inc edi

0040E973.|49dec ecx

0040E974.^\75F7jnz short0040E96D

这段还不是处理IAT,按F9继续执行程序,会中断这里:

0040E9E9>/8A07mov al,[edi]

0040E9EB.|47inc edi

0040E9EC.|08C0or al,al

0040E9EE.^|74DC je short0040E9CC

0040E9F0.|89F9mov ecx,edi

0040E9F2.|57push edi//函数名字符串

0040E9F3.|48dec eax

0040E9F4.F2:AE repne scas byte ptr es:[edi]

0040E9F6.|55push ebp//DLL模块句柄

0040E9F7.FF96A4EC0000call[esi+ECA4];kernel32.GetProcAddress

0040E9FD.|09C0or eax,eax

0040E9FF.|7407je short0040EA08

0040EA01.|8903mov[ebx],eax//EBX指向IAT,将取得的API地址填充进IAT

0040EA03.|83C304add ebx,4//指向下一个地址

0040EA06.^\EB E1jmp short0040E9E9

0040EA08>FF96A8EC0000call[esi+ECA8]

上面这段就是UPX外壳填充IAT的全过程,感兴趣的,动态跟踪一下就明白了。这里用GetProcAddress函数获得函数地址:

FARPROC GetProcAddress(

HMODULE hModule,//DLL模块句柄

LPCSTR lpProcName//函数名

);

为了方便大家学习脱猛壳技术,根据我自己的经验,将一些比较不错的文章列出:

Obsidium壳:

Obsidium外壳学习手记

Obsidium1.2.5.0主程序脱壳记录点滴(SDK修复部分)

Armadillo壳:

试玩armadillo3.50a一点心得(基础知识)

Armadillo COPYMEMEII之DUMP的一个LOADPE小插件(利用插件Dump取COPYMEMEII保护的程序)

Armadillo3.6主程序脱壳(Dump取COPYMEMEII保护的程序另一方法)

Patch修复Armadillo的IAT乱序(处理IAT乱序)

Armadillo中code splicing的几种处理方法(手工修复Code Splicing)

Armadillo客户版Code Splicing+Import(利用ArmInline工具修复Code Splicing)

浅谈Armadillo V.3.75与V.3.78的保护(Nanomites原理概念,即CC保护)

Blaze Media Pro5.05脱壳+基本修复CC(int3)+破解(修复CC)

Armadillo V4.40主程序脱壳(目前处理CC很好的一个方法)

ASProtect2.x SKE壳:

nspack3.5主程序脱壳分析(Aspr SKE2.X)(输入表)

Asprotect SKE2.2的Advanced Import protection保护技术(输入表)

莱鸟脱Aspr2.11SKE+修复stolen(Dump法对付stolen OEP)

ASProtect.SKE.2.11stolen code解密(ASProtect2.11的stolen与SDK修复技术)

ASProtect_SKE_2.3Beta_Build0319stolen code分析(ASProtect2.22/2.23的stolen与SDK修复技术) Asprotect2.XX SKE IAT Fixer(ASProtect脚本,功能非常强大!)

……(ASProtect2.x部分没完成)

软件破解入门教程

先教大家一些基础知识,学习破解其实是要和程序打交道的,汇编是破解程序的必备知识,但有可能部分朋友都没有学习过汇编语言,所以我就在这里叫大家一些简单实用的破解语句吧! ---------------------------------------------------------------------------------------------------------------- 语句:cmp a,b //cmp是比较的意思!在这里假如a=1,b=2 那么就是a与b比较大小. mov a,b //mov是赋值语句,把b的值赋给a. je/jz //就是相等就到指定位置(也叫跳转). jne/jnz //不相等就到指定位置. jmp //无条件跳转. jl/jb //若小于就跳. ja/jg //若大于就跳. jge //若大于等于就跳. 这里以一款LRC傻瓜编辑器为例,讲解一下软件的初步破解过程。大家只要认真看我的操作一定会!假如还是不明白的话提出难点帮你解决,还不行的话直接找我!有时间给你补节课!呵呵! 目标:LRC傻瓜编辑器杀杀杀~~~~~~~~~ 简介:本软件可以让你听完一首MP3歌曲,便可编辑完成一首LRC歌词。并且本软件自身还带有MP3音乐播放和LRC歌词播放功能,没注册的软件只能使用15天。 工具/原料 我们破解或给软件脱壳最常用的软件就是OD全名叫Ollydbg,界面如图: 它是一个功能很强大的工具,左上角是cpu窗口,分别是地址,机器码,汇编代码,注释;注释添加方便,而且还能即时显示函数的调用结果,返回值. 右上角是寄存器窗口,但不仅仅反映寄存器的状况,还有好多东东;双击即可改变Eflag的值,对于寄存器,指令执行后发生改变的寄存器会用红色突出显示. cpu窗口下面还有一个小窗口,显示当前操作改变的寄存器状态. 左下角是内存窗口.可以ascii或者unicode两种方式显示内存信息. 右下角的是当前堆栈情况,还有注释啊. 步骤/方法 1. 我们要想破解一个软件就是修改它的代码,我们要想在这代码的海洋里找到我们破解关键的代码确实很棘 手,所以我们必须找到一定的线索,一便我们顺藤摸瓜的找到我们想要的东东,现在的关键问题就是什么

新手入门学习——脱壳破解练习第一期

新手入门学习——脱壳破解练习第一期拿到一个软件,先看看是加的什么壳。用PEiD查得【Upack V0.37-V0.39 -> Dwing *】 接着拿出破解第一要物OD进行脱壳(注意选好点的版本,由于Upack壳做了变形,有些版本的OD打开时会出错,最好是用英文版的) OD载入…… 我使用简单一点的ESP定律。 00401018 > BE B0114000 MOV ESI,脱壳破解.004011B0 0040101D AD LODS DWORD PTR DS:[ESI] 0040101E 50 PUSH EAX 0040101F FF76 34 PUSH DWORD PTR DS:[ESI+34] 00401022 EB 7C JMP SHORT 脱壳破解.004010A0 F8前进到【0040101F】,在寄存器窗口ESP处点右键,在数据窗口跟随【0012FFC0】 如下图:

//数据窗口点右键,下硬件断点。shift+F9运行 0012FFC0 004011B8 脱壳破解.004011B8 0012FFC4 7C82F23B 返回到 kernel32.7C82F23B 0012FFC8 00000000 //来到OEP,通过观察可以发现,这是一个典型的VB入口。这里记得要删除硬件断点!004011B8 68 24184000 PUSH 脱壳破解.00401824 //OEP 004011BD E8 EEFFFFFF CALL 脱壳破解.004011B0 004011C2 0000 ADD BYTE PTR DS:[EAX],AL 004011C4 0000 ADD BYTE PTR DS:[EAX],AL 004011C6 0000 ADD BYTE PTR DS:[EAX],AL 004011C8 3000 XOR BYTE PTR DS:[EAX],AL 记录新入口地址【11B8】

周易零基础入门教程

周易零基础入门教程 作者:江南易林 前言 一直以来就准备写一个周易零基础入门教程,所谓零基础教程即一个针对完全没有周易基础的人的入门教程。说是零基础,其实还是有基础的,这基础就是:必须认识汉字! 1、我之所以决心写这么一个东西,其实也是受许多朋友(包括网上的和网下的)的鼓动,很多朋友让我帮忙推荐周易入门教程,我一般会推荐,但是推荐完心里也暗叹,心想即便他们看了那些书也未必能看懂。毕竟,在现在快节奏的生活方式下,真正有功夫和心思去钻研古文或坚持啃完一本书的人,还是很少的。并且对于一个无论什么学科的初学者而言,学习最初阶段信心的维持很重要,如果一开始就遇到难题又没有人从旁点拨,很容易有挫败感,而丧失学习兴趣和动力。实际上,大家并非傻子,智商都不低,很

多东西只要说破,去掉神秘感之后,是比较容易掌握的。所以决心写这么一个东西,也算是自己对此我所理解的周易知识来一个总结和梳理。 正式讲解之前,先罗嗦一下,做如下声明: 1.为什么“我”要来写这个教程?声明一下,本人并非什么大师或者高人。我们老家有句俗语:浮在水面上的,往往都是些小鱼小虾。本人就是这些浮在水面上的那些小鱼小虾中的一只。很多真正的高人往往或潜伏在在乡野,或在闹市,不一而足。他们或者因为年龄缘故不擅于上网,或者不习惯上网,又或者不是很善于通过文字来表达,又或者不愿意也没时间来讲述这些看似非常基础非常简单的入门问题,因为他们相信,这些问题只要稍微看看书就能明白的。而实际上,很多人就是被卡在这一看似简单的环节上了。对周易感兴趣的人是很多的,大家对周易感兴趣的目的也不一样,有些人纯粹因为好奇想稍微了解了解增加一些谈资;有些人想多掌握一门知识比如当做哲学来学习,从而获得一些启发和灵感;而真正最终会用周易来算卦的人毕竟只是少数。我感觉,作为一个中国人,对于周易这个在中国流传了几千的传统文化,适当了解是非常有必要的。即便你誓死

六爻简单入门知识

六爻超简单入门知识 下面介绍的六爻基础知识,都是大家必须要背下的,记忆方法很简单,主要是利用好自己的左手,把12地支放在自己的左手中,稍加努力就能记住。一定要记住,要像电影里的大神一样用左手的大拇指点着手掌的12地支位置念念有词,不用多长时间,你就能全部都记住了。 1.五行生克 五行相生:金生水、水生木、木生火、火生土、土生金。 五行相克:金克木、木克土、土克水、水克火、火克金.。 2. 天干地支 十天干:甲、乙、丙、丁、戊、己、庚、辛、壬、癸。 十二地支:子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥。(我知道这里面又好几个字你可能都不认识,没关系,多读几遍吧!)

3、12地支方位(初学者可以不记)。 亥子北方水寅卯东方木巳午南方火 申酉西方金辰戌丑未四季土 但是记住这个也很简单,还是要对照左手掌决记下来,要把整个手指面看成一个四边形,顺时针划一圈,每条线都是由4个地支组成,每条线的前两个就有着相同的属性。多找找规律就能记住了。 4.天干地支作用关系 4.1地支三合 申子辰合化水, 亥卯未合化木, 寅午戌合化火, 巳酉丑合化金.(这个初看会觉得有点难度,初学也可以不用记,当然记忆的方法也简单:隔三位就是,以图说明)

4.2地支六合: 子丑相合, 午未相合, 寅亥相合, 卯戌相合, 辰酉相合, 巳申相合(哈哈,自己看图,就知道怎么记了). 地支六合 4.3地支相冲: 子午相冲, 丑未相冲, 寅申相冲, 卯酉相冲, 辰戌相冲, 巳亥相冲.(把12地支放在左手中,学过数学的同学,一下子就明白了)

地支相冲 上面的东西是六爻预测术中必须了然于心中的最基础的知识,算卦的基础知识就是这些,一个复杂的卦全凭上面的东西,是不是显得比较简单啊,大家快去忙下吧,现在记不住也没有关系,时间久了,自然就会了。

一个简单的.NET程序的脱壳以及破解

一个简单的.NET程序的脱壳以及破解 前几天有朋友问.NET程序的破解,又鉴于论坛里关于.NET脱壳和破解的文章也不多,于是抽空写一个。由于本人也很少接触.NET的程序,因此文章没什么技术含量,用到的技术也是在网上很早就公开的东西。有什么错误还请多多指教。 本文的目标文件是一个非常简单的CrackMe. 本CrackMe的任务有4个: 1.脱壳 2.去NAG 3.去灰色按钮 4.破解 OK,一个一个来完成任务吧。 一、脱壳 查壳发现为: 按照经验,此程序应该是用.NET Reactor加的壳 下面来脱壳吧 根据前人经验,此壳其实只是在简单的混淆,在运行的同时,在内存中会释放原程序的镜像根据这一特点,我们下断点:BP WriteProcessMemory,然后F9运行,中断下来 中断下来看堆栈

写入的地址为:17B1050 在数据窗口查看,然后拉到最顶端 可以发现,PE头在017B0000 于是可以dump此地址的镜像。 当然,此时dump下来的程序不行,因为还有好多内容没写入。于是,不断SHIFT+F9,直到程序运行。 这时候就可以dump了. 用LordPE,区域转存017B0000这个区段,保存为dumped.exe就OK了.

不过,此时dump后,程序是无法运行的。 我们还得再用CFF修正几个量 (1).选Nt Headers,再File Header,然后选Characteristics,再点旁边的Click here,在出现的对话框中,去掉“File is a DLL”就OK了。 (2)修正MetaData RV A和MetaData Size的值

易经入门基础知识系列讲座(第3讲)

易经入门基础知识系列讲座(第3讲) ——易经,是怎么发展而来的? 我们问过大家一个问题:《易经》和《周易》是一回事吗?《易经》就是《周易》吗?在回答这个问题之前,我们先来看看古人是怎么说的。根据《周礼》的记载:“太卜掌三易之法:一曰《连山》,二曰《归藏》,三曰《周易》,其经卦皆八,其别皆六十有四”。 从《周礼》的记载中可以看出,在中国古代一共出现了三部不同的《易经》。除了《周易》之外,还有另外两部,一部是《连山易》,一部是《归藏易》,《周易》只是其中之一。《周礼》中所记载这三部《易经》,分别为夏、商、周三个不同的朝代所使用。 夏代是中国历史上的第一个王朝。根据史书记载,大禹把自己的帝王之位传给了儿子启,从此开创中国历史“家天下”的先河。而在这之前,部落联盟内部采用的是“禅让”的方式来推举部落联盟的共主。伏羲画八卦的年代,属于新石器时代的早期。而夏代,则属于新石器时代的晚期,当时的人们所使用的《易经》,据说是由伏羲所演绎的。当然也有人说,这部《易经》是由神农氏所演绎的。相比较而言,我个人认为,伏羲演绎六十四卦的说法应该更为可靠。因为,在画出八卦之后,再演绎成六十四卦,应该是顺理成章的事情。不过伏羲所演绎的《易经》,它的六十四卦的卦序与我们现在所见到的《周易》不同,它以艮卦作为六十四卦的首卦。艮卦为复卦,上卦为艮卦?,下卦也为艮卦?,艮卦?象征山,山上山下,山山相连,所以伏羲演绎的这部《易经》,又称为《连山易》。 到了商代,人们 所使用的《易经》又 与《连山易》不一样 了,据说这部《易经》 是由黄帝所演绎的。 不过黄帝所演绎的《易经》,它的卦序与《连山易》并不相同,它以坤卦作为六十四卦的首卦。坤卦?象征土,中国古代是农耕社会,农耕离不开土地,万物归藏于土地。所以,黄帝所演绎的这部《易经》,又称为《归藏易》。 到了殷商末年,当周文王被殷纣王囚禁在羑里的时候,他就利用这个被囚禁的七年多时间,对《易经》重新进行了演绎。周文王所演绎的这部《易经》,它的卦序既不同于伏羲所演绎的《连山易》,也不同于黄帝所演绎的《归藏易》,而是以乾、坤两卦作为六十四卦的首卦。周文王所演绎的这部《易经》,又称为《周

OD 新人入门基础教材

OD 新人入门基础教材 OD 是个好工具但很多新哥们不懂用可惜咯 首先我介绍下 OD正个界面: 各个窗口的功能如上图。简单解释一下各个窗口的功能,更详细的内容可以参考 TT 小组翻译的中文帮助: 反汇编窗口:显示被调试程序的反汇编代码,标题栏上的地址、HEX 数据、反汇编、注释可以通过在窗口中右击出现的菜单界面选项->隐藏标题或显示标题来进行切换是否显示。用鼠标左键点击注释标签可以切换注释显示的方式。 寄存器窗口:显示当前所选线程的 CPU 寄存器内容。同样点击标签寄存器 (FPU) 可以切换显示寄存器的方式。 信息窗口:显示反汇编窗口中选中的第一个命令的参数及一些跳转目标地址、字串等。 数据窗口:显示内存或文件的内容。右键菜单可用于切换显示方式。 堆栈窗口:显示当前线程的堆栈。

要调整上面各个窗口的大小的话,只需左键按住边框拖动,等调整好了,重新启动一下 OllyDBG 就可以生效了。 启动后我们要把插件及 UDD 的目录配置为绝对路径,点击菜单上的选项->界面,将会出来一个界面选项的对话框,我们点击其中的目录标签: 因为我这里是把 OllyDBG 解压在 F:\OllyDBG 目录下,所以相应的 UDD 目录及插件目录按图上配置。还有一个常用到的标签就是上图后面那个字体,在这里你可以更改 OllyDBG 中显示的字体。上图中其它的选项可以保留为默认,若有需要也可以自己修改。修改完以后点击确定,弹出一个对话框,说我们更改了插件路径,要重新启动 OllyDBG。在这个对话框上点确定,重新启动一下 OllyDBG,我们再到界面选项中看一下,会发现我们原先设置好的路径都已保存了。有人可能知道插件的作用,但对那个 UDD 目录不清楚。我这简单解释一下:这个 UDD 目录的作用是保存你调试的工作。比如你调试一个软件,设置了断点,添加了注释,一次没做完,这时 OllyDBG 就会把你所做的工作保存到这个 UDD 目录,以便你下次调试时可以继续以前的工作。如果不设置这个 UDD 目录,OllyDBG 默认是在其安装目录下保存这些后缀名为 udd 的文件,时间长了就会显的很乱,所以还是建议专门设置一个目录来保存这些文件。 另外一个重要的选项就是调试选项,可通过菜单选项->调试设置来配置:

易经入门基础知识系列讲座(第4讲)

易经入门基础知识系列讲座(第4讲) ——易经,为什么又称为周易? 前面我们讲过,《易经》一共有三部,包括《连山易》、《归藏易》和《周易》。那么,《易经》为什么又称为《周易》呢?这是因为,在《易经》的传承过程中,《连山易》和《归藏易》都已经失传了,我们现在已经见不到了,流传下来的只有《周易》,所以我们在提到《易经》时,往往就用《周易》来替代《易经》。 那么,作为书名的“周”、“易”二字,又有什么丰富的文化内涵呢?对于“周易”的“周”字,历代易学先辈们至少总结、概括为三种不同含义的解释,下面我们就来看看这三种解释: 第一种解释是,周表示周朝,是朝代的名称,表明这部《易经》是在周代演绎的,是由周文王所演绎的; 第二种解释是,周表示周遍,是无所不包的意思。由于《易经》所讲的“三才之道”的内容包罗万象,正如《系辞传下》中所说:“易之为书也,广大悉备。 有天道焉,有人道焉,有地道 焉。”既包括了天地自然,也 包括了人类社会,所以说是无 所不包。 第三种解释是,周表示周 转,是周而复始的意思。《周易》共有六十四卦,从乾、坤两卦开始,一直到第六十三卦既济卦,表示事物的发展经历了从开始(产生)、发展到结束等过程。济,表示渡河。既济,就是说已经渡过河了。既然已经渡过河了,说明事情已经完成了,为什么还有后面第六十四卦?第六十四卦的卦名,叫未济。未济的意思是说,还没有渡过河。换句话说,就是事情还没有完成。前面的第六十三卦,说事情已经完成了;后面的第六十四卦,却说事情没有完成。那么,既济卦与未济卦所表达的意义,是不是相互矛盾?一点儿也不矛盾。第六十三卦既济卦所表达的意义,是说事物的某一发展阶段已经完成了,结束了;第六十四卦未济卦所表达的意义,则是说事物新一轮的发展阶段又开始了。 既济卦与未济卦合起来所表达的,是周而复始意思,是螺旋上升、持续发展的意思,而不是原地踏步、停滞不前。譬如现在,很多公司都在建设网站,拉队伍,建平台,填内容……经过一番忙碌以后,网站终于建成了,这就是既济。那么,网站建成以后,就没有其他工作要做了吗?显然不是!网站建成,只是这一阶段的工作完成了,后面还有运营、推广等各项工作要做,网站新一阶段的发展又开始了。这一阶段的发展与前一阶段完全一样吗?肯定不一样,这一阶段是在

脱壳基础知识入门

脱壳基础知识入门 现在加解密发展己形成2个分支了,一个就是传统的算法,另一个就是加密壳。越来越多的软件采用了密码学相关算法,现在要做出一个软件注册机己不象前几年那么容易,这就要求解密者必须要有一定的数学功底和密码学知识,而这些在短时间内是不容易掌握的。除了密码学的应用,越来越多的软件加壳了,因此要求解密者必须掌握一些脱壳技术,这就使得壳成了解密必须迈过的一个门槛。壳发展到今天,强度越来越高了,将许多人挡在门外,使得大家望壳兴叹。另外,论坛现在两极分化比较严重,高手讨论的脱壳技术新手看不懂,很多人想学脱壳,但看到壳这么难,只好放弃了,造成新手与高手间一个断档,为了鼓励更多新人加入脱壳的行列,很有必要将壳有关知识总结一下。https://www.sodocs.net/doc/3113666413.html,主页提供的教学确实有点过时了,己到非更新不可了。相对于密码学算法,脱壳并不难,只要肯花时间,短期内还是比较容易取得成绩的。 第一课PE格式 要想学脱壳,第一步就得掌握PE格式,PE是Portable Executable File Format(可移植的执行体)简写,它是目前Windows平台上的主流可执行文件格式。 Microsoft Visual C++提供的WINNT.H里有PE数据结构的完整定义。 推荐文档: ah007翻译的“PE文件格式”1.9版 qduwg翻译的PE文件格式 Iczelion's的PE文件格式 PE结构各字段偏移参考 学习PE格式的方法是自己先准备一个十六进制工具,如HexWorkshop,WinHex,用这些工具打开一个EXE文件对照着学。强烈推荐你用Stud_PE v.2.2.0.5这款工具辅助学习PE格式。PE格式学习的重点是在输入表(Import Table)这块。Stud_PE工具界面: PE结构图: 第二课SEH技术 结构化异常处理(Structured Exception Handling,SEH)是Windows操作系统处理程序错误或异常的技术。SEH是Windows操作系统的一种系统机制,与特定的程序设计语言无关。 外壳程序里大量地使用了SEH,如果不了解SEH,将会使你跟踪十分困难。 SEH in ASM研究(一)by hume SEH in ASM研究(二)by hume Structured Exception Handling 加密与解密二版菜鸟学习笔记(2)-SEH结构化异常处理by ytcswb 由于Ollydbg对SEH处理异常灵活,因此脱壳用Ollydbg会大大提高效率。 附CONTEXT结构环境: 代码: typedef struct_CONTEXT{ /*000*/DWORD ContextFlags; /*004*/DWORD Dr0; /*008*/DWORD Dr1; /*00C*/DWORD Dr2; /*010*/DWORD Dr3; /*014*/DWORD Dr6; /*018*/DWORD Dr7; /*01C*/FLOATING_SAVE_AREA FloatSave; /*08C*/DWORD SegGs; /*090*/DWORD SegFs; /*094*/DWORD SegEs;

第一部分 基础知识及运用 知识点1 语音 教案

第一部分基础知识及运用 知识点1 语音 【教学目标】 1.依据教学大纲,了解《考试说明》对此项考查的要求。 2.通过分析高考试题,寻求规律,掌握考查的重点。 3.加强备考方法的指导,强化基础训练。 【教学方法】 讲练结合,注重积累。 【教学重点难点】 重点:复习方法指导; 强化语音识记。 难点:学习态度; 习惯性误读字和生僻字的识记。 【课时安排】 六课时。其中知识点1语音以及知识点精练的讲解需要二课时;知识清单“容易读错的字”讲解需要二个课时;同步检测语音部分考试及讲解二课时。 【教学过程和步骤】 一、导入 对口高考语文复习方法 (一)分析学生现状 语文基础不是很好;要做好打持久战的准备。 (二)语文复习方法 1.语文复习要注重教材,重点是教材中的字词和应用文写作; 2.语文知识要及时去记、去背;及时扫除知识障碍; 3.语文知识重在积累,重在坚持不懈,持之以恒; 4.多做题目,特别是阅读题,要勤于动笔; 5.提纲挈领,总体把握每一个知识点的内容。 二、讲解新课 (一)本知识点包括以下几方面的内容 考纲解读;知识点精讲(例题解析——高考真题;方法指导);知识点精练。 (二)讲析新课 1.复习定向 所谓“识记”,就是识别和记忆。识记的对象是“现代汉语普通话的字音”。普通话是中华民族的母语,正确“识记现代汉语普通话的字音”,是考生必须具备的能力。 我国自1977年恢复高考以来,语音题一直是高考必考题型。1996年后语音题所考内容及题型开始趋于稳定,要求相当明确,即只考“识记现代汉语普通话的字音”。 2.指导学生阅读“知识点1语音”(复习用书P1——4页) (1)学生看并做高考语音题。 (2)寻找高考总趋向:近年来高考对语音的考查,难度有所降低,据统计,1996年语音题考12字,超出常用字的5个,1997年超出4个,1998年和2001年、2002年全部是常

周易入门基础知识:六十四卦及其卦义

周易入门基础知识 1.周易如入先明阴阳 《易传·系辞·上》说:一阴一阳之谓道。易经中,爻组成卦的基本单位就是“阴”“阳”,其中这个符号“—”称作阳爻,这个符号“--’称作阴爻。 2.阴阳既明先懂八卦 卦是按照阴爻很阳爻组合而成的。八卦分别是乾兑离震巽坎艮坤。每卦由三爻构成其中记忆其符号的方法如下:(建议背熟) 乾三连坤六断 震仰盂艮覆碗 离中虚坎中满 兑上缺巽下断 八卦(单卦)不仅有其符号还有其卦象(也是其基本卦义) 其中 乾象天坤象地 震象雷艮象山 离象火坎象水 兑象泽巽象风(背诵) 3.象义既知卦重六四 六十四卦是什么呢?分别叫什么呢?按照易经上下经的顺序有如下卦序歌 乾坤屯蒙需讼师,比小畜兮履泰否; 同人大有谦豫随,蛊临观兮噬嗑贲; 剥复无妄大畜颐,大过坎离三十备。 咸恒遁兮及大壮,晋与明夷家人睽; 蹇解损益夬姤萃,升困井革鼎震继; 艮渐归妹丰旅巽,兑涣节兮中孚至; 小过既济兼未济,是为下经三十四。 (这是六十四卦在周易上下经的顺序。建议理解即可) 那六十四卦的符号卦名如何记住呢? 只要我们记住八卦(单卦)的象(基本卦义)就可以更容易记忆和理解六十四卦 乾为天天风姤天山遁天地否风地观山地剥火地晋火天大有乾为天是指上乾下乾两卦相重,这样的卦我们叫易经六十四卦。天风姤是上乾下巽,因为乾为天,巽为风。只要我们很好理解单卦的象(基本)。就能更好的理解六十四卦的六爻符号。其中单卦的象在理解六十四卦爻辞也是有一定作用的。其的仿此类推。每天记八个六十四卦卦名,一星期左右就能差不多记住很多了,反复练习时间长了就能经久不忘。 坎为水水泽节水雷屯水火既济泽火革雷火丰地火明夷地水师 艮为山山火贲山天大畜山泽损火泽睽天泽履风泽中孚风山渐 震为雷雷地豫雷水解雷风恒地风升水风井泽风大过泽雷随

软件脱壳破解精典实例教程

软件脱壳、破解精典实例教程 我要破解的软件:网络填表终结者破解需要的软件(点击下载): 侦壳language.exe 脱壳AspackDie.exe 反编译W32Dasm黄金中文版 16进制编辑器UltraEdit.rar 在破解之前先复习一下基础知识: 一.破解的等级 初级,修改程序,用ultraedit修改exe文件,称暴力破解,简称爆破 中级,追出软件的注册码 高级,写出注册机 二.用w32dasm破解的一般步骤: 1.看软件的说明书,软件注册与不注册在功能上有什么区别,如何注册 2.运行此软件,试着输入你的姓名和任意注册码去注册,有什麽错误提示信息,将错误提示信息记下来 3.侦测有无加壳(第一课).若加壳,脱壳(第二课) 4.pw32dasmgold反汇编 5.串式参考中找到错误提示信息或可能是正确的提示信息双击鼠标左键 6.pw32dasmgold主窗口中分析相应汇编,找出关键跳转和关键call 7.绿色光条停在关键跳转,在pw32dasmgold主窗口底部找到关键跳转的偏移地址(实际修改地址) 8.用ultraedit找到偏移地址(实际修改地址)修改机器码,保存 壳的概念:版权信息需要保护起来,不想让别人随便改动,exe可执行文件压缩,最常见的加壳软件ASPACK ,UPX,PEcompact 脱壳:拿到一个软件,侦测它的壳,然后我们要把它的壳脱去,还原它的本来面目.若它没有加壳,就省事不用脱壳了.脱壳软件unaspack,caspr,upx,unpecompact,procdump 实际修改地址(偏移地址)和行地址(虚拟地址)pw32dasmgold反汇编出来的代码由三列组成 第一列行地址(虚拟地址) 第二列机器码(最终修改时用ultraedit修改)

教你如何破解exe软件

教你如何破解软件 要破解的软件:网络填表终结者 破解需要的软件(点击下载): 侦壳 language.exe 脱壳AspackDie.exe 反编译 W32Dasm黄金中文版 16进制编辑器 UltraEdit.rar 在破解之前先复习一下基础知识: 一.破解的等级 初级,修改程序,用ultraedit修改exe文件,称暴力破解,简称爆破 中级,追出软件的注册码 高级,写出注册机 二.用w32dasm破解的一般步骤: 1.看软件的说明书,软件注册与不注册在功能上有什么区别,如何注册 2.运行此软件,试着输入你的姓名和任意注册码去注册,有什麽错误提示信息,将错误提示信息记下来 3.侦测有无加壳(第一课).若加壳,脱壳(第二课) 4.pw32dasmgold反汇编 5.串式参考中找到错误提示信息或可能是正确的提示信息双击鼠标左键 6.pw32dasmgold主窗口中分析相应汇编,找出关键跳转和关键call 7.绿色光条停在关键跳转,在pw32dasmgold主窗口底部找到关键跳转的偏移地址(实际修改地址) 8.用ultraedit找到偏移地址(实际修改地址)修改机器码,保存 壳的概念:版权信息需要保护起来,不想让别人随便改动,exe可执行文件压缩,最常见的加壳软件ASPACK ,UPX,PEcompact 脱壳:拿到一个软件,侦测它的壳,然后我们要把它的壳脱去,还原它的本来面目.若它没有加壳,就省事不用脱壳了.脱壳软件unaspack,caspr,upx,unpecompact,procdump 实际修改地址(偏移地址)和行地址(虚拟地址)pw32dasmgold反汇编出来的代码由三列组成 第一列行地址(虚拟地址) 第二列机器码(最终修改时用ultraedit修改) 第三列汇编指令

六爻初级知识入门(上)

六爻初级知识入门(上) 一个周易爱好者都知道周易预测是十分神奇的。可是要想达到熟练观测的水平,必须扎扎实实从最基本的知识学起,有了坚实的基础,再有个正确的学习方法,并能苦练功夫,我想能独立操作是不难的。要想简洁的、快速的掌握六爻技巧, 就必须掌握周易六爻有关的基本概念。 周易是一部非常神奇的书,它的主要作用是占筮,她的主要内容就是八卦,其内容涉及了生活中的各个方面。其精髓是变易、不易、简易。周易预测,通常是用八卦来完成的,下面我们先讲一下八卦的知识,八卦分别是:乾、兑、离、震、巽、坎、艮、坤,其中乾、坎、震、艮为阳,坤、巽、离、兑为阴,八卦的顺序是乾一、兑二、离三、震四、巽五、坎六、艮七、坤八,这个很重要的,可用来计算卦中的数。八卦的方位分先天和后天,先天方位是:乾南兑东南离东震东北巽西南坎西艮西北坤北,后天方位是:离南巽东东南震东艮东北坎北乾西北兑西坤西南,八卦的象是:乾三连,坤六断,震仰盂,艮覆碗。兑上缺,巽下断,离中虚,坎中满。大家可以在线上排盘时仔细观察。 八卦所属五行是:乾兑为金,艮坤为土,坎为水,离为火,震巽为木。 天干与地支 天干 一十天干 甲、乙、丙、丁、戊、己、庚、辛、壬、癸 二所属五行、阴阳 甲乙同属木, 甲为阳, 乙为阴 丙丁同属火, 丙为阳, 丁为阴 戊己同属土, 戊为阳, 己为阴 庚辛同属金, 庚为阳, 辛为阴 壬癸同属水, 壬为阳, 癸为阴 三十天干属性: 甲木,纯阳之木,名为大林木,有参天之势,性坚质硬,栋梁之材,故为阳木。 乙朩,属纯阴之木、名为花草之木,有装扮人间之美,性柔质软,故为阴木。 丙火,属纯阳之火,名为太阳大火,有普照万物之功,性情刚烈,故为阳火。 丁火,属纯阴之火,名为灯烛之火,有照亮万户之功,性柔质弱,故为阴火。 戊土,属纯阳之土,名为城墙土,为万物之司命,其性高,质硬,而向阳,故为 阳土。 己土,属纯阴之土,名为田园之土,有生育万物之功,培木溶水之能,其性湿 质软,低洼向阴,故为阴土。 庚金,属纯阳之金,名为剑戴之金,有刚健肃杀之力,其性刚质硬,故为阳金: 辛金,为纯阴之金,名为饰金,有增艳人间之美,其性软洁静,故为阴金。 壬水,属纯阳之水,名为江河海洋大水。随地球运转周流不息,故为阳水。 癸水,属纯阴之水,名为雨露坑涧之水,气化而得,其性静弱,资生万物,故为 阴水。其水有形,无体,随变而变,一生飘流。 四十天干配四时方位: 甲乙木:时间为春天,其位东方,名甲乙东方木。 丙丁火:时间为夏天,其位南方,名丙丁南方火。 庚辛金:时间为秋天,其位西方,名为庚辛西方金。 壬癸水:时间为冬天,其位北方,名北方壬癸水。 戊己土:时间为四季未,其位中央,又主每个季节的最后十八天,名为戊己中

小学六年级语文基础知识总复习练习(答案)

小学六年级语文基础知识总复习练习(答案)(一)字、词一.改正下列成语中的错别字。 直接了当(截)焕然一新(焕)道貌暗然(岸)既往不究(咎) 别出心栽(裁)礼上往来(尚)难以名壮(状)色厉内茬(荏) 如火如茶(荼)因地治宜(制)推心至腹(置)纷至踏来(沓) 原形必露(毕)谈笑风声(生)委屈求全(曲)金壁辉煌(碧) 二.直写出下面代称的含义 “杏林”指医生“桃李”指学生(指自己所教的学生)“手足”指弟兄 “汗青”指史册“杜康”指美酒“红豆”指相思 三.巧填成语。 1.填叠词。 威风凛凛忠心耿耿风尘仆仆千里迢迢衣冠楚楚大名鼎鼎文质彬彬人才济济 2.填恰当的字。 一贫如洗视死如归对答如流倒背如流巧舌如簧度日如年心急如焚守口如瓶胆小如鼠心细如尘 3.填上表示动物名称的字,组成成语。 亡(羊)补牢飞(蛾)扑火(牛)刀小试童颜(鹤)发 金(蝉)脱壳门可罗(雀)(马)到成功浑水摸(鱼) 4.填上与人体有关的字,组成成语。 尖(嘴)猴(腮)(皮)开(肉)绽(唇)枪(舌)剑劈(头)盖(脸) (肝)(胆)相照扬(眉)吐气(趾)高气扬千钧一(发) 5.填颜色,组成语。 (银)装素裹(绿)树成荫万古长(青)(紫)气东来灯(红)酒(绿)半(青)半(黄) 面(红)耳(赤)姹(紫)嫣(红)(青)山(绿)水(白)纸(黑)字(青)(黄)不接 (黑)(白)分明 6.“然"字组合。 (潸)然泪下(勃)然大怒(油)然而生(轩)然大波(庞)然大物(泰)然处之 (寂)然无声(愤)然不顾(截)然不同(蔚)然成风 7.在下面括号内填上一个数,组成成语,并使各等式成立。 (一)步登天+(八)面玲珑﹦(九)霄云外(一)触即发+(六)亲不认﹦(七)窍生烟 (五)体投地-(一)毛不拔﹦(四)通八达(五)花(八)门-(两)面(三)刀﹦(三)令(五)申四.补充句子 失之毫厘,谬之千里得道多助,失道寡助前人栽树,后人乘凉兼听则明,偏听则暗 人无远虑,必有近忧近朱者赤,近墨者黑乘兴而来,败兴而归远在天边,近在眼前 不鸣则已,一鸣惊人一着不慎,满盘皆输不以为耻,反以为荣己所不欲,勿施于人五.下面是广告中运用的成语,你能写出正确的成语吗? 百衣百顺(百依百顺)闲妻良母(贤妻良母)默默无蚊(默默无闻)乐在骑中(乐在其中) 语过添情(雨过天晴)牙口无炎(哑口无言)无胃不至(无微不至)食全食美(十全十美) 天尝地酒(天长地久)饮以为荣(引以为荣)触幕惊新(触目惊心)诗情花艺(诗情画意) 六.成语对对子。(注意对仗要工整,意思要相对)。 例:粗茶淡饭(山珍海味)流芳百世(遗臭万年)井然有序(杂乱无章)指鹿为马(循名责实)固若金汤(危如累卵)精雕细刻(粗制滥造)雪中送炭(锦上添花)伶牙俐齿(笨嘴拙舌)七.下面人名各取自什么成语? 杜鹏程(鹏程万里)魏建功(建功立业)王任重(任重道远)刘海粟(沧海一粟)丁慧中(秀外慧中)陶成章(出口成章)焦若愚(大智若愚)刘青云(青云直上)沈致远(宁静致远) 八.成语之最。 1.最贵重的东西(价值连城) 2.最近的距离(近在咫尺) 3.最激烈的竞争(龙争虎斗) 4.最快的阅读(一目十行) 5.最高超的医术(妙手回春) 6.最快的速度(一日千里) 7.最紧急的情况(十万火急)8.最好的记忆(过目成诵)9.最深刻的见解(入木三分) 10最大的嘴巴(气吞山河)11.最诚恳的道歉(负荆请罪)12.最小的地方(方寸之地)

易经入门(最全解答)

易经入门(最全解答) 对于周易的迷途者,可能需要找些入门的书籍,建议。但是百度,网站等会经常变动,比如我之前找到一个周易入门的好网站,是从百度里面搜到的,过几天就搜不到了,后悔当时没有收藏网站,所以现在把之前积累的公布出来建议或书籍发布出来,大家收藏一下。 (1)这个比较全面客观的: 数目有很多,建议你你有整体的观念,这样会比较容易学。以下这段介绍,是我保存的,觉得很好,希望对你有用。 选书如选老师,因此选择书籍是一件十分重要的事。在此,向给大家推荐相关书籍,让你少走弯路,成为大师级高手! 重要叮嘱 易学、佛经是迷宫,进门后一定要学会出得了门。正如紫钦天老师在《太极博弈原理》里面“信息对抗:命越算越薄,知命与宿命”提到的,其实现在才最真实的,人要克服的是未来信息对现在的影响!很多人能懂一点点了,以为天下无敌,但是如果未来的信息,没有百分百准确,都是误导人的。最怕三分真,七分假。人依然会迷茫,犹豫,错失。 另外,易曰:知得也要知丧,当你得到了一些东西的时候,你也会失去一些东西。诚然,人生从某种意义上讲,没有绝对的好、坏、善、恶,而在于你的选择。为什么还要特别提醒呢?因在现实中接触不少易友,一学什么易或练什么功,就顾及不到其他方面,给家庭社会造成一些不好的影响。古曰:平常心是道!不要把自己标榜成与别人不一样,否则你会一事无成。要明白你只是一个凡人,不要以为自己学易了就有什么了不起。法、侣、财、地(简单讲就是方法、同道、财力、环境)是学好功法,其实也是学好易经的最好指导。千万不要指望学易来发大财,否则你将走上不归路。以此为职业的人,是有宿因的。薄迦梵歌曰:要把成与败、得于失等同看待。患得患失不是学易人应有的心态。好好工作,养家糊口,业余修习,平凡一生这是吾师给本人的开示和指导,希望易友也能从中得到启发! 最后以一句话与大家共勉:天行健,君子以自强不息;地势坤,君子以厚德载物!众善奉行,诸恶莫作最为紧要! 1、基础书 (1)周易原文注解类: 如果不读周易原文,而想彻底搞懂周易基本是不可能的,万丈高楼平地起,基础越牢,对后面的学习帮助越大。 建议采用中国易经协会会长、哲学教授刘大钧著的《周易概论》,其他如上海古籍出版社、商务印书馆等较大的出版社出版的《周易》都是比较可靠的。 南怀瑾老师倡导的儿童经典导读中心出版的原文《易经》,可以帮助大家认识和听懂一些难读的字。 (2)周易精华思想融汇类: 应该说,目前只有紫钦天老师的《太极博弈原理》一书能做到这点,全书中是没有解释卦象的。但是如果对于一个研究周易几十年的学者来说,一看这书,应该明白其实里面是是蕴含

六爻快速装卦法(寻世认宫)

六爻快速装卦法(寻世认宫) 此法引自席学易先生的《八卦预测真踪》,在此衷心感谢席先生! 寻世认宫就是找出世爻和应爻,判断出该卦出于何宫。起出六爻卦,首先要找出世爻和应爻。在六爻预测理论中,有一套完整的推断世爻位置的方法,但由于过于繁琐,缺乏实践操作性。下面我们介绍一种操作性很强的“歌诀”法,非常实用。认真分析一下就会看出,世爻和应爻有着固定的对应关系,必定是一个在下卦,一个在上卦,并且相隔两爻。根据这个规律,只要找出世爻,应爻自然也就找到了。 寻世歌 天同二世天变五 地同四世地变初 本宫六世三世异 人同游魂人变归 简介如下: 天同二世天变五。上卦和下卦如果只有上爻相同,那么,世爻就在该卦的第二爻,中间隔两爻,就是应爻。这就叫做“天同二世”。如果上卦和下卦只有上爻不同,则世爻就为由下往上数的第五爻,中间隔两爻,就是应爻。这就叫做“天变五”。 地同四世地变初。理同上。 本宫六世三世异。“本宫六世”是指每一个宫的首卦世爻都在六爻上。“三世异”是指如果内外卦的天、人、地爻各不相同,那么世爻就一定 是在三爻上。 人同游魂人变归。“人同游魂”是说上下卦如果只有人爻相同,那么,此卦即是“游

魂卦”,它的世爻在四爻上。“人变归”是指上下卦只有人爻不同,那么这个卦就 是“归魂卦”,世爻为三爻。 认宫歌一二三六外卦宫四五游魂内变更归魂内卦是本宫简介如下:一二三六外卦宫。世爻如果在一、二、三或六爻上,那么,外卦所属五行属性(上卦)就是该卦所属的那一宫。 四五游魂内变更。四世卦、五世卦、游魂卦,将内卦全变过来(即将内卦三爻的阴爻变成阳爻,阳爻变成阴爻),变后所得新卦(三画卦)的属性就是该卦(六画卦)所属的那一宫。 归魂内卦是本宫。这句好理解,归魂卦的内卦就是该卦所属的那一宫。把“寻世歌”和“认宫歌”合起来,叫做“寻世认宫歌”,这是综合记忆的一个办法:寻世认宫歌 天同二世天变五地同四世地变初本宫六世三世异人同游魂人变归 二三六外卦宫四五游魂内变更 归魂内卦是本宫 各位易友可以对照64 卦图自行研究,很有用。 六爻快速装卦法(寻世认宫) 六爻寻世认宫捷法 寻世诀: 天同二世天变五,地同四世地变初。 本宫六世三世异,人同游魂人变归。 认宫诀: 一二三六外卦宫,四五游魂内变更。 归魂内卦是本宫。 --以上节选自《筮学指要》大多数学习六爻的朋友都是用京房的八宫变法来装卦的,这种方法虽是六 爻之基础,但用起来比较费事且容易出错。故此,本人收录了《筮学指要》中的快速装卦法,供大家参

周易零基础入门教程

周易零基础入门教程 周易零基础入门:概念篇a 内容提要:本文涉及到的概念:爻,阳爻,阴爻,单卦,卦序,复卦(包括上卦/下卦,外卦/内卦),卦名,八单卦的基本卦象。 学习周易与学习任何一门科学学科一样,要想入门,必须先了解该学科的基本概念。概念是最基础也是最核心的东西,也是进行各种推演的基础。所以务必认真体会,不可忽视。 在进行讲述之前,我先进性简单的类比。我们大家都知道,化学里面有各种化学元素,不同元素有不同的化合价,有各自独特的属性,各种化学元素组成各种化合物,各种化合物在不同的条件下按照各种化学方程式,可以产生千变万化的化学反应,而生活中无处没有化学。 不仅仅是化学,物理、数学等理科学科都类似,都有自己的概念和符号系统,也有自己的公式、公理、定理和定律。周易也是如此,并且没有什么神秘之处,所以大家要以平常心来学习,要克服各种常见的误区。比如见周易能够算卦占卜,以为是什么神仙鬼神在暗中操纵,从而心生神秘从而茫然。学习周易不可避免的一个问题就是我以前所提到的一个概念:终极追问(就是追问世界万物的最终极的决定力量)。也就是说,为什么用周易能预测未来?相信大部分人都会有此一问。 说起终极追问,其实各种科学学科也照样处处存在,不独周易有之,比如万有引力定律,为什么把物体往天上抛它会往下落?是谁让它下来的?你可能会说是引力的缘故,但是我要问你,引力的这种规律是谁设计或者决定的?各种规律的背后,谁是终极的决定力量? 回答这个问题难免要涉及到哲学或者宗教,大家有兴趣以后可以深入学习,这里先不论述,也请大家放下这种终极追问,姑且先把周易当成物理化学这样的普通学科来学习,一句话,放下所有的神秘感,以平常心来学习!我们可以设想,假设你穿越到原始社会,去告诉那里的人们说有一种叫做“化学”的学问,学好了之后,可以生火,可以烧水,能劈山(炸药),可煮海(蒸馏,制盐等),那原始人同样会感觉非常神秘,就好比我们对周易感觉很神秘一样。 我以后在讲述各种概念的时候,会常用类比或比喻的方式来消解大家的神秘感。我敢保证:周易入门绝对比化学、物理入门要简单!:) 闲言少讲,书归正传,开始讲述周易的一些基本概念。 我们经常听说,八卦、六十四卦、算卦等概念,就知道卦是周易里一个重要概念,为了说明卦的概念必须先做一个铺垫。 1.1. 概念一:爻(yao2) 爻有两种,一种叫阳爻,一种叫阴爻。阳爻用一长横表示:—,阴爻用两个短横表示:-- 见图1.1。 周易中用阳爻和阴爻来表达阴和阳这两种抽象的概念,对于阴阳大家先不必多想,就把它当作两种符号,好比正号和负号。爻是组成卦的基本元素。 1.2. 单卦 单卦的组成很简单,由三个爻组成,每个爻都有两种状态:阳爻和阴爻,所以一共有2的3次方即八种单卦,这就是我们常听说的八卦。 这八卦是:乾(qian2)、兑(dui4) 、离(li2) 、震(zhen4) 、巽(xun4) 、坎(kan3)、艮(gen4) 、坤(kun1)。根据三个爻的组合形式,上面八个卦都有自己的形象化表述,这种形象化的表述即称为卦符,详见图1.2. 为了帮助我们记忆,古人总结了歌诀:乾三连,坤六断;震仰盂(yu2,痰盂的盂),艮覆碗;离

OllyDBG破解工具入门教程

OllyDBG破解工具入门教程 一、OllyDBG 的安装与配置 OllyDBG 1.10 版的发布版本是个 ZIP 压缩包,只要解压到一个目录下,运行 OllyDBG.exe 就可以了。汉化版的发布版本是个 RAR 压缩包,同样只需解压到一个目录下运行 OllyDBG.exe 即可: OllyDBG 中各个窗口的功能如上图。简单解释一下各个窗口的功能,更详细的内容可以参 考 TT 小组翻译的中文帮助: 反汇编窗口:显示被调试程序的反汇编代码,标题栏上的地址、HEX 数据、反汇编、注释可以通过在窗口中右击出现的菜单 界面选项->隐藏标或显示标题 来进行切换是否显示。用鼠标左键点击注释标签可以切换注释显示的方式。 寄存器窗口:显示当前所选线程的 CPU 寄存器内容。同样点击标签 寄存器 (FPU) 可以切换显示寄存器的方式。 信息窗口:显示反汇编窗口中选中的第一个命令的参数及一些跳转目标地址、字串等。 数据窗口:显示内存或文件的内容。右键菜单可用于切换显示方式。 堆栈窗口:显示当前线程的堆栈。 要调整上面各个窗口的大小的话,只需左键按住边框拖动,等调整好了,重新启动一 下 OllyDBG 就可以生效了。

启动后我们要把插件及 UDD 的目录配置为绝对路径,点击菜单上的 选项->界面,将会出来一个界面选项的对话框,我们点击其中的目录标签: 因为我这里是把 OllyDBG 解压在 F:\OllyDBG 目录下,所以相应的 UDD 目录及插件目录按图上配置。还有一个常用到的标签就是上图后面那个字体,在这里你可以更改 OllyDBG 中显示的字体。上图中其它的选项可以保留为默认,若有需要也可以自己修改。修改完以后点击确定,弹出一个对话框,说我们更改了插件路径,要重新启动 OllyDBG。 在这个对话框上点确定,重新启动一下 OllyDBG,我们再到界面选项中看一下,会发现我们原先设置好的路径都已保存了。有人可能知道插件的作用,但对那个 UDD 目录不清楚。我这简单解释一下:这个 UDD 目录的作用是保存你调试的工作。比如你调试一个软件,设置了断点,添加了注释,一次没做完,这时 OllyDBG 就会把你所做的工作保存到这个 UDD 目录,以便你下次调试时可以继续以前的工作。 如果不设置这个 UDD 目录,OllyDBG 默认是在其安装目录下保存这些后缀名为 udd 的文件,时间长了就会显的很乱,所以还是建议专门设置一个目录来保存这些文件。 另外一个重要的选项就是调试选项,可通过菜单 选项->调试设置 来配置:

相关主题