浮点指令

对下面的指令先做一些说明:
st(i):代表浮点寄存器,所说的出栈、入栈操作都是对st(i)的影响
src,dst,dest,op等都是指指令的操作数,src表示源操作数,dst/dest表示目的操作数
mem8,mem16,mem32,mem64,mem80等表示是内存操作数,后面的数值表示该操作数的内存位数(8位为一字节)
x <- y 表示将y的值放入x,例st(0) <- st(0) – st(1)表示将st(0)-st(1)的值放入浮点寄存器st(0)

1.  数据传递和对常量的操作指令

继续阅读“浮点指令”

指令格式 指令含义 执行的操作
FLD src 装入实数到st(0) st(0) <- src (mem32/mem64/mem80)
FILD src 装入整数到st(0) st(0) <- src (mem16/mem32/mem64)
FBLD src 装入BCD数到st(0) st(0) <- src (mem80)
FLDZ 将0.0装入st(0) st(0) <- 0.0
FLD1 将1.0装入st(0) st(0) <- 1.0
FLDPI 将pi装入st(0) st(0) <- ?(ie, pi)
FLDL2T 将log2(10)装入st(0) st(0) <- log2(10)
FLDL2E 将log2(e)装入st(0) st(0) <- log2(e)
FLDLG2 将log10(2)装入st(0) st(0) <- log10(2)
FLDLN2 将loge(2)装入st(0) st(0) <- loge(2)

2012开年寄语碎碎念

2012开年寄语碎碎念

今天是2012年的第一天

希望我的家人我的朋友还是一如既往的平平安安

今天是个特别的日子,今年也将是个特别的年份

也许我的人生道路会在今年发生些许变化

是的,在2012 我就要毕业了

虽然说现在也基本毕业了

(只差毕业论文 和一堆形式的东西)

但起码我暂时还能呆在象牙塔

里的某个毫无纷扰的宿舍里

安静的敲打着键盘.

四年了 即将和这里地方告别还真是舍不得

还记得 曾经在这个地方日夜的奋斗在SG2的战场

还记得 曾经在这个地方做了各种2B青年做的事情

当听到路飞呼喊着”海贼王 我当定了“的时候

总是非常的激动

在我的未来  是什么能让我当定了呢?

在过去2011的这下半年里 我做了好多好多的事情

一次一次的在社会面前受挫

有时候还真是感慨万分呢

我是一个当下普通得再普通不过的大学生

面对对手没有一招必杀技能和BUFF

现在正经历着再普通不过的过程

我并没有感慨造化的意思

反而 其实我还挺享受这种过程

2012已经来了 今年一定是个非常精彩的年

朋友们和我一起期待吧!

行了我就啰嗦那么多

kong

2012/01/01 in HZUN


CrackMe#68 The ed of 2011

今天是2012倒数第二天,当然CM也会别具一格~

今天的难度系数在过去所有中能排前10….

关键点A:

@@:
bt      dword ptr [esi+4], ecx
jb      @F
dec     ecx
jmp     @B
@@:

显然bt伪指令..我们先查查bt伪指令的用法:

BT是位测试指令,源自80×86

格式: BT OPD,OPS
功能: 目的操作数OPD中由源操作数OPS指定的位送CF标志
位检测指令是把第一个操作数中某一位的值传送给标志位CF,具体的哪一位由指令的第二操作数来确定。 
简单的说是CF==1时@F跳转~
BT(Bit Test):
举个例子:
bt eax,ecx  ;eax=0xAB24AD89 ecx=0x1D
我们知道 eax化成二进制:
1010 1011 0010 0100 1010 1101 1000 1001   
0x1D=29.
而第29位是:1

1010 1011 0010 0100 1010 1101 1000 1001
所以这句指令运行后 CF==1符合JB要求的 
学以致用 在本CM中是对0x13F位进行测试的.可谓是对BT指令的更深层应用
所以BT指令的使用在本CM中觉得堪称一绝!
先把整个CM逆出来先!
经过一天的DASM  这一个逆向出来的源码 算法基本一致`MySource
结合源码&原CM一起分析不难发现这个CM的算法还是非常不错的~

CrackMe#67 自校捡技术&遍历进程

MASM写的啊….经过N个PHICM之后又回归MASM  一种非常熟悉的编码结构  看着真是舒服啊 噢~嗷

这个CM除了算法上耍了点小花招之外~

还加入了自校捡  整个CM DASM过程中就像是温习教科书一样的感觉~

总体来说还OK拉~

还一个就是加上了遍历进程~

这个HIDE OD OPTION就完美解决问题=.=

相比之下  两天前的自创建进程然后把权限叫给所创建的进程来说…呃

一组Key:

ShadowKong

PBVF7OB-JBUM8IP-231QUG2-6VK6JZ9

DownMe

KeyFile#66 简单的反爆破

先看一段Dasm:

00401018  |.  8B00          mov     eax, dword ptr [eax]
0040101A  |.  3D 6A106800   cmp     eax, 68106A
0040101F  |.  75 71         jnz     short 00401092
00401021  |.  A1 DD304000   mov     eax, dword ptr [4030DD]
00401026  |.  3D 4232E2AA   cmp     eax, AAE23242
0040102B  |.  75 65         jnz     short 00401092
0040102D  |.  6A 00         push    0                                ; /hTemplateFile = NULL
0040102F  |.  68 80000000   push    80                               ; |Attributes = NORMAL
00401034  |.  6A 03         push    3                                ; |Mode = OPEN_EXISTING
00401036  |.  6A 00         push    0                                ; |pSecurity = NULL
00401038  |.  6A 01         push    1                                ; |ShareMode = FILE_SHARE_READ

以上 这是程序中简单的反爆破  但这并不是我们需要关注的重点

我们要在往后的逆向中 或者编码中 注重由此延伸开来的一系列反跟踪反反跟踪

反跟踪有很多的方式 必须要一个一个去了解  要不然拿到一个高手写的程序也会顿首无措.

总的来说 这个CM还是非常不错的

尤其是在考逆算法的时候~

综合了比较大的循环~

所以在运行程序的时候要等几秒钟才会生成~

DownMe

CrackMe#65 反反跟踪技术不过关

今天很长一段时间在跟踪CM3

但是其反跟踪很有深度…

所以决定把它放到一边 等研究完它的反跟踪方式再去Crack

于是换了一个CM  结果居然是个明码…

今天深深领悟到 万种调试工具在手 也不敌别人三句代码的感觉了.

以下这个CM 直接载入OD  (居然无壳 而且还是调试版)只要你有一点DASM常识 都很容易找到明码~

Down

CrackMe#64 实乃上品也

这个CM算法上毫无亮点可言~

但漂亮的是在反OD 反IDA 反WINDBG上~

总的来说就是反调试 虽然用的并不是什么高深的技术

但也足矣让人眼前一亮~

不用是IsDebug 也不是BeginDebug 不是你能想到的一切办法~

而且非常巧妙的避开调试线程呵呵…

虽然没什么技术可言  但也非常的漂亮呢

还有算法部分欠大半段的废话也是属于亮点了!

总之我给个LV  就应该属于LV2以上了~!

一组Key:

ShadowKong

15304804104404F05714

DownMe