09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0
http://09-f9-11-02-9d-74-e3-5b-d8-41-56-c5-63-56-88-c0.com/
http://09f911029d74e35bd84156c5635688c0.com/
http://www.youtube.com/watch?v=L9HaNbsIfp0
在CPU中,一个二进制位被作为一位,八位就是一个字节,在内存中,就是以字节为单位来存储信息的,每一个字节单元给以一个唯一的存储器地址,称为物地址。ASCII码用一个字节表达,就是说一个内存单元可以存储一个英文字符或数字等,而中文要用Unicode码来表示,也就是说两个内存单元(16位),才能存一个汉字。
32位的CPU就是说一个寄存器可以存下32个0或(不包括段寄存器)
寄存器有十六个
通用寄存器:EAX,EBX,ECX,EDX,ESP,EBP,EDI,ESI.
EAX-EDX又称为数据寄存器,可以分别对其高十六位和低十六位访问
低十六位:AX,BX,CX,DX 低十六位又可以分别进行八位访问
AX可分为AH(高八位),AL(低八位)。其它BH,BL.CH,CL.DH,DL
EAX,EBX,ECX,EDX用来暂时存放计算过程中所用的操作数,结果等
ESP,EBP,EDI,ESI这四个只能用字来访问,它们的主要用途就是在存储器寻址时,提供偏移地址。称为指针或变址寄存器。
从386以后,所有的寄存器都可以用来存储内存地址。
[EBX] 表示EBX中装的是一个内存地址,真正要访问的,就是EBX中存储的内存单元所存储的值。
ESP 堆栈指针寄存器。任何时候都指向堆栈栈顶。
堆栈 基址开始于一个高地址,每当有数据入栈,它就向低地址的方向存储,入栈指令是PUSH。 每当有数据入栈,ESP就跟着改变,总之,它永远指向最后一个压入栈的数据。
Win32下,API所用的数据,均是靠堆栈来传送的,即先将要传送的数据压入堆栈,然后CALL至API函数,API函数会在函数体内用出栈指令将相应的数据出栈。
EBP 基址指针寄存器 可以与堆栈寄存器SS联用来确定堆栈中的某一个存储单元的地址.
ESI(源变址寄存器)和EDI(目的变址寄存器)一般与数据段寄存器DS联用,用来确定数据段中某一存储单元的地址。
CS 代码段寄存器
DS 数据段寄存器
SS 堆栈段寄存器
ES,FS,GS 附加段寄存器
专用寄存器
EIP 指令指针寄存器 存放代码段中的偏移地址,始终指向下一条指令的首地址。它与CS代码段寄存器配合确定下一条指令的物理地址
当这一地址送到存储器后,控制器可以取得下一条要执行的指令,而控制器一旦取得这条指令就马上修改EIP的内容,使它始终指向下一条指令的首地址。
FLAGS 标志寄存器 / PSW(program status word)程序状态寄存器
常用的指令
CMP AX BX AX寄存器减去BX寄存器的内容,不返回结果。
MOV AX BX 将BX中的值移送至AX
XOR AX AX 每个寄存器与自己作异或运算等于清零动作
异或解释:如果相同则为0,不相同则为1
JZ=74;JNZ=75;JMP=EB;Nop=90
NOP
JE/JZ 相等则跳
JNE/JNZ 不相等则跳
JMP 无条件跳
JB 小于则跳
JA 大于则跳
JG 大于则跳
JGE 大于或等于则跳
JL 小于则跳
JLE 大于或等于则跳
功力不够深厚,搞不定了.还是用IceExt暂时解决了 。
想研究的朋友可去 http://www.netexpert.cn/forum-26-1.html 看看,softice_debug分析的很透彻,其中一篇 应对skype 对付softice 的方法 应该可以解决skype对softice的检测问题.
过几天有时间了。再学习一下.
加载IceExt服务时提示:Error: SoftICE is misconfigured. Add KDExtensionis parameter of type REG_SZ under NTIce registry key.
把下面的保存导入registry即可.
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTice]
“KDStackSize”=dword:00008000
“KDHeapSize”=dword:00100000
“KDExtensions”=”"
不用qq了, 想用Skype,但我机器上装着SoftICE, Skype不工作,Google之,改之. 用之.
Thanks scz & hume &pediy 我只是更新了一下.呵呵.
文件版本 : 3.0.0.218
产品版本 : 3.0
BuildTime : 22.02.2007 23:31:13
文件大小 : 25,388,584 字节
语言 : 英语(美国)
Ctrl-F2加载Skype.exe,Alt-E调出Executable modules窗口,选中user32,Ctrl-N调出Names in user32窗口,选中MessageBoxA按F2下断点,F9运行,
00D891A1 |. BA A895D800 mov edx, 00D895A8 ; ASCII “Skype.main”
00D891A6 |. A1 0C1C7700 mov eax, [771C0C]
00D891AB |. E8 94E89EFF call 00777A44
00D891B0 |> E8 BFC086FF call 005F5274
00D891B5 |. 84C0 test al, al
00D891B7 74 1A je short 00D891D3
00D891B9 |. 6A 00 push 0 ; /Style = MB_OK|MB_APPLMODAL
00D891BB |. 68 C895D800 push 00D895C8 ; |Title = “Skype”
00D891C0 |. 68 D095D800 push 00D895D0 ; |Text = “Skype is not compatible with system debuggers like SoftICE.”
00D891C5 |. 6A 00 push 0 ; |hOwner = NULL
00D891C7 |. E8 D0FB67FF call <jmp.&user32.MessageBoxA> ; \MessageBoxA
00D891CC |. 6A 00 push 0 ; /ExitCode = 0
00D891CE |. E8 79EF67FF call <jmp.&kernel32.ExitProcess> ; \ExitProcess
将00D891B7 74 1A je short 00D891D3改成00D891B7 EB 1A jmp short 00D891D3 无条件跳转.