Exploit 编写系列教程第十篇用ROP束缚DEP-酷比魔方

Exploit 编写系列教程第十篇用ROP束缚DEP-酷比魔方
Exploit 编写系列教程第十篇用ROP束缚DEP-酷比魔方

Exploit编写系列教程第十篇:用ROP束缚DEP-酷比魔方

译:看雪论坛-dragonltx-2010-9-20介绍

在我完成我前面的exploit相关教程之后三个月,我最终找了些时间和精力来开始写一篇新的文章。

在前面的教程中,我已经解释了基于栈溢出的基础和怎样执行任意的代码。我讨论了direct ret溢出,基于SEH的exploit,Unicode和其他的字符限制条件,运用调试器插件来加速exploit 的开发,怎样绕过常用的内存保护机制和怎样写你自己的shellcode。

然而第一个教程是写来引导人们学习exploit开发的基础,从乱写开始(主要是为了照顾那些不懂exploit开发的人们),你很可能发现最近的教程大体上继续在这些基础上下功夫,并且需要牢固的asm知识,创造力的思想,和一些exploit写作的经验。

今天的教材是不一样的。我将继续在我们已经在前面的教程中见过和学到的知识上更上一步。这需要一些一些要求:

1、你需要掌握基于栈溢出的利用技术(direct RET,SEH,等等)。我假设你已经具备了。

2、你需要一些asm知识。不要担心。即使你的知识只是能够明白特定指令的作用,你也将可能读懂这篇教程。但是当你想自己打造自己的rop exploit/应用rop技术,当你需要完成一个特定的任务时,你需要能够写asm/认出asm指令。总之,在某种程度上,你能够在写rop 链和写通用的shellcode之间进行比较,因此我猜你已经有了一定水准的asm编写水平。

3、你需要知道怎样用Immunity Debugger。设置断点,单步执行,修改寄存器和栈上的值。

4、你需要知道栈是如何工作的,数据是怎样入栈的,出栈的,寄存器是怎样工作的并且怎样使寄存器和栈之间互相影响。这是开始写ROP所必须的。

5、如果你没有掌握基于栈溢出利用的基础,那么这文章不适合你。我将试着解释并且尽可能好的写出所有的步骤,但是为了避免以一篇很长的文章结束,我将会假设你知道基于栈溢出的原理和利用方法。

在这系列的文章6中http://www.corelan.be:8800/index.php/2009/09/21/exploit-writing-tutorial-part-6-bypassing-stack-cookies-safeseh-hw-dep-and-aslr/,我已经解释了一些技术来绕过内存保护系统。今天,我将精心阐述这些保护机制中的一个,叫做DEP。(更确切地说,我将讨论硬件DEP(NX/XD)和怎样绕过它)。在教程6中你可以读到,有2中主要的保护机制...首先,开发者能够利用很多技术(安全编码,栈cookies,safeseh,等等)。大多数的编译器和链接器现在默认使用这些特征(除了“安全编码”,这不是课程的一个特征),这是很不错的。很悲哀,还有相当多数量的应用程序没有利用保护措施,依靠其他的保护机制。我想你会同意还有很多的开发者没有将安全编码应用到他们的所有代码中。更重要的是(是事情更糟),一些开发者开始依靠OS的保护机制(看下面),并且不关心安全编码。

这将我们带到保护的第二层,所有最近版本的Windows操作系统的一部分:ASLR(地址空间布局随机化)和DEP(数据执行保护)。

ASLR将使栈,堆,模块基地址随机化,使它很难被“预测”(甚至硬编码)地址/内存位置,因此,使黑客很难打造可靠的exploit。DEP(在这个教程里我指硬件DEP)将会基本上阻止代码在栈上执行(这是所有前面教程所做的)。

ASLR和DEP的结合已经证明了在大多数情况下是有效的(但是,今天你将会学到的,在特定环境下还是可以被绕过的)。

简言之,应用程序bug/缓冲区溢出不会自动魔幻地消失,将会不可能消失,并且编译器/链接器不是一直对所有的模块都适用。这意味着ASLR和DEP是我们最后的防御层。ASLR 和DEP是所有最近OS的一部分,因此,很自然地可以看到攻击/绕过这两种保护机制已经成为黑客和研究者的重要目标。

在教程里用来绕过DEP的技术不是最新的技术。它基于ret-to-libc的思想并且被烙上“ROP”的印记,是“Return Oriented Programming”的简称。

我已经在教程6中讨论了ret-to-libc的思想,实际上,在教程6中解释的NtSetInformationProcess技术是ROP的一个例子。

在过去的几年/几月,用ROP绕过DEP的新技术已经写出来了。这个教程做的就是简单地将所有的信息聚集起来并且解释他们是怎样用来在win32系统上绕过EDP的。

在看DEP是什么,怎样绕过它之前,有一件很重要的事要记住::

在所有的前面教程中,我们的shellcode(包括定位代码等等)是放在栈或者堆上,并且试着用可靠的方法来跳到代码处并执行。

由于硬件DEP的使用,我们不能再栈上执行一条指令。你可以在栈上弹入并且弹出数据,但是我们不能跳到栈中执行代码。在没有绕过/禁掉DEP时不行。

记住。

Win32世界中的硬件DEP

硬件DEP利用了在DEP兼容的CPU的NX(“无执行页保护”,AMD规格)或者XD(“不能执行”,intel规格)位,并且将特定部分的内存(只能包含数据,比如说默认堆,栈,内存池)标记为不可执行。

当尝试在一个DEP保护的数据页执行代码时,将会发生访问拒绝(STATUS_ACCESS_VIOLATION(0xc0000005))。在大部分情况下,这会导致进程结束(没有处理的异常)。事实上,当一个开发者决定他想允许代码在一个特定的内存页中运行,他将不得不分配内存然后标记为可执行。

在Windows XP SP2和Windows Server2003SP1引入了硬件DEP的支持,并且是这两种版本之后的所有Windows操作系统的一部分。

DEP作用在每个虚拟内存页面并且会改变PTE(页表入口点)上的一位来标记页面。

为了使OS用这个特征,处理器必须运行在PAE模式(物理地址扩展)。幸运地,Windows 默认开启PAE。(64位的系统是知道“Address Windowing Extensions”(AWE),因此也不需要在64位上有一个分离的PAE内核)。

DEP在Windows操作系统中表现的方式是基于一个能够配置成下列值中的一个的环境:

●OptIn:只有有限的一些windows系统模块/二进制程序是受DEP保护的。

●OptOut:所有在Windows系统上的程序,进程,服务都是受保护的,除了在例外列表中的进程。

●AlwaysOn:所有在Windows系统上的程序,进程,服务都是受保护的。没有例外。

●AlwaysOff:DEP被关掉。

除了这四个模式之外,MS实现了一种叫做“永久的DEP”机制,用SetProcessDEPPolicy (PROCESS_DEP_ENABLE)来确保进程是启用DEP的。在Vista(并且之后的)上,这个“永久”的标记是自动对所有的可执行文件(用/NXCOMPAT选项)设置的。当标记被设置,那么改变DEP策略可能只能用SetProcessDEPPolicy技术(看后面)。

你可以在https://www.360docs.net/doc/f914517467.html,/en-us/library/bb736299(VS.85).aspx和https://www.360docs.net/doc/f914517467.html,/b/michael_howard/archive/2008/01/29/new-nx-apis-added-to-windows-vista-sp1-windows-xp-sp3-and-windows-server-2008.aspx找到更多有关SetProcessDEPPolicy的信息。

对不同版本的Windows操作系统的默认设置是:

●Windows XP SP2,XP SP3,Vista SP0:OptIn(XP SP3也有永久的DEP)

●Windows Vista SP1:OptIn+AlwaysOn(+永久的DEP)

●Windows7:OptOut+AlwaysOn(永久的DEP)

●Windows Server2003SP1和更高的:OptOut

●Windows Server2008和更高的:OptOut+AlwaysOn(+永久的DEP)

在XP和2003server上,DEP行为可以通过boot.ini的参数来改变。只要简单地在这行的

(这里“policy”可以是OptIn,OptOut,AlwaysOn或者AlwaysOff)

在Vista/Windows2008/Windows7,你能用bcdedit命令来改变设置:

你可以通过运行“bcdedit”来得到目前的状态然后看下nx的值

一些关于硬件DEP的链接:

●https://www.360docs.net/doc/f914517467.html,/kb/875352

●https://www.360docs.net/doc/f914517467.html,/wiki/Data_Execution_Prevention

●https://www.360docs.net/doc/f914517467.html,/en-us/library/aa366553(VS.85).aspx

绕过DEP--构建模块

正如在介绍中陈述的,当硬件DEP启用时,你不能只是跳到你的在栈上的shellcode,因为它不会执行。相反,它将会触发一个访问违例并且很可能会结束进程。

在那个的顶部,每个特殊的DEP设置(OptIn,OptOut,AlwaysOn,AlwaysOff)和永久的DEP 的影响(或者缺席)将需要一个特殊的方法和技术。

因此,我们的选择是什么?

好的,由于我们不能在栈上执行我们自己的代码,我们唯一能做的事是从已经加载的模块中执行现有的指令/调用现有的函数,然后用栈上的数据作为这些函数/指令的参数。

这些现有的函数会提供给我们这些选择

●执行命令(举个例子,WinExec-典型的“ret-to-libc)

●将包含你的shellcode的页面(例如栈)标记为可执行(如果可以通过主动的DEP策略来使它运行执行)然后跳到那里

●将数据拷贝到可执行区域然后跳到那里(我们可能要分配内存然后首先将那个区域标记为可执行)

●在运行shellcode之前改变当前进程的DEP设置

当前的主动的DEP策略和设置将几乎支配你不得不在某些情况下用来绕过DEP的技术。

一个需要一直有效的技术是典型的“ret-to-libc”。你需要能够执行简单的命令,用现有的Windows API调用(如WinExec),但是用这个很难精巧地制作“真正的”shellcode。

因此我们要看得远点。我们真的需要绕过/推翻/改变DEP设置然后使我们的自定义shellcode运行。幸运地,标记页面可执行/改变DEP策略设置/等等都能通过Windows OS 的native API/函数调用。

因此,这很简单吧?

是也不是。

当我们要绕过DEP,我们要调用一个Windows API(我将会在后面更进一步描述这些Windows API的细节)。

那个API的参数必须在寄存器或者栈中。为了将这些参数放在它们应该在的地方,我们很可能要写一些自定义代码。

想想。

如果给定的API函数的一个参数比如是shellcode的地址,那么你不得不动态产生/计算这个地址,然后将它放在栈上的正确位置。你不能硬编码,因为这将会不可靠(或者,如果缓

冲区不能处理null字节并且其中的一个参数需要null字节,那么你就不能再你的缓冲区里硬编码那个值)。用一些短小的shellcode来产生值也不能成功,因为...DEP启用。

问题:我们如何得到栈上的这些参数

回答:用自定义代码

在栈上的自定义代码,无论如何,是不能执行的,DEP会阻止那个发生。

不相信我?那我们来试下在教程1里的那个老而好的Easy RM to MP3Convertor exploit。没有DEP(OptIn)

有DEP(OptOut)

或者,在调试器中可以看到的(启用DEP-OptOut),就在shellcode的第一条指令将要执行(就在jump esp的后面):Movie

相信我。甚至是一个简单的NOP指令也不会执行。

小配件

无论如何,回到我们的“自定义代码”问题上。因此如果在栈上运行代码不成功,我们不得不用ROP。

为了运行我们的自定义代码和最终执行Windows API函数调用,我们将需要用现有的指令(进程里的可执行区域的指令),并且将它们按顺序放在一起(并且将它们链在一起),因此它们将会产生我们所需要的然后将数据放入寄存器中或者栈上。

我们需要打造一连串指令。我们需要从链的一部分跳转到链的其他部分在没有从DEP保护的区域里执行一条简单的指令。或者,用一种更好的术语,我们需要从一条指令返回到下一条指令的地址(最终返回到Windows API调用当栈已经被设置了)。

在我们的ROP链中的每一条指令(一系列的指令)将会被叫做一个“小配件”。每个小配件将会返回到下一个小配件(=到下一个小配件的地址,在栈上),或者直接调用下一个地址。那样,指令序列被链在一起。

在他的原始文章中,Hovav Shacham用术语“小配件”当涉及到高级别的宏/代码片段。时下,术语“小配件”通常用来指一系列的以ret结尾的指令(实际上只是原始“gadget”

定义的一个子集)。理解这微妙的东西很重要,但是同时我确信你会原谅我当我在这篇教程

里用“gadget”来指以些以ret结尾的指令集合。

在你打造基于ROP的exploit的同时,你会发现用这些小配件来打造你的栈和调用API的思想有时能和解决酷比魔方相提并论(感谢Lincoln的伟大比较)。当你试着在栈上设置一个特定的寄存器或者值,你可能以改变其他的一个而结束。

因此没有通用的方法来打造一个ROP exploit,然后有时你会发现它有点让人沮丧。但是我能向你保证毅力和坚持不懈会有回报的。

这是理论。

调用Windows函数绕过DEP

首先,在你开始写exploit之前,你需要决定你的方法是什么。在当前OS/DEP策略下,你能用来绕过DEP的可利用的/可能的Windows API是什么?一旦你已经决定了,你可以相应地思考设置你的栈。

这些是最重要的函数能够帮你绕过/停用DEP:

●VirtualAlloc(MEM_COMMIT+PAGE_READWRITE_EXECUTE)+复制内存。这会允许你创建一个新的可执行内存区域,将你的shellcode复制到这里,然后执行。这技术要求你将这2个API互相链在一起。

●HeapCreate(HEAP_CREATE_ENABLE_EXECUTE)+HeapAlloc()+复制内存。大体上,这函数提供了一种和VirtualAlloc()相似的技术,但是需要将3个API互相链在一起。

●SetProcessDEPPolicy()。这允许你改变当前进程的DEP策略(因此你能从栈上执行你的shellcode)(Vista SP1,XP SP3,Server2008,并且只在DEP策略设成OptIn或者OptOut)●NtSetInformationProcess()。这个函数会改变当前进程的DEP策略,因此你能从栈上执行你的shellcode。

●VirtualProtect(PAGE_READ_WRITE_EXECUTE)。这个函数会改变一个给定内存页的访问保护级别,允许你将shellcode在的地方标记为可执行。

●WriteProcessMemory()。这个将允许你将shellcode复制到另一个(可执行)位置,因此你能跳到那里并且执行shellcode。目标位置必须是可写和可执行的。

这些函数中的每一个都要求栈或者寄存器按一种特定的方法设置。毕竟,当一个函数被调用,它会假设函数的参数被放在栈顶(=在ESP)。这意味着你的首要目标是在栈上精巧地制作这些值。用一种通用的和可靠的方法,没有在栈上执行任何代码。

最后(在设置完栈后),你将很可能停止调用这个API。为了使调用成功,ESP必须指向API 函数的参数。

因为我们将会用小配件(一系列指令的指针),被放在栈上的你的payload/缓冲区的一部分,并且因为我们一直很可能在构建完你的整个rop链来配置参数后返回到栈上,你的最终结果很可能是这样的:

在函数被调用之前,ESP指向Windows API函数指针。这个指针直接跟着函数需要的参数。那时,一个简单的“RET”指令将会跳到那个地址。这会调用函数并且是ESP移动4字节。如果一切顺利的话,栈顶(ESP)指向被调用函数的参数。

选择你的武器

(1)=不存在

(2)=将会失败因为默认的DEP策略设置

不要担心怎么应用这些技术,一会儿事情将会变明白。

函数参数&用法提示

正如早些时候陈述的那样,当你想用这些可用的Windows API中的一个,你首先要用正确的参数为那个函数设置栈。接下来的是这些函数的总结,它们的参数,和一些用法提示。

VirtualAlloc()

这个函数将会分配新的内存。这个函数的一个参数指定了最近分配的内存的可执行/访问级别,因此我们的目标是将这个值设成EXECUTE_READWRITE。

https://www.360docs.net/doc/f914517467.html,/en-us/library/aa366887(VS.85).aspx

这个函数需要你设置栈包含下面的值:

返回值函数返回地址(=在它完成后函数需要返回的地址)。我将在一会儿讨论这个值

lpAddress要分配区域的起始地址(=你想要分配内存的新位置)。记住这个地址会在最近倍数的内存粒度传开。你可以试着为这个参数提供一个硬编码值dwSize区域的大小。(你将可能需要用rop来产生这个值,除非你的exploit能处理null字节)

flAllocationType设成0x1000(MEM_COMMIT)。可能需要rop在栈上产生&写这个值flProtect设成0x40(EXECUTE_READWRITE)。可能需要rop在栈上产生&写这个值

在XP SP3,这个函数在0x7C809AF1处(kernel32.dll)

当VirtualAlloc()调用成功,分配的内存地址会被保存在eax中。

注意:这个函数只分配新的内存。你要用另一个API调用来复制shellcode到新的区域并执行它。因此,你需要另一个rop链来完成这个。(在上面的表格中,我提到返回地址参数需要指向第二个rop链。因此,VirtualAlloc()的返回地址需要指向将shellcode复制到新分配区域并跳转到那里的rop链)

为了完成这个,你能用

●memcpy()(ntdll.dll)-在XP SP3上0x7C901DB3

●WriteProcessMemory()(看后面)

举个例子,如果你要用memcpy(),然后你可以同时hook VirtualAllocate()和memcpy()调用并且使它们直接互相执行,用下面的设置:

首先,VirtualAlloc()函数的指针必须在栈顶,之后在栈上跟着参数的值:

●memcpy的指针(VirtualAlloc()的返回地址地段)。当VirtualAlloc停止后,它会返回这个地址

●lpAddress:任意的地址(分配新内存的地址,比如0x0020000)

●大小(新分配的内存的大小)

●flAllocationType(0x1000:MEM_COMMIT)

●flProtect(0x40:PAGE_EXECUTE_READWRITE)

●任意地址(和lpAddress一样的地址,这个参数将会用在memcpy()返回后跳转到shellcode)。这个字段是memcpy()函数的第一个参数

●任意地址(一样,和lpAddress一样的地址。这个参数用来作为memcpy()的目的地址)。这个字段是memcpy()函数的第二个参数

●shellcode的地址(=memcpy()的源参数)。这个是memcpy()的第三个参数

●大小:memcpy()的大小参数。这是memcpy()的最后一个参数

很明显,关键是找到一个可靠的地址(分配内存的地址)和在栈上用rop产生所有的参数。当这个链结束后,你将会以执行被拷贝到最近分配的内存中的代码而告终。

HeapCreate()

https://www.360docs.net/doc/f914517467.html,/en-us/library/aa366599(VS.85).aspx

这个函数将会创建一个能在我们的exploit中用的私有堆。空间将会被保留在进程的虚拟地址空间。

当flOptions参数被设置成0x00040000(HEAP_CREATE_ENABLE_EXECUTE),然后所有从

这个堆里分配的内存块将会允许执行代码,尽管DEP已经开启。

dwInitialSize参数必须包含一个指示堆大小的值,用字节表示。如果你设置这个参数为0,然后将会分配一个页。

dwMaximumSize参数指堆的最大大小,用字节表示。

这个函数只能创建一个私有堆并将它标记为可执行。你依然要在这个堆里分配内存(如用HeapAlloc)然后将shellcode拷贝到那个堆位置(如用memcpy())。

当CreateHeap函数返回时,一个指向最新创建的堆指针会存在eax中。你需要这个值来调用HeapAlloc():

https://www.360docs.net/doc/f914517467.html,/en-us/library/aa366597(v=VS.85).aspx

当新的堆分配完之后,你可以用memcpy()来将shellcode拷贝到已分配的堆中并且执行。在XP SP3中,HeapCreate在0x7C812C56处。HeapAlloc()在7C8090F6。二者都是kernel32.dll 的一部分。

SetProcessDEPPolicy()

适用在:Windows XP SP3,Vista SP1和Windows2008。

为了能使这个函数有效,当前的DEP策略必须设成OptIn或者OptOut。如果策略被设成AlwaysOn(或者AlwaysOff),然后SetProcessDEPPolicy将会抛出一个错误。如果一个模块是以/NXCOMPAT链接的,这个技术也将不会成功。最后,同等重要的是,它这能被进程调用一次。因此如果这个函数已经被当前进程调用(如IE8,当程序开始时已经调用它),它将不成功。

Bernardo Damele写了一篇出色的关于这个话题的博文:

https://www.360docs.net/doc/f914517467.html,/2009/12/dep-bypass-with-setprocessdeppolicy.html

这个函数需要一个参数,并且这个参数必须设置为0来停用当前进程的DEP。

为了在ROP链中用这个函数,你需要在栈上这样设置:

●指向SetProcessDEPPolicy的指针

●指向shellcode的指针

●0

指向shellcode的指针会确认当SetProcessDEPPolicy()执行完ROP链会跳到shellcode。在XP SP3下SetProcessDEPPolicy的地址是7C8622A4(kernel32.dll)

NtSetInformationProcess()

适用于:Windows XP,Vista SP0,Windows2003

Skape和skywing的技术文档:https://www.360docs.net/doc/f914517467.html,/index.cgi?v=2&a=4

用这个函数需要在栈上有5个参数:

返回值要产生的值,指示了函数需要返回的地方(=shellcode在的地方)NtCurrentProcess()静态值,设成0xFFFFFFFF

ProcessExecuteFlags静态值,设成0x22

&ExecuteFlags指向0x2(值可以是静态的,也可能是动态的)。这个地址必须指向

包含0x00000002的内存位置

sizeOf(ExecuteFlags)静态值,设成0x4

如果永久DEP标志已经标记,那么NtSetInformationProcess将会失败。在Vista(然后更后面的),这个标志会对所有的以/NXCOMPAT链接选项链接的可执行文件自动设置。如果DEP 策略模式设成AlwaysOn,这个技术也会失败。

或者,你也可以用ntdll中的现有例程(基本上,会做一样的事,并且会为你自动将参数设置)。

在XP SP3,NtSetInformationProcess()在7C90DC9E(ntdll.dll)

正如早些时候提到的,我已经在教程6中解释了一种用这种技术的可行方法,但是我会在今天的教程中用另一种方法用这个函数。

VirtualProtect()

https://www.360docs.net/doc/f914517467.html,/en-us/library/aa366898(VS.85).aspx

VirtualProtect函数改变调用进程的内存保护访问级别。

如果你想用这个函数,你将要在栈上放5个参数:

返回值指向VirtualProtect()需要返回的地方。这个将会是你的shellcode在栈上的地址(动态创建的值)

lpAddress指向需要改变访问保护属性的页区域的基地址。基本上,这会是shellcode 在栈上的基地址(动态创建的值)

dwsize字节数(动态创建的值,使整个shellcode执行。如果shellcode由于某些原因要扩展(比如解码),那么这些额外的字节必须考虑进来。flNewProtect指定新的保护选项:0x00000040:PAGE_EXECUTE_READWRITE。如果你的shellcode不会修改自身(如解码器),那么只要0x00000020

(PAGE_EXECUTE_READ)也能成功

lpflOldProtect获得先前访问保护值的指针变量

注意:VirtualProctect()能用的内存保护常数可以在这里找到

https://www.360docs.net/doc/f914517467.html,/en-us/library/aa366786(v=VS.85).aspx

在XP SP3,VirtualProtect()在0x7C801AD4(kernel32.dll)

WriteProcessMemory()

https://www.360docs.net/doc/f914517467.html,/en-us/library/ms681674(VS.85).aspx

Spencer Pratt的技术文档:

https://www.360docs.net/doc/f914517467.html,/papers/general/Windows-DEP-WPM.txt

这个函数会允许你复制你的shellcode到另一个(可执行)你能跳到的&可执行的位置。在复制过程中,WPM()会确认目的位置是标记为可写的。你只需要确认目的位置是可执行的。返回地址在它完成后WriteProcessMemory()要返回到的地址

hProcess当前进程的句柄。-1指向当前进程(静态值0xFFFFFFFF)lpBaseAddresss指向你的shellcode需要写入的位置。“返回地址”和

“lpBaseAddress”一样。

lpBuffer你的shellcode的基地址(动态产生,栈上的地址)

nSize你需要拷贝到目的位置的字节数目

lpNumberOfBytesWritten可写位置,字节数将会被写入的位置

在XP SP3,WriteProcessMemory()在0x7C802213(kernel32.dll)

WriteProcessMemory()(缩写成WPM()从这里开始)的一个很好的东西是你能用2中来绕过DEP。

*WPM技术1:完整的WPM()调用

你可以将你的shellcode复制/写到一个可执行位置然后跳到那里。这个技术需要所有的WPM()参数都要正确设置。一个可能的在XP SP3中的例子是给oleaut32.dll打补丁(被很多应用程序加载)。Oleaut32.dll很可能不会在你的shellcode中要到,因此搞坏它是可以接受的。如果oleaut32.dll是R E,这.text节从0x77121000并且是7F0000字节长。

这种方法有个问题。由于你要写入一个R+E区域,shellcode不能修改自己。(WriteProcessMemory调用会暂时将位置标记为可读,但是又去掉这个级别)这意味着,如果你用编码的shellcode(或者会修改自身的shellcode),将不会成功。由于坏字节这也是一个问题等等。

当然,你可以试着预先考虑在真正的shellcode里面包含一些小的shellcode来使自己的位置标记为可读,比如这些小的shellcode会用VirtualProtect()。你可以在“Egghunter”那节中找到怎么做的例子。

我们需要2个地址:一个用来作为返回地址/目的地址,一个会被用作可写位置(要写入字节数目写入的地方)。因此一个很好的例子是这样的:

返回地址0x77121010

hProcess0xFFFFFFFF

lpBaseAddress0x77121010

lpBuffer要产生的

nSize要产生的

lpNumberOfBytesWritten0x77121004

(lpNumberOfBytesWritten在目的位置之前,来避免它会在shellcode复制到目的位置后破坏shellcode)

如果你想用有解码器的shellcode,你要预先考虑在你的shellcode里调用VirtualProtect,在运行编码后的shellcode之前,来使当前的区域标记为可写/可执行的(取决于你是否写入一个RE或者RW区域)...

*WPM技术2:给WPM自身打补丁

或者,你也可以给WPM自身打补丁。因此你要将shellcode写入kernel32.dll,覆盖掉WPM 函数的一部分。这可以用编码后的shellcode来解决这个问题(但是它会有一个大小限制,你会在一会儿看到)

在XP SP3下,WPM函数在0x7C802213

在WPM函数里面,一系列的调用和跳转被用来将栈上的数据(shellcode)复制到目的位置:●0x7C802222:调用ntdll.ZwProtectVirtualMemory():这个函数调用会确认使目标位置变成可读的

●0x7C802271:调用ntdll.ZwWriteVirtualMemory()

●0x7C80228B:调用ntdll.ZwFlushInstructionCache()

●0x7C8022C9:调用ntdll.ZwWriteVirtualMemory()

在最后一个函数调用之后,数据将会被拷贝到目的位置。

然后,当自身拷贝完,函数将会写入要写的字节数并且返回被指定为一个参数的地址。最后的例程从7C8022CF开始(就在最后一个调用WriteVirtualMemory()后)

因此我们的第二选择是将shellcode写入代码的顶部,会写入字节数并返回给调用者。我们不必等代码写完这些字节并返回,因为我们要做的是让shellcode执行。

同时(你可以在下面的反汇编中看到),当WPM函数完成复制进程,它返回到0x7C8022CF。因此那可以是一个用做目的地址的好位置,因为它在程序的自然流中并且会自动执行。

这会有一些后果:

参数:第一个(返回地址)和最后一个参数(指向lpNumberofBytesWritten的可读地址)是不重要的。比如你可以将返回地址设成0xFFFFFFFF。虽然Spencer Pratt在这篇文章里https://www.360docs.net/doc/f914517467.html,/papers/general/Windows-DEP-WPM.txt说过lpNumberOfBytesWritten可以设成任意值(如果你愿意的话设成0xDEADBEEF),似乎这个地址需要指向一个可读位置来使它有效。除了这个,目的地址(shellcode要写入的地方)指向WPM函数自身里面。在XP SP3中,这会是0x7C8022CF。

大小:热补丁WPM函数看起来很不错,如果我们写得太远的话但是会破坏kernel32.dll。Kernel32.dll对shellcode自身很重要。很可能你的shellcode将要用kernel32.dll中的函数。

如果你破坏了kernel32.dll的结构,你的shellcode可能不在运行。因此这个技术在你的shellcode大小是有限的情况下会成功。

栈布局例子/函数参数:

返回地址0xFFFFFFFF

hProcess0xFFFFFFFF

lpBaseAddress0x7C8022CF

lpBuffer要产生的

nSize要产生的

lpNumberOfBytesWritten用一个(任意的)可写位置,可以是静态的

ROP Exploit的可移植性

当你开始打造ROP exploit时,你很可能在你的exploit里以硬编码函数指针结束。然而,有很多方法可以避免这么,如果你不得不硬编码指针,你应该知道你的exploit不会在Windows 操作系统的其他版本中利用成功。

因此,如果你已经硬编码了指向windows函数的指针,那么也可以从OS dll中用小配件。只要我们不需要处理ASLR,一切都是行的。

试着打造一个通用的exploit是不错的,但是说实话-如果你没从OS dll中硬编码任何东西,你需要避免OS dll的东西。

不管怎样,查实你要用来绕过DEP的函数(如果程序用了),看你能不能用一个程序/模块指针调用那个函数。这样的话,你依然可以使exploit通用,不用产生函数地址,不用从OS dll中硬编码地址。

一种可行的方式是你在IDA里看是否能够用一个在程序里面的或者被程序加载的dll

API调用,然后看导入表

例子:在XP SP3中的msvcr71.dll

●7C37A08C:HeapCreate()

●7C37A07C:HeapAlloc()

●7C37A094:VirtualAlloc()

●7C37A140:VirtualProtect()

注意:检验“!pvefindaddr ropcall”,在pvefindaddr v1.34版本

http://redmine.corelan.be:8800/projects/pvefindaddr和更高的版本中

从EIP到ROP

为了使事情明白点,我们还是从基础开始吧。

不管DEP启用与否,溢出一个缓冲区的最初过程和最终获得EIP的控制权是一样的。因此你直接覆盖EIP,或者你可以尝试覆盖SEH记录然后触发一个访问违例,因此覆盖的SE处理函数地址会被调用。(还有其他的方法来获得EIP的控制权,但是这超出了文章的范围)

到目前为止,DEP跟这个一点也关系。

Direct Ret

在一个典型的direct RET exploit中,你可以用一个任意值直接覆盖掉EIP(或者,更精确点,当函数结尾--用一个覆盖掉的保存EIP--被触发时,EIP被覆盖掉。当这个发生时,你很可能看到你控制了ESP指向的位置的内存数据。因此如果不是DEP,你可以用你最喜欢的工具(!pvefindaddr j esp)来定位一个指针到“jump esp”然后跳到你的shellcode中。游戏结束。

当DEP被启用时,我们不能那样做。不是跳到ESP(用一个会跳到esp的指针覆盖掉EIP),我们不得不调用第一个ROP小配件(也可以直接在EIP中或者使EIP跳到ESP)。那个小配件必须按特定的方式设置,因此它们会形成一条链然后一个小配件返回到另一个小配件中,没有直接在栈中执行代码。

怎样才能打造一个ROP exploit将会在后面讨论。

基于SEH

在一个基于SEH的exploit中,东西是不一样的。你只能在被覆盖的SE处理函数被调用时才能控制EIP的值(如触发一个访问违例)。早在一个典型的基于SEH exploit中,你将会用一个指向pop/pop/ret指针覆盖到SEH,这会使你到达下一个SEH,然后在那个位置执行指令。

当DEP启用时,我们不能这么做。我们能很好地调用p/p/r,但是当它到达时,你将会在栈上执行代码。然而我们不能在栈上执行代码,记得?我们不得不打造一个ROP链,用这条链绕过/停用执行保护系统。这条链会放在栈上(作为你的exploit payload的一部分)

所以在一个基于SEH的exploit例子中,我们不得不找一种方法来返回到我们的栈中而不是调用一个pop pop ret串。

最简单的方法是执行一个所谓的“以栈为轴”的操作。不是用pop pop ret,我们将试着返回到我们的缓冲区在的栈上的位置。我们可以通过下面的指令中的一个来达到目的:

●add esp,offset+ret

●mov esp,寄存器+ret

●xchg寄存器,esp+ret

●call寄存器(如果寄存器指向你能控制的数据)

一样,怎样用这个创建我们的ROP链会在下面讨论。

在我们开始之前

在Dino Dai Zovi https://www.360docs.net/doc/f914517467.html,/2010/04/practical-rop.pdf 的关于ROP的令人敬畏的文章中,它已经将ROP exploit过程部件(39页)形象化得很好。当打造一个基于ROP的exploit时,你将需要:

●以栈为轴

●用你的小配件来设置栈/寄存器(ROP payload)

●投掷你的常规的shellcode

●使shellcode执行

我们将会在下一章介绍所有的阶段。

Direct Ret--ROP版本--VirtualProtect()

到滚动ROP的时候了

让我们来打造我们的第一个ROP exploit。

我们将会用Windows XP SP3Professional,English,DEP是OptOut模式。

在这个例子中,我将会试着为Easy RM to MP3

Conventor https://www.360docs.net/doc/f914517467.html,/download.html打造一个基于ROP的exploit,在教程

1http://www.corelan.be:8800/index.php/2009/07/19/exploit-writing-tutorial-part-1-stack-based-ov erflows/中用到的有弱点的应用程序。

注意:在你的系统上,偏移量和地址可能不一样。不要盲目地从这个教程中复制一切,但是自己试一下然后需要时调整下地址。

Easy RM to MP3Conventor在打开一个包含极度长的字符串的m3u文件时会有缓冲区溢出的弱点。用一个循环的方式,我们发现在26094字节后EIP被覆盖。同时,这是在我的系统上的偏移量。如果偏移量是不一样的,然后适当地改变脚本。这个偏移量是基于m3u文件在你的系统上的位置,由于应用程序会预先用文件的全路径来计划缓冲区。你可以用20000个A+7000字符来计算偏移量。

无论如何,exploit脚本(perl)的骨架看起来是这样的:

如果我们的偏移量是正确的话,EIP会被BBBB(42424242)覆盖...

...并且ESP指向一个包含我们的一连串C的地址。到目前为止,这是一个典型的direct Ret 覆盖exploit。

它不适用于DEP,我们需要在ESP处放我们的shellcode(而不是一连串C)然后用跳转到esp的指针覆盖掉EIP。但是我们不能那样做因为由于DEP我们的shellcode不能执行。

因此我们将会用VirtualProctect()(kernel32.dll)函数来创建一个ROP链来改变内存页(shellcode在的位置)的访问保护级别,因此它会被执行。

为了使这个成功,我们需要传递一些参数给这个函数。在函数被调用时,这些参数需要放在

栈顶。

有一些方法可以做这个。我们可以将需要的值放在寄存器中然后用pushad操作(一次将所有东西入栈)。另一种技术是将其中的一些参数(静态的/没有null字节的)放在栈上,并且用一些ROP小配件来计算其他的一些参数,将它们写入栈(用一些sniper技术)。

我们不能在m3u文件中用null字节,因为Easy RM to MP3Converter会将文件中的数据当做字符串,然后字符串会被第一个null字节阻断。我们也要记住我们很可能以一些限制性字符集结束(我们可以简单地创建编码的shellcode来克服这个问题)

闲话说的很多了,现在让我们开始吧。

怎样打造链(链接基础)

为了绕过DEP,我们需要打造一连串现有指令。能够在所有的模块中找到的指令(只要它们可执行,有一个静态地址并且不包含null字节的就行)

基本上,由于你需要将数据放到栈上(将会绕过DEP的函数参数),你将会找一些能够允许你修改寄存器的指令,将数据入栈和出栈等等。

这些指令中的每一个--由于某种原因--需要跳到你要执行的下一条指令(或者指令集)。最简单的方法是确保这指令跟着一条RET指令。这个RET指令会从栈上拾取下一个地址然后跳过去。(毕竟,我们从栈上开始我们的链,因此RET将会返回到栈上然后带走下一个地址)。因此基本上在我们的链中,我们将会从栈上拾取地址然后跳过去。这些地址的指令能够从栈上拾取数据(因此当然这些字节不得不放在正确的地方)。这些的结合会形成我们的rop链。

每个“指令+RET”被叫做一个“ROP小配件”。

这意味着,在指针之间(指向指令),你可以通过这些指令中的一个来放你能拾取到的数据。同时,你需要评估下这些指令能干什么并且栈上两个指针怎样影响你需要的空间。如果一个指令执行ADD ESP,8,然后这将会移动栈指针,并且会影响下一个指针应该放在哪里。因此小配件末尾的RET需要返回到下一条指令的指针。

我猜很明白你的ROP例程会很可能消费栈上的一定数量的字节。因此我们的例程的可利用缓冲区空间会很重要。

如果所有听起来很复杂,那么不要担心。我会用一个小例子来使事情明白点:

比如说,作为ROP例程的一部分,我们需要从栈上取出一个值,放在EAX中,并且加上

0x80。换句话说:

●我们需要找到一个指向POP EAX+RET的指针然后放到栈上(小配件1)

●放入EAX中的值必须放在指针的下面

●我们需要找到另一个指针(指向ADD EAX,80+RET)并且将它放在从栈上弹出的值的下面(小配件2)

●我们需要跳到第一个小配件(指向POP EAX+RET)来开始这个链

我们将在一会儿讨论找rop指针。现在,我将给你这些指针:

10026D56:POP EAX+RET:小配件1

1002DC24:ADD EAX,80+POP EBX+RET:小配件2

(第二个指针会执行POP EBX。这不会破坏我们的链,但是会影响ESP和你需要用作下一个rop小配件的填料,因此我们不得不插入一些“填料”来弥补这个)

因此,如果我们要一个接一个执行这两个指令,然后用我们期待的在EAX中的值来结束,那么栈设置是这样的:

栈地址栈值

ESP指向这里->0010F73010026D56(指向POP EAX+RET)

0010F73450505050(将被弹入EAX)

0010F7381002DC24(指向ADD EAX,80+POP EBX+RET)

0010F73C DEADBEEF(将被弹入EBX,填料)

因此,首先,我们将需要确认0x10026D56被执行。我们在我们的exploit的开始处,因此我们不得不使EIP指向一个RET指令。在一个已经加载的模块中找到一个指向RET的指针然后将那地址放入EIP中。我们用0x100102DC。

当EIP被一个指向RET的指针覆盖,它明显会跳到那个RET指令。RET指令会返回到栈中,在ESP(0x10026D56)取出值然后跳到那里。这将指向POP EAX并且将50505050放入EAX 中。POP EAX(在0x10026D57)后的RET会跳到ESP处的地址。这会在0x1002DC24(因为50505050被弹到eax中)。0x1002DC24是指向ADD EAX,80+POP EBX+RET的指针,因此下一个小配件会在50505050加上0x80。

我们的例子exploit将会是这样的:

将调试器附加到这个程序中,然后在0x100102DC设置一个断点。运行程序然后倒入m3u文件。断点将会被碰上:

三阶魔方公式图解、教程

三阶魔方公式、魔方图解、魔方教程,从零基础到精通! 魔方还原法Rubic's Cube Solution ————先看理论“ 魔方的还原方法很多 在这里向大家介绍一种比较简单的魔方六面还原方法。这种方法熟练之后可以在大约30秒之内将魔方的六面还原。 在介绍还原法之前,首先说明一下魔方移动的记法。魔方状态图中标有字母“F”的为前面,图后所记载的操作都以这个前面为基准。各个面用以下字母表示: F:前面 U:上面 D:下面 L:左面 R:右面 H:水平方向的中间层 V:垂直方向的中间层 魔方操作步骤中,单独写一个字母表示将该面顺时针旋转90度,字母后加一个减号表示将该面逆时针旋转90度,字母后加一个数字2表示将该面旋转180度。H的情况下,由上向下看来决定顺逆时针方向;V的情况下,由右向左看来决定顺逆时针方向。例如 U:将上层顺时针旋转90度 L-:将左面逆时针旋转90度 H2:将水平中间层旋转180度 目录 上层四角还原 下层四角还原 上下层八角还原 上下层边块还原 中层边块还原 上层四角还原 首先我们用最简单的几步使得上层的三个角块归位,暂不必考虑四周的色向位置)。还有一个角块存在五种情况,归位方法如下。 L D L- F- D- F D L2 D- L2 F L D- L- L- F- D F

下层四角还原 上层四角归位后,将上层放在下面位置上,作为下层。然后看上层和四周的颜色和图案排列,按照以下的操作使上层四个角块一次归位。共存在七种情况。 R2 U2 R- U2 R2 R- U- F- U F U- F- U F R R U R- U R U2 R- L- U- L U- L- U2 L R- U- F- U F R R U R- U- F- U- F R U- R- U- F- U F 上下层八角还原 要是上层和下层八个角块色向位置全部相同,存在下面五种情况: 当上下二层八个角块色向位置都不对时:按照(1)旋转。 当下层四个角块色向位置不对,上层相邻两个角块色相位置对时:将上层色向位置相同的两个角块放在后面位置上,按照(2)旋转。 当下层四个角块色向位置对,上层相邻两个角块色相位置也对时:将上层色向位置相同的两个角块放在前面位置上,按照(2)旋转后即变成第一种情况。 当下层四个角块色向位置对,上层四个角块色向位置不对时:按照(2)旋转后即变成第二种情况。 当下层相邻两个角块色向位置对,上层相邻两个角块色向位置也对时:将下层色向位置相同的两个角块放在右面位置上,上层色相位置相同的两个角块放在前面位置上,按照(2)旋转之后即变成第二种情况。 (1) R2 F2 R2 (2) R- D F- D2 F D- R 上下层边块还原 按照下图所示操作方法将上下层的边块归位。在上层边块归位时,要注意四周的色向位置。留下一个边块不必马上归位,留作下层边块归位时调整使用。 上层三个边块归位之后,将该层放在下面位置上作为下层,然后将上层的四个边块归位。操作时,为了不破坏下层已经归位的边块,必须将下层留下的一个未归位的边块垂直对着上层要归位的边块的位置。 R- H- R R H R- F H- F- V- D2 V F H- F2 H2 F

酷比魔方MTK方案升级说明

温馨提示:升级有风险,升级需谨慎,以免因升级失败造成机器无法使用,带来不便。 在进行机器升级前,请您先备份机器内的资料,如因机器升级导致的文件丢失,本公司不承担由此导致的损失,请您知悉。然后请严格按下述升级步骤进行操作。感谢您对我们的支持!【请注意!】如果之前已经升级过其它品牌芯片平板电脑,则必须将USB驱 动更新U55GT专用的升级驱动”否则严重者将导致刷机失败,平板无法正常使用。 第一步:下载固件包: 1.到酷比魔方官网:https://www.360docs.net/doc/f914517467.html,/ch/DownList.asp?SortID=7下载所需机型的固件压缩包。 第二步:解压缩固件包: 1,将下载的固件压缩包解压缩后得到:升级工具及固件、升级驱动、酷比魔方U55GT升级说明,如电脑未安装解压缩软件(如:windows XP SP3版本或以上)。 2,请先下载安装解压缩软件。解压缩后得到的文件如右图所示: 第三步:安装升级工具及升级: 1.双击,出现如下图:

2.打开出现如图示 点击落3.点击按路径去选择”固件”,如下图

4.选好固件,点击”初始化,进度条需要到100%才算成功。(注,不能点Fomat,否则机器将会无法通话,需返厂维修)如下图所示: 5.将U55GT机器保持关机状态,用随机的数据线将机器与电脑的USB端口连接。

1.注:如果是初次升级MTK方案驱动,电脑会提示驱动安装(每个端口初次升级都会提示安装),选驱动文件夹里的2K_XP_COM文件,安装完驱动重新做升级动作即可升级。另:电脑系统配置,必须是windows XP SP3版本或以上。 2、全新安装驱动过程: 3.点击下一步,按路径找到驱动程序,如下图:

魔方教程一步一步图解

三阶魔方玩法攻略 入门 魔方,又称魔术方块,是匈牙利建筑学教授和雕塑家厄尔诺·鲁比克(Emo Rubik)于1974年发明的机械益智玩具,鲁比克是魔方界的教父,因此魔方的英文名便称为Rubik ’s Cube。厄尔诺·鲁比克出生于1944年7月13日,是匈牙利布达佩斯建筑学院的教授,在教学中,自己动手做出了第一个魔方的雏形来帮助学生们认识空间立方体的组成和结构。在他完成第一个作品以后,转动了几下,发现很难还原至原来的样子,于是他意识到这个新的发明会很不简单。不久以后鲁比克为自己的发明申请了专利,让鲁比克没有想到的是,这个边长不到6厘米的玩具意然很快风靡全球。我们常见的魔方是3×3×3的三阶魔方,是一个正6面体,有6种颜色,由26块组成,其中有8个角块,12个棱块,6个中心块(和中心轴支架相连接),别看只有26个小方块,变化可真是不少,魔方总 的变化数为: 约等于4.3×1019。如果你一秒可以转3下魔方,不计重复,你也需要转4542亿年,才可以转出魔 方所有的变化。由此可见,这么多变化使魔方每次玩起来都有一种新鲜感,这种不变中又有万变是 魔方的最大魅力。 我们对魔方有了一个基本的了解,下面我们开始讲解常见的三阶魔方怎样一步一步的来复原,相信 你抽出几个小时的时间,专心的按照本教程的步骤,一步步的学习,2-3个小时就能学会复原你手 中的魔方了,好,现在开始我们的魔方复原之旅吧! 1、魔方的基本概念 为了便于描述魔方复原过程,我们需要熟悉魔方的一些基本概念——面、层、角块、棱块、中心块, 面位、到位、归位。 一面复原:是指一个平面的3×3块的同一面的颜色同色。 一层复原:是指一个平面的3×3块所处的3×3×1块,不仅同一面的颜色同色,3×1块的侧面颜 色也同色。 如下图所示,请仔细比较一面和一层的区别。 从外观来看,中心块有一个面,棱块有两个面,角块有三个面,如下图所示。 面位:只有一面颜色与中心块颜色相同,其他面颜色和中心块不相同。

酷比魔方刷固件操作说明

升级操作说明 1.解压下载的固件包,找到升级工具“RKBatchTool.exe”并打开,点击固件信息右边的 图标,选择固件包里的update.img文件,界面如下图所示: 2.MID保持在关机状态下,长按功能键(menu键)不放再通过USB数据线把播放器连上电脑。 3.如下图所示,当升级工具的连接设备区显示为绿色时,请松开功能键并点击“升级”按钮开始升级;如果长按功能键不放并连接电脑,提示发现一个新的设备,要求安装驱动程序时,请把路径指向固件包里的“RK29驱动”文件夹并根据提示正确安装驱动程序,驱动安装成功以后,连接设备区就会变成绿色,这时就可以点击“修复”按钮了。

4.根据升级工具上的显示信息直到完成升级。如下图所示: 升级工具上显示升级成功以后,进入本机更新阶段,更新完成即可正常进入主界面。 注: 1.升级前务必备份好机器内的重要数据,升级过程中会丢失数据,升级完成以后,原有的 数据将无法恢复。 2.升级过程中,请不要断开USB 连接,直到升级完成并出现主界面。 3.升级过程中不能按复位键,不能有升级要求以外的操作,以免因操作按键导致升级失败。量产升级工具使用说明 1. 使用步骤 l 插上待升级设备,如果是第一次安装,需要安装驱动程序 l 启动程序,选择固件,进行升级 1.1. 安装驱动程序 升级固件前,请先关闭酷比魔方U8G T/K8G T平板电脑。然后按住机身右侧M键不放,同时将U8G T/K8G T连接到电脑的USB端口。如果之前没有安装过设备驱动,则会弹出如下提示:

选择“从列表或指定位置安装(高级)”,单击下一步。

选择驱动程序文件夹下的rockusb.sys 这样,就完成了USB设备的驱动安装。 1.2. 固件升级 1.2.1. 界面介绍

三阶魔方教程图解

魔方曾被誉为世界三大智力玩具之一,不过现在我不敢这么说了。什么?另外两个是什么?你可记住了:那是我们中国的九连环和捉放曹啊! 魔方可以拆开。废话!不过……你拆开过吗?如果没有,赶快把魔方一块一块地卸下来,嘿嘿嘿,是不是有一种打DOOM怪物的感觉?卸下来了吗?可以看到,除了骨架上的六个不同颜色的中心积木外,还有8个角上的积木和12个棱上的积木。中心积木只有一种颜色,棱上的积木有两种颜色,角上的积木有三种颜色。不管怎么说,没有两块积木是完全相同的。骨架上的中心积木是不能动的,所以中心积木与中心积木的相对位置是确定不变的,所以角上棱上的积木的正确位置也是不变的。例如一个红黄蓝色的角积木,它的正确位置就在红黄蓝中心积木对应面的角上。我们的任务就是把棱积木、角积木转到它们自己的位置上。 废话少说,快来观摩一下我的规划图吧: 图1 从现在起我们就要开始玩魔方了,现在的任务是完成魔方的一面。 首先选择你要玩的面颜色,在这里我选择兰色进行教学,因为我喜欢兰色^_^,我们将该颜色的中心积木所在的面称为基面。 图2 图3

图4 为了避免玩家转来转去找不到魔方的方向了,我们统一规定,魔方摆放如图2所示,另外在图3中我们要将外面的兰色块转入基面的黑色块位置时,却不能影响阴影积木,这也是玩魔方的难点。对于其他没着色的积木,都是些无关紧要的积木,可不去理会,把注意力集中在基面外面的操作块、操作块的目标位置和不可受到影响的积木上。(注:在操作的步骤中,阴影积木可以移动,但要保证步骤完毕后,阴影积木无变化) 对于魔方一面的完成,我们是一个一个操作块地完成的,饭也是一口一口地吃嘛!转时,一定要找准操作块的真正目标所在,要注意操作块的附加颜色,否则失败。如图4,黄蓝色块与绿蓝色块颠倒,所以兰色一面成功了也没有用。 下面是一些最基本的将操作块转入基面的功夫,可要认真揣摩呀! 图5 图6 简要说明:图中阴影块是目标位置,注意哟,我可没有标记不可受影响的积木哟。另外,要注意操作块相对于目标位置的区别,不同的位置用不同的方法。如图6所示,基面外兰色标记的块,都可以通过转动使其到达A位置或者B位置,然后再用1方法完成到达目的位置的任务。 图7

魔方七步教程 图文版

魔方七步教程 首先,破解魔方,或者说还原魔方的6个面,我们就要先了解它的结构,魔方共6色6面,每面又分为中央块(最中间的块6个)、角块(4角的块8个)和边块(4条边中间的块12个)。其中中央块只有1个面,他们是固定的结构,所以中央是红色的块,那么其他的红色都要向这个面集中。而且红色的中央块对面永远是橙色中央块(国际标准是这么规定的)。而边块有2个面2个颜色,角块则有3个面3个颜色。 接下来我们将每个面都用字母代表,

然后破解魔方功略里会用字母来说明要转动的1层或1面,以及方向:例如:R(代表右面顺时针转90度),R`(代表右面逆时针转90度),R2(代表右面顺时针转2次90度) 下面是图示: 最后要说明的是:每面的名称是相对的,例如F是前面,就是手拿魔方时面向自己的一面,若把模仿旋转到另一面,那么就有新的一面成为前面。 好了 下面就让我们尝试下7步将魔方还原吧!

1.先将中间是白色块的一面(有个rubiks logo的那块)对着上面,然后在顶部做出白十字,就是其他颜色的块都到相应的位置(小复杂,见图示,注意上面标的口诀哦,照做无误) 2.然后是将白色的角块归位(秘籍说的很复杂,还是看图比较容易理解啦)

3.然后让中层边块归位。 把白色面转向下,找出红绿边块,若红绿边块在顶层则按顺时针方向转动顶层,直到边块与图上的1个情况相同,在按照口诀转动魔方,使边块归位。若红绿边块在中间某层,但位置错误或颜色错误,则先使红绿边块在右前方的位置,再重新按照下面其中一个次序旋转1次。

4.然后将顶层(应该是黄色)边块调整向上,做出黄十字。若按照口诀转动1次后,顶层仍未出现黄色十字,可重复按口诀转动,直到黄色十字出现为止。 5.然后将魔方黄色角块调整到十字周围,有点难度,看口诀提示吧。

三阶魔方新手入门教程

(图5) (图6)

(图7) (图8)步骤一、完成一层

首先要做的是区分一层和一面:很多初学者对于“一面”与“一层”缺乏清楚的认识,所以在这里特别解释一下。所谓一层,就是在完成一面(如图2的白色面)的基础上,白色面的四条边,每条边的侧面只有一种颜色,图(2). 如图(1)中心块是蓝色,则它所在面的角和棱全都是蓝色,是图(2)的反方向 图(3)和(4)则是仅仅是一面的状态,而不是一层! (1)(2) (3)(4) 注:图(2)和(4)分别是图(1)和(3)的底面状态 想完成魔方,基础是最重要的,就像建筑一样,魔方也如此,基础是最重要的。 由于上文提到过中心块的固定性,这一性质,在魔方上实质起着定位的作用,简单的说就是中心块的颜色就代表它所在的面的颜色。 一、十字(就是快速法中的CROSS) 第一种情况如图所示: (橙色下面颜色为白色,为方便观察,特意翻出颜色) 公式为R2

第二种情况如图所示: (白色下面颜色为橙色,为方便观察,特意翻出颜色) 橙白块要移到上右的位置,现在橙白块在目标位置的下面。但其橙色片没有和橙色的中心块贴在 一起。为此我们先做D’F’即把橙色粘在一起,接着 R 还原到顶层,,F 是把蓝白橙还原到正确的位置(上面的F’使蓝白块向左移了九十度)。公式为D F’R F 图解: 当然,架十字不只只有上面两种情况,现我们在分析下其它的一些情况吧! 如下图: 橙白块的位置己对好,但颜色反了,我就先做R2化成第二种情况,然后用还原第二种情况的公式即可!

上面两种情况都为前右的块要移到上后的位置。我们先做R’D’移到前下的位置, 再做R “把橙白还原上去”,接着做D2 移到后下的位置。上面两种情况分别化为上面第一 种和第二种情况。其对称情况亦是按类似上面的思想来还原!如果刚开始时橙白块也还没对好,直接做R’ D 移到后下位置即可! 二、第一层角 依然把十字放在顶层,还原角块时,我们首先在底层找有没有我们要还原的角,没有的话再到顶层去找!基本的两种情况为: 公式:D R’D’R公式:D’FDF’ 图解: 公式:D R’D’R 公式:D’FDF’

七步还原任何魔方及新手教程

七步还原任何魔方方法 首先,破解魔方,我们就要先了解它的结构,魔方共6色6面,每面又分为中央块(最中间的块6个)、角块(4角的块8个)和边块(4条边中间的块12个)。其中中央块只有1个面,他们是固定的结构,所以中央是红色的块,那么其他的红色都要向这个面集中。而且红色的中央块对面永远是橙色中央块(国际标准是这么规定的)。而边块有2个面2个颜色,角块则有3个面3个颜色。 接下来我们将每个面都用字母代表: 然后破解功略里会用字母来说明要转动的1层或1面,以及方向:例如:R(代表右面顺时针转90度),R`(代表右面逆时针转90度),R2(代表右面顺时针转2次90度) 下面是图示:

最后要说明的是:每面的名称是相对的,例如F是前面,就是手拿魔方时面向自己的一面,若把模仿旋转到另一面,那么就有新的一面成为前面。 好了 下面就让我们尝试下7步将魔方还原吧! 1.先将中间是白色块的一面(有个rubiks logo的那块)对着上面,然后在顶部做出白十字,就是其他颜色的块都到相应的位置(小复杂,见图示,注意上面标的口诀哦,照做无误) 2、然后是将白色的角块归位(秘籍说的很复杂,还是看图比较容易理解啦

2.然后让中层边块归位。 把白色面转向下,找出红绿边块,若红绿边块在顶层则按顺时针方向转动顶层,直到边块与图上的1个情况相同,在按照口诀转动魔方,使边块归位。若红绿边块在中间某层,但位置错误或颜色错误,则先使红绿边块在右前方的位置,再重新按照下面其中一个次序旋 转1次。

3.然后将顶层(应该是黄色)边块调整向上,做出黄十字。若按照口诀转动1次后,顶层仍未出现黄色十字,可重复按口诀转动,直到黄色十字出现为止。 5.然后将黄色角块调整到十字周围,有点难度,看口诀提示吧。

(完整word版)三阶魔方公式口诀图解[新手快速入门]

三阶魔方玩法与口诀 目录 一、前言_________________________________________________________ - 2 - 二、认识公式_____________________________________________________ - 2 - 三、拧魔方的步骤与口诀___________________________________________ - 4 -步骤一、完成一层_____________________________________________ - 4 -(一)完成第一层十字_______________________________________ - 4 -(二)完成第一层角块_______________________________________ - 5 -步骤二、完成第二层___________________________________________ - 7 -步骤三、完成顶层_____________________________________________ - 8 -(一)顶层十字_____________________________________________ - 8 -(二)顶层平面____________________________________________ - 10 -(三)顶层角块____________________________________________ - 11 -(四)顶层棱块____________________________________________ - 12 -

酷比魔方I7-WN (I7手写版)WIN10系统安装教程

酷比魔方I7-WN (I7手写版)WIN10系统安装教程 注意:此安装文件仅适用于酷比魔方I7手写版序列号以I7WN开头的型号,其他I7手写板型号的机器也可以安装此系统,但是系统无法激活。 一:需要的工具及准备工作: 1.酷比魔方i7-WN WIN10系统安装文件.rar压缩包(需要用户自行登录酷比魔方官网下载) 2.键盘一个,USB-HUB集线器一个,U盘一个(容量必须8G或者8G以上) 3.机器电量保持在30%以上。 二升级步骤: 1.解压“酷比魔方i7-WN WIN10系统安装文件.rar”,得到: Bios,WIN10文件夹以及“酷比魔方I7-WN (I7手写版)WIN10系统安装教程.DOC” 2.将U盘格式化成NTFS,卷标命名成“WINPE”(U盘容量大小建议8G或者8G以上) 将WIN10文件夹目录下的所有文件拷贝到刚刚格式化的“WINPE”U盘根目录下。

注意:系统文件大概占用U盘6.3G容量。

3.将I7的USB-OTG口通过OTG线连上USB-HUB集线器,并在USB-HUB集线器的扩展口上插上USB键盘以及刚刚复制好系统安装文件的”WINPE”U盘 4.先按I7的电源键开机,然后按键盘上的F7键使I7启动进入磁盘启动界面: 5.通过键盘上的上下键选择复制好复制好系统安装文件的”WINPE”U盘,按ENTER回车键确认。 6.上述1-5个步骤操作正常,机器会自动进入PE系统进行系统安装:

在最后这个界面输入“exit”或者长按电源键重启机器即可进入I7 WIN10系统,整个安装过程到这里完成。 注意:如果上述安装过程后重启进入win10系统,进入的win10界面是如下界面: “重新启动”),平板将会自动进行清理部署,并重启进行正常的启动设置。

三阶魔方顶层复原

下图是本教程介绍的三阶魔方入门的玩法(层先法)复原的基本步骤示意图: 第一步:底棱归位(又称底部架十字,底层四个棱块正确复原的过程) 图1 魔方底层架十字可以无师自通,只是我们这一步要复原的四个棱块的相对位置顺序要注意,由于我们以白色中心 块做底层,按照我们现在的主流魔方的贴纸的帖法(上黄下白,前蓝后緑,左橙右红),如果我们先复原了白蓝 这个棱块,那我们在保持白色中心块在底部的情况下,白红的棱块就一点要放在白蓝棱块的右边,白橙棱块放在 白蓝棱块的左边,白緑棱块放在白蓝棱块的对面,由于魔方的中心块不会发生变化,所以在复原的过程中,我们 是以中心块为参照物的,第一步我们在复原白蓝、白红、白绿、白橙这四个棱块的时候,我们可以先把白色面旋 转到顶层,和黄色中心块同一个平面,然后再把他对应的另一个颜色(蓝或红或緑或橙)经过旋转最上层,使之 和对应的中心块的颜色同色,这样我们再旋转180度,对应的棱块就正确复原到底部了。 注意:图101的情况是没有正确归位的情况,需要调整白蓝和白红两个棱块的位置,才是正确的完成了底棱归位 图 101 图2 魔方的四个底角正确归位以后一定会出现倒T字型,如图2所示,如果不是这样肯定是底面角块没有正确归位(位置错了,重新来过)。 底角归位也可无师自通,有兴致的朋友可以自己琢磨一些技巧和完成这一步。有难度的朋友可参考我下面介绍的一种技巧来完成,我们先看图2-1和图2-2,首先我们先确定目标块的位置是在他要正确归位的正上面的位置,然后我们再看白色的面朝向何方,就很快的能快速判断出来是下图几种情况中的哪一种了。 复原基本思想:先将目标角块调至顶层侧面,再转动能与之相连形成顺色整体的面,使目标角与底棱连成一个(1×1×2)的归位整体,再转至正确的位置。因此,下列的五个实例并没有必要当成公式来死记。 图2-1 图2-2 图201 图202 图203

酷比魔方i10双系统版remix系统烧录工具说明

I6 android系统烧录工具升级工具 1.工具安装包目录如下: 2. 驱动安装 按如下步骤安装驱动: 1. 安装iSOC 驱动:iSocUSB-Driver-Setup-1. 2.0; 2. 安装USB 驱动:IntelAndroidDrvSetup1.5.0; 3. MFT 安装 3. 安装ManufacturingFlashTool_Setup_6.0.43.exe(MFT6.0.43.exe),将覆盖以前版本。 注意,MFT6.0.43 需要对应的iSOC 和USB 驱动,如上所述,不可使用老版本。 4将文件复制到MFT 安装目录下, 如下: 1.点右击属性,出现如下界面:

2.“选查找目标”后进入以下界面,将“CUSTOM_CONFIG.INI”文件复制到根目录下: 3.关闭文件窗口,确认退出。 5. MFT Settings 打开MFT,选择”File”->”Settings”,显示如下:

在”General properties”选项中: “SOC devices”设置为:VID: 8087,PID:0A65; “Android devices”设置为:VID: 8087,PID: 09EF;此选项根据客户改动,自行更改。“override GP flag”不要勾选; “Logger level”根据需要打印信息的多少适配选择;(此项可忽略) 6. 加载xml 点击“File”->“Open…”,找到软件包中的xml 文件点击打开。

软件包文件如图上 调用软件包后的升级工具界面,如下: 到此,MFT 配置完成,可以连接板子开始下载。 注:机器在连接电脑升级前,要同时按着POWER键和音量“+”键,进入以下模式后才可以连接电脑进行升级。

最全面的魔方还原步骤(带图解及公式)

三阶魔方玩法教程 下图是本教程介绍的三阶魔方入门的玩法(层先法)复原的基本步骤示意图: 第一步:底棱归位(又称底部架十字,底层四个棱块正确复原的过程) 注:(本教程以白色为底面,为了方便交流与学习,请统一把白色作为底面)。 魔方底层架十字可以无师自通,只是我们这一步要复原的四个 棱块的相对位置顺序要注意,由于我们以白色中心块做底层,按照 我们现在的主流魔方的贴纸的帖法(上黄下白,前蓝后緑,左橙右 红),如果我们先复原了白蓝这个棱块,那我们在保持白色中心块 在底部的情况下,白红的棱块就一点要放在白蓝棱块的右边,白橙棱块放在白蓝棱块的左边,白緑棱块放在白蓝棱块的对面,由于魔方的中心块不会发生变化,所以在原的过程中,我们是以中心块为参照物的,第一步我们在复原白蓝、白红、白绿、白橙这四个棱块的时候,我们可以先把白色面旋转到顶层,和黄色中心块同一个平面,然后再把他对应的另一个颜色(蓝或红或緑或橙)经过旋转最上层,使之和对应的中心块的颜色同色,这样我们再旋转180度,对应的棱块就正确复原到底部了。 注意:图1-1的情况是没有正确归位的情况,需要调整白蓝和白红两个棱块的位置,才是正确的完成了底棱归位。 第二步:底角归位(复原魔方第一层四个角块) 魔方的四个底角正确归位以后一定会出现倒T字型,如图2所示,如果不是这样肯定是底面角块没有正确归位(位置错了,重新来过)。 底角归位也可无师自通,有兴致的朋友可以自己琢磨一些技巧和完成这一步。有难度的朋友可参考我下面介绍的一种技巧来完成,我们先看图2-1和图2-2,首先我们先确定目标块的位置是在他要正确归位的正上面的位置,然后我们再看白色的面朝向何方,就很快的能快速判断出来是下图几种情况中的哪一种了。 复原基本思想:先将目标角块调至顶层侧面,再转动能与之相连形成顺色整体的面,使目标角与底棱连成一个(1×1×2)的归位整体,再转至正确的位置。因此,下列的五个实例并没有必要死记。 图2-1 图2-2 图201 图202 图203

标准魔方手教程(三阶)

魔方入门教程 在教程的最下面有DIY魔方的贴纸的搭配的说明 (第一步)在第一面做一个十字,形成如下的样子: 这一步可以自己试着自己琢磨去做,自己玩远比看教程有意 思的多,我在这里就先称这个十字是一个“标准十字”架好十 字后,自己再试着把顶层的一层的其它的四个角块自己补好, 补好后就算是做好了第一层,即下面的图形: 在这里我给大家解释一下在魔方的教程里:U D R L F B 字母代表的意义,一个魔方拿到手上后,如果上下看,它 的最上面的一层是Up “上”简称为U,它的最下面的一层是Down “下”简称为D。如果左右看,它的最右面的一层是Right “右”简称 为R,它的最左面的一层是Left “左”简称为L。如果前后看的 话 ,它的最前面的一层 是Front “右”简称为F,它的最后面的一层是Back “左”简称为B。

以上面的表里的标记为例,F就代表前面顺时针转90°,F'代表前面逆时针转90°,R2代表右面转180°,就这么简单,大家明白了吧。 下面有详解的图解说明:

(关于复原第一层,也可以参考下面的魔方超级入门教程)(第二步)放第二层的棱色块,形成如下的样子:

由上一步到这一步的图,大家肯定看出了这步我们要处理的是中间层红白,红黄,橙白,橙黄四个棱色块。这次,你先把魔方翻过来了,蓝面朝下,绿面朝上,再看看以上4个棱色块哪些位于顶面(绿色为中心的面),随便选择一个,我们就从它开始,这里以红白为例,通常,你会碰到两种情况, 我们要把顶面上的红白色块插入到红色箭头所示的地方, 对于第一种情况,你可以, 整个算法是URU'R' + U'F'UF,是不是很有规律?我们看,好像后一半 U'F'UF正好是前一半URU'R'的对角线镜像吧,是吧?我们看前四步 URU'R'的作用是把左图里我们要的两个小块组合起来,上表中标为红色的 第5图显示了组合好的两个色块,而后四步U'F'UF则是把我们组合好的 两个小块填近正确的位置。 所以,如果你碰见:

酷比魔方产品常见使用问题问答

酷比魔方产品常见使用问题问答 酷比魔方官网(https://www.360docs.net/doc/f914517467.html,)提供 Q:平板电脑怎么传输数据?连接电脑后没反应? A:连接电脑后,在我的电脑里面有磁盘显示的,点击平板右下角的时间,然后选择usb连接,然后点击打开usb存储,或者, 顶部菜单栏往下拉,选择usb连接,选择打开usb存储;如果没有磁盘显示那就需要刷固件解决。 如果是4.0的系统的话,需要把设置—开发人员选项—USB调试关上再重新连接。 Q:平板电脑怎么安装软件?在哪里可以找到软件下载? A:你可以通过安卓辅助电脑软件(豌豆荚、91手机助手)来下载安装软件或者自己到一些安卓论坛里面找相关的软件资源下载之后复制到机器里面,然后通过机器自带的APK安装器来装软件。软件资源可以在一些大型安卓论坛(机锋论坛、安卓论坛)或者机器自带的酷比魔方市场以及辅助电脑软件里面找到。<机器的设置---应用程序-----未知源必须勾上,不然可能不能安装软件的> Q:为什么充电的时候充到82%就不动了,等了几个小时还是不动?(自动停止运行)A:电量指示的问题可能由于安卓系统的电量检测软件检测不准确导致的,建议你重启一下机器再看看电量是否正常,如果还是不能正常显示的话可以通过刷新固件来解决。(固件刷新可以参考我们的固件升级教程。) Q:如果遇到软件总是异常关闭,频繁死机,某个功能不正常,怎么办? A:这个问题可能是因为软件跟我们机器不兼容导致的,你可以换一个版本的软件来试试,如果是系统软件出错的话建议先恢复出厂设置一下,还是不行的话重新刷一下固件。 Q:我的平板电脑怎么通过有线网线上网? A:有线上网需要另外购买一个网线转USB的转接口(RJ45转接口),然后通过连接路由器接出来的网线就可以直接上网了,如果家里用的是宽带modem的话是不能连接来上网的,我们机器没有内置拨号功能所以不能直接连接宽带设备上网。 Q:平板电脑连接网线后为什么老是会出现断线的情况?(wifi断线) A:这个情况可能是由于路由器的信号不稳定或者是机器内置的设置没有调好导致的,可以先到设置里面自己设置一下(设置---无线和网络---wifi设置---进入后按M键---选择高级---休眠策略--选择永不休眠----选好后按M键点保存) Q:平板电脑能用手写输入法吗 A:可以用手写输入法的,我们机器内置的输入法是不带手写的,你可以自行下载输入法来实现手写输入(例如:百度输入法、QQ输入法、搜狗输入法等。) Q:我是山西的,请问我该怎么返厂维修呢 A:一般您可以直接找到购买的商家为你提供保修服务,如果是网购邮寄不方便,也可以联系我们当地代理商返修代理商电话在这里查询https://www.360docs.net/doc/f914517467.html,/dealer.asp。如果当地没有代理商的话,可以直接邮寄到我们公司维修部,自行返厂的请看这里的返修说明https://www.360docs.net/doc/f914517467.html,/bbs/forum.php?mod=viewthread&tid=41965&extra=page%3D1

三阶魔方教程完美打印版

1、魔方常见公式符号说明(重要) 顺时针90度逆时针90度顺时针180度逆时针180度 前层 F(front) 后层 B(back) 右层 R(right) 上层 U(up) 2-1、第一种情况2-2、第二种情况 图2-1 图2-2 公式2-1:(R U R')记忆技巧:白色朝右,第一步就旋转右层公式2-2:(F'U'F)记忆技巧:白色朝前,第一步就旋转前层 2-3、第三种情况 图2-3 用两次公式2-1 (R U R')U' (R U R') 2-4、第四种情况 图2-4 用两次公式2-2 (F'U'F)U(F'U'F) 2-5、第五种情况 图2-5 用三次公式2-1 (R U R')(R U R')U' (R U R')= (R U U R')U' (R U R') 第三步:中棱归位(复原魔方中层四个棱块的步骤) 3-1、第一种情况 图3-1 公式3-1:(U' F' U F )(U R U' R') 3-2、第二种情况 图3-2 公式3-2 :(U R U' R')(U' F' U F) 2、魔方最流行的配色 上黄-下白 前蓝-后绿 左橙-右红 第二步:底角归位(复 原魔方第一层四个角 块) 3、魔方还原方法: 第一步:底棱归位(又 称底部架十字,底层 四个棱块正确复原的 过程) 魔方底层架十字可以无师自通,只是我们这一步要复原的四 个棱块的相对位置顺序要注意,由于我们以白色中心块做底层, 按照现在的主流魔方的贴纸的帖法(上黄下白,前蓝后緑,左橙 右红),如果我们先复原了白蓝这个棱块,那我们在保持白色中心 块在底部的情况下,白红的棱块就一点要放在白蓝棱块的右边, 白橙棱块放在白蓝棱块的左边,白緑棱块放在白蓝棱块的对面, 由于魔方的中心块不会发生变化,所以在复原的过程中,我们是 以中心块为参照物的,第一步我们在复原白蓝、白红、白绿、白 橙这四个棱块的时候,我们可以先把白色面旋转到顶层,和黄色 中心块同一个平面,然后再把他对应的另一个颜色(蓝或红或緑 或橙)经过旋转最上层,使之和对应的中心块的颜色同色,这样 我们再旋转180度,对应的棱块就正确复原到底部了。

三阶魔方教程图解(彩版可编辑打印)

三阶魔方入门教程 前言 我们常见的魔方是3x3x3的三阶魔方,是一个正6 面体,有6种颜色,由26块组成,有8个角块;12个棱块;6个中心块(和中心轴支架相连)见下图: (图1) 学习魔方首先就要搞清它的以上结构,知道角块只能和角块换位,棱块只能和棱块换位,中心块不能移动。 魔方的标准色: 国际魔方标准色为:上黄-下白,前蓝-后绿,左橙-右红。(见图2)注:(这里以白色为底面,因为以后的教程都将以白色为底面,为了方便教学,请都统一以白色为准)。 (图2) 认识公式 (图3)(图4) 公式说明:实际上就是以上下左右前后的英文的单词的头一个大写字母表示

(图5) (图6)

(图7) (图8)

步骤一、完成一层 首先要做的是区分一层和一面:很多初学者对于“一面”与“一层”缺乏清楚的认识,所以在这里特别解释一 下。所谓一层,就是在完成一面(如图2的白色面)的基础上,白色面的四条边,每条边的侧面只有一种颜色,图(2). 如图(1)中心块是蓝色,则它所在面的角和棱全都是蓝色,是图(2)的反方向 图(3)和(4)则是仅仅是一面的状态,而不是一层 ! (1) (2) (3) (4) 注:图(2)和(4)分别是图(1)和(3)的底面状态 想完成魔方,基础是最重要的,就像建筑一样,魔方也如此,基础是最重要的。 由于上文提到过中心块的固定性,这一性质,在魔方上实质起着定位的作用,简单的说就是中心块的颜色就代表它所在的面的颜色。 一、十字(就是快速法中的CROSS ) 第一种情况如图所示: 公式为R2 第二种情况如图所示: (白色下面颜色为橙色,为方便观察,特意翻出颜色) 橙白块要移到上右的位置,现在橙白块在目标位置的下面。但其橙色片没有和橙色的中心块贴在 (橙色下面颜色为白色,为方便观察,特意翻出颜色)

魔方六步还原图解

六步恢复魔方 第一步- 完成第一层 首先要做的是区分一层和一面。所谓一层,就是在完成一面(如图2的白色面)的基础上,白色面的四条边,每条边的侧面只有一种颜色,图(2). 如图(1)中心块是蓝色,则它所在面的角和棱全都是蓝色,是图(2)的反方向。图(3)和(4)则是仅仅是一面的状态,而不是一层。 (1)(2) (3)(4) 注:图(2)和(4)分别是图(1)和(3)的底面状态 第二步- 完成第二层 接着我们就要开始还原第二层了,首先我们把魔方倒过来,也就是把做好的第一层放到底层,要完成第二层有两种情况,如下图: (1)五顺五逆y’RURUR U'R'U'R'U’(2)五逆五顺R'U'R'U'R' URURU

图解:(1)五顺五逆 y ‘ R U R U R U' R' U' R' U ’ (2)五逆五顺 R' U' R' U' R' U R U R U 第三步 – 顶层十字 完成了第二层,接下来是在顶层架“十”字,先不管角块的 颜色到底如何,只关注棱块,而且只看顶面的颜色(这里即黄色)。 公式1:FRUR ’U ’F ’ 公式2:f RUR ’U ’f ’ PS:上面两个公式互为对称,都是10步,最后 一步没有实际意义,只是加入令口诀更加容易记住而已,可以不做第10步。最后还原后颜色或位置可能不对,继续做公式,将顶面的块替换下来继续公式就能完成。

图解: 公式1:FRUR’U’F’助记口诀:左右上顺右上左逆 公式2:f RUR’U’f’助记口诀:左右上顺右上左逆 特殊状态 第四步–恢复顶面 顶层翻角颜色的公式:R’U2 R U R’U R 助记:右逆上顺顺,右顺上逆,右逆上顺(再)右顺 图解: 其实顶层拧完十字后共有7种情况 第一种: 这种情况做一次公式

平板电脑宣传标语

平板电脑宣传标语标语,平板电脑宣传标语 1、酷比魔方,人生第二伴侣。 2、酷比魔方中的IT世界比现实热闹多啦。 3、创意生活,无限魅力。 4、酷在超越,xx魔方。 5、不必xx,平板电脑e路领先。 6、酷比魔方,便捷无线,精彩万变。 7、酷比魔方:上网很简单,只需用酷比。 8、拒绝平庸,创想乐活。 9、魅力魔力,由我联动。 10、酷比魔方,玩转时尚,谁是王者? 11、世界在握,自由欢畅。 12、酷比魔方电脑,生活因你而改变。 13、精彩创想百变,xx不止一面。 14、电脑万千,酷比魔方领先。 15、移动享受,掌控生活——酷比魔方。 16、触动E时代,酷毕新生活。 17、玩转时尚,酷比魔方。 18、乐活酷比更xx,xx魔力不平凡。 19、酷比魔方,手指尖艺术。

20、酷比魔方,旅途畅享。 21、方寸之间,无限可能。 22、随时随地,酷起来。 23、随身享酷,玩转不停。 24、酷比魔方,360度超酷体验。 25、体验科技魔力,酷比时尚活力。 26、酷动网络,点亮精彩。27、我在这里,世界在我手里。 28、酷比魔方,让您享受第二个人生。 29、酷比的生活,魔法的电脑。 30、酷比魔方,精彩四方。 31、魔方随你而动,世界无限可能。 32、酷比魔方——玩转互联生活。 33、酷比魔方,世界尽在“掌”握。 34、创视生活,酷比魔方。 35、触摸到的精彩——酷比魔方。 36、方寸之间,精彩无限——酷比魔方。 37、xx演绎真精彩——酷比魔方。 38、品质打响品牌,精工成就精彩。 39、网络世界,掌握在你手里——酷比魔方。 40、科技和魔力一样的精彩。 41、酷比魔方,幸福畅享。

三阶魔方公式图解入门新手学习基础

对好第一面加上四个侧面的T字形 这一步我们的目标是对成下面这个样子: 做好这一步其实你只要学会一招就够了。那个含有白色的角色块,转来转去之后就只有下面6种可能的位置, A和B位置是最标准的情况,你先尽量找这样位置的角块,只需下面简单的三步就可以把这种情况搞定。 对于C、D、E、F,我们就是把他们变成A或B。如果你实在现在找不到A或B情况,请先到后面看看怎么把C、D、E、F转换成A或B再回来看A和B的解法。 在开始做公式之前,我请大家一定要注意一点,请看下面两个图, 这两个图都是白色的一面已经对好,但是侧面的T字形没有出来。为什么呢?因为在第一个图里面,最靠近我们的白小角块,他要上到的角应该是和所夹的那个角,但是他上错了,所以T字没有出来,你看第二个图里面,白他就上对了,但是其他的小角块上错了。要上对角就要在一开始把这个小角块摆在他正确的目标位置下面,再开始做我们下面的公式。对于A位置只需下面三步: F D F' 初始状态,白小角块应 该放在所夹的那个角(目标位置)的下面,不能放错哦。下一步要旋转白色小片所在侧面。旋转白色小片所在侧面,在 这里也就是前面,让顶层的目 标位置下到底层来"接应"白 角块。 让白角块转到目标位置。转回顶层。 对于B位置,其实完全一样,就是把刚才的3步像照镜子一样的做一遍就行了,具体请看,

R'D'R 初始状态,白小角块应该 放在所夹的那个角(目标位置)的下面,下一步也是要旋转白色小片所在侧 面。口诀都是一样的,旋转白色 小片所在侧面,在这里也就 是右面,让顶层的目标位置 下到底层来"接应"白角块。 让白角块转到目标位置。转回顶层。 而对于C、D、E、F位置,你总可以用旋转侧面和底面将其转到A或B位置。这里是 几个例子,这些公式是不应该记的,你应该自己摸索着转几下。 对于F对于C对于D对于E 一般不用处理,这个位置本 来是白角块的目标位,等白 角块上到这个目标位后自 然会把这个白替换到底层, 对极特殊情况,白也不在底 层, 重复做4个角,你就会得到 这样我们已经打好了地基,很简单吧。 处理第二层的四个棱色块,对好前两层 这步我们最后对好前两层后,就会是下图这个样子: 这步我们要处理的是中间层,,,四个棱色块。这次,你要先把魔方翻过来了,白面 朝下,黄色为中心的面朝上,你要在顶层找到这四个棱块,有一个窍门,顶层只要不含有黄 色的棱色块一定是这四个之一,这里以为例,通常,你会碰到两种情况, 首先,我们在顶层找到棱色块之后,不管在侧面还是在侧面,你都要旋转顶层先让侧 面三个颜色对成同色的一排,就去找红色,就去找绿色。

最容易学的新手魔方公式口诀图解教程

新魔方新手教程 前言 我们常见的魔方是3x3x3的三阶魔方,英文名Rubik's cube。是一个正6 面体,有6种颜色,由26块组成,有8个角块;12个棱块;6个中心块(和中心轴支架相连)见下图: (图1) 学习魔方首先就要搞清它的以上结构,知道角块只能和角块换位,棱块只能和棱块换位,中心块不能移动。 魔方的标准色: 国际魔方标准色为:上黄-下白,前蓝-后绿,左橙-右红。(见图2)注:(这里以白色为底面,因为以后的教程都将以白色为底面,为了方便教学,请都统一以白色为准)。 (图2) 认识公式 (图3)(图4) 公式说明:实际上就是以上下左右前后的英文的单词的头一个大写字母表示

(图5) (图6)

(图7) (图8)

步骤一、完成一层 首先要做的是区分一层和一面:很多初学者对于“一面”与“一层”缺乏清楚的认识,所以在这里特别解释一下。所谓一层,就是在完成一面(如图2的白色面)的基础上,白色面的四条边,每条边的侧面只有一种颜色,图(2). 如图(1)中心块是蓝色,则它所在面的角和棱全都是蓝色,是图(2)的反方向 图(3)和(4)则是仅仅是一面的状态,而不是一层! (1)(2) (3)(4) 注:图(2)和(4)分别是图(1)和(3)的底面状态 想完成魔方,基础是最重要的,就像建筑一样,魔方也如此,基础是最重要的。 由于上文提到过中心块的固定性,这一性质,在魔方上实质起着定位的作用,简单的说就是中心块的颜色就代表它所在的面的颜色。 一、十字(就是快速法中的CROSS) 第一种情况如图所示: (橙色下面颜色为白色,为方便观察,特意翻出颜色) 公式为R2 第二种情况如图所示: (白色下面颜色为橙色,为方便观察,特意翻出颜色) 橙白块要移到上右的位置,现在橙白块在目标位置的下面。但其橙色片没有和橙色的中 心块贴在一起。为此我们先做D’F’即把橙色粘在一起,接着

相关文档
最新文档