体验盒子

收藏唠嗑,希望你喜欢!

简单判断是否进入OEP

2010年9月29日 Crack 没有评论 | 热度:68 ℃

牛尾吧
总结:
Microsoft Visual C++ 6.0

00496EB8 >/$  55            PUSH EBP                                 ;  (初始 cpu 选择)
00496EB9  |.  8BEC          MOV EBP,ESP
00496EBB  |.  6A FF         PUSH -1
00496EBD  |.  68 40375600   PUSH Screensh.00563740
00496EC2  |.  68 8CC74900   PUSH Screensh.0049C78C                   ;  SE 处理程序安装
00496EC7  |.  64:A1 0000000>MOV EAX,DWORD PTR FS:[0]
00496ECD  |.  50            PUSH EAX
00496ECE  |.  64:8925 00000>MOV DWORD PTR FS:[0],ESP
00496ED5  |.  83EC 58       SUB ESP,58

Microsoft Visual Basic 5.0 / 6.0

00401166  - FF25 6C104000   JMP DWORD PTR DS:[<&MSVBVM60.#100>]      ; MSVBVM60.ThunRTMain
0040116C >  68 147C4000     PUSH PACKME.00407C14
00401171    E8 F0FFFFFF     CALL <JMP.&MSVBVM60.#100>
00401176    0000            ADD BYTE PTR DS:[EAX],AL
00401178    0000            ADD BYTE PTR DS:[EAX],AL
0040117A    0000            ADD BYTE PTR DS:[EAX],AL
0040117C    3000            XOR BYTE PTR DS:[EAX],AL

或省略第一行的JMP

00401FBC >  68 D0D44000        push dumped_.0040D4D0
00401FC1    E8 EEFFFFFF        call <jmp.&msvbvm60.ThunRTMain>
00401FC6    0000               add byte ptr ds:[eax],al
00401FC8    0000               add byte ptr ds:[eax],al
00401FCA    0000               add byte ptr ds:[eax],al
00401FCC    3000               xor byte ptr ds:[eax],al
00401FCE    0000               add byte ptr ds:[eax],al

BC++

0040163C > $ /EB 10         JMP SHORT BCLOCK.0040164E
0040163E     |66            DB 66                                    ;  CHAR 'f'
0040163F     |62            DB 62                                    ;  CHAR 'b'
00401640     |3A            DB 3A                                    ;  CHAR ':'
00401641     |43            DB 43                                    ;  CHAR 'C'
00401642     |2B            DB 2B                                    ;  CHAR '+'
00401643     |2B            DB 2B                                    ;  CHAR '+'
00401644     |48            DB 48                                    ;  CHAR 'H'
00401645     |4F            DB 4F                                    ;  CHAR 'O'
00401646     |4F            DB 4F                                    ;  CHAR 'O'
00401647     |4B            DB 4B                                    ;  CHAR 'K'
00401648     |90            NOP
00401649     |E9            DB E9
0040164A   . |98E04E00      DD OFFSET BCLOCK.___CPPdebugHook
0040164E   > \A1 8BE04E00   MOV EAX,DWORD PTR DS:[4EE08B]
00401653   .  C1E0 02       SHL EAX,2
00401656   .  A3 8FE04E00   MOV DWORD PTR DS:[4EE08F],EAX
0040165B   .  52            PUSH EDX
0040165C   .  6A 00         PUSH 0                                   ; /pModule = NULL
0040165E   .  E8 DFBC0E00   CALL <JMP.&KERNEL32.GetModuleHandleA>    ; \GetModuleHandleA
00401663   .  8BD0          MOV EDX,EAX

Borland Delphi 6.0 - 7.0

00509CB0 > $  55            PUSH EBP
00509CB1   .  8BEC          MOV EBP,ESP
00509CB3   .  83C4 EC       ADD ESP,-14
00509CB6   .  53            PUSH EBX
00509CB7   .  56            PUSH ESI
00509CB8   .  57            PUSH EDI
00509CB9   .  33C0          XOR EAX,EAX
00509CBB   .  8945 EC       MOV DWORD PTR SS:[EBP-14],EAX
00509CBE   .  B8 20975000   MOV EAX,unpack.00509720
00509CC3   .  E8 84CCEFFF   CALL unpack.0040694C

易语言入口

00401000 >  E8 06000000     call dump_.0040100B
00401005    50              push eax
00401006    E8 BB010000     call <jmp.&KERNEL32.ExitProcess>
0040100B    55              push ebp
0040100C    8BEC            mov ebp,esp
0040100E    81C4 F0FEFFFF   add esp,-110
00401014    E9 83000000     jmp dump_.0040109C
00401019    6B72 6E 6C      imul esi,dword ptr ds:[edx+6E],6C
0040101D    6E              outs dx,byte ptr es:[edi]

也可能是这样的入口
Microsoft Visual C++ 6.0 [Overlay] E语言

00403831 >/$  55            PUSH EBP
00403832  |.  8BEC          MOV EBP,ESP
00403834  |.  6A FF         PUSH -1
00403836  |.  68 F0624000   PUSH Nisy521.004062F0
0040383B  |.  68 A44C4000   PUSH Nisy521.00404CA4                    ;  SE 处理程序安装
00403840  |.  64:A1 0000000>MOV EAX,DWORD PTR FS:[0]
00403846  |.  50            PUSH EAX
00403847  |.  64:8925 00000>MOV DWORD PTR FS:[0],ESP

MASM32 / TASM32入口

00401258 >/$  6A 00         push 0                                   ; /pModule = NULL
0040125A  |.  E8 47000000   call <jmp.&kernel32.GetModuleHandleA>    ; \GetModuleHandleA
0040125F  |.  A3 00304000   mov dword ptr ds:[403000],eax
00401264  |.  6A 00         push 0                                   ; /lParam = NULL
00401266  |.  68 DF104000   push dump.004010DF                       ; |DlgProc = dump.004010DF
0040126B  |.  6A 00         push 0                                   ; |hOwner = NULL
0040126D  |.  6A 65         push 65                                  ; |pTemplate = 65
0040126F  |.  FF35 00304000 push dword ptr ds:[403000]               ; |hInst = NULL
00401275  |.  E8 56000000   call <jmp.&user32.DialogBoxParamA>       ; \DialogBoxParamA

004A2ADC > $  E8 B6A40000   call 记事本.004ACF97
004A2AE1   .^ E9 16FEFFFF   jmp 记事本.004A28FC
004A2AE6      CC            int3
004A2AE7      CC            int3
004A2AE8      CC            int3
004A2AE9      CC            int3
004A2AEA      CC            int3
004A2AEB      CC            int3
004A2AEC      CC            int3
004A2AED      CC            int3
004A2AEE      CC            int3
004A2AEF      CC            int3
004A2AF0  /$  8B4C24 04     mov ecx,dword ptr ss:[esp+4]
004A2AF4  |.  F7C1 03000000 test ecx,3
004A2AFA  |.  74 24         je short 记事本.004A2B20
004A2AFC  |>  8A01          /mov al,byte ptr ds:[ecx]
004A2AFE  |.  83C1 01       |add ecx,1

软件破解常用汇编指令

cmp    a,b     //  比较a与b
mov    a,b     //  把b值送给a值,使a=b
ret            //  返回主程序
nop            //  无作用
call           //  调用子程序,子程序以ret结尾
je或jz         //  相等则跳(机器码是74或84)
jne或jnz       //  不相等则跳(机器码是75或85)
jmp            //  无条件跳(机器码是EB)
jb             //  若小于则跳
ja             //  若大于则跳
jg             //  若大于则跳
jge            //  若大于等于则跳
jl             //  若小于则跳
pop xxx        //  xxx出栈
push xxx       //  xxx压栈

★★破解经典句式★★
1.(最常用)
mov  eax [      ]
mov  edx [      ]
call 00??????       关键call
test eax eax
jz(jnz)或  jne(je)  关键跳转
2 (最常用)
mov  eax [      ]
mov  edx [      ]
call 00??????       关键call
jne(je)             关键跳转
3
mov eax [  ]
mov edx [  ]
cmp eax,edx
jnz(jz)
4
lea edi [    ]
lea esi [    ]
repz cmpsd
jz(jnz)
5
mov  eax [      ]
mov  edx [      ]
call 00??????
setz (setnz) al (bl,cl…)
6
mov  eax [      ]
mov  edx [      ]
call 00??????
test eax eax
setz (setnz) bl,cl…
7
call 00??????  ***
push eax (ebx,ecx…)
……
……
call 00??????
pop eax (ebx,ecx…)
test eax eax
jz(jnz)
一、数据传输指令
───────────────────────────────────────
它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.
1. 通用数据传送指令.
MOV    传送字或字节.
MOVSX  先符号扩展,再传送.
MOVZX  先零扩展,再传送.
PUSH    把字压入堆栈.
POP    把字弹出堆栈.
PUSHA  把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.
POPA    把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.
PUSHAD  把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.
POPAD  把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.
BSWAP  交换32位寄存器里字节的顺序
XCHG    交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数)
CMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX )
XADD    先交换再累加.( 结果在第一个操作数里 )
XLAT    字节查表转换.
── BX 指向一张 256 字节的表的起点, AL 为表的索引值 (0-255,即
0-FFH); 返回 AL 为查表结果. ( [BX+AL]->AL )
2. 输入输出端口传送指令.
IN      I/O端口输入. ( 语法: IN 累加器, {端口号│DX} )
OUT    I/O端口输出. ( 语法: OUT {端口号│DX},累加器 )
输入输出端口由立即方式指定时, 其范围是 0-255; 由寄存器 DX 指定时,
其范围是 0-65535.
3. 目的地址传送指令.
LEA    装入有效地址.
例: LEA DX,string  ;把偏移地址存到DX.
LDS    传送目标指针,把指针内容装入DS.
例: LDS SI,string  ;把段地址:偏移地址存到DS:SI.
LES    传送目标指针,把指针内容装入ES.
例: LES DI,string  ;把段地址:偏移地址存到ES:DI.
LFS    传送目标指针,把指针内容装入FS.
例: LFS DI,string  ;把段地址:偏移地址存到FS:DI.
LGS    传送目标指针,把指针内容装入GS.
例: LGS DI,string  ;把段地址:偏移地址存到GS:DI.
LSS    传送目标指针,把指针内容装入SS.
例: LSS DI,string  ;把段地址:偏移地址存到SS:DI.
4. 标志传送指令.
LAHF    标志寄存器传送,把标志装入AH.
SAHF    标志寄存器传送,把AH内容装入标志寄存器.
PUSHF  标志入栈.
POPF    标志出栈.
PUSHD  32位标志入栈.
POPD    32位标志出栈.

二、算术运算指令
───────────────────────────────────────
ADD    加法.
ADC    带进位加法.
INC    加 1.
AAA    加法的ASCII码调整.
DAA    加法的十进制调整.
SUB    减法.
SBB    带借位减法.
DEC    减 1.
NEC    求反(以 0 减之).
CMP    比较.(两操作数作减法,仅修改标志位,不回送结果).
AAS    减法的ASCII码调整.
DAS    减法的十进制调整.
MUL    无符号乘法.
IMUL    整数乘法.
以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算),
AAM    乘法的ASCII码调整.
DIV    无符号除法.
IDIV    整数除法.
以上两条,结果回送:
商回送AL,余数回送AH, (字节运算);
或  商回送AX,余数回送DX, (字运算).
AAD    除法的ASCII码调整.
CBW    字节转换为字. (把AL中字节的符号扩展到AH中去)
CWD    字转换为双字. (把AX中的字的符号扩展到DX中去)
CWDE    字转换为双字. (把AX中的字符号扩展到EAX中去)
CDQ    双字扩展.    (把EAX中的字的符号扩展到EDX中去)

三、逻辑运算指令
───────────────────────────────────────
AND    与运算.
OR      或运算.
XOR    异或运算.
NOT    取反.
TEST    测试.(两操作数作与运算,仅修改标志位,不回送结果).
SHL    逻辑左移.
SAL    算术左移.(=SHL)
SHR    逻辑右移.
SAR    算术右移.(=SHR)
ROL    循环左移.
ROR    循环右移.
RCL    通过进位的循环左移.
RCR    通过进位的循环右移.
以上八种移位指令,其移位次数可达255次.
移位一次时, 可直接用操作码.  如 SHL AX,1.
移位>1次时, 则由寄存器CL给出移位次数.
如  MOV CL,04
SHL AX,CL

四、串指令
───────────────────────────────────────
DS:SI  源串段寄存器  :源串变址.
ES:DI  目标串段寄存器:目标串变址.
CX      重复次数计数器.
AL/AX  扫描值.
D标志  0表示重复操作中SI和DI应自动增量; 1表示应自动减量.
Z标志  用来控制扫描或比较操作的结束.
MOVS    串传送.
( MOVSB  传送字符.    MOVSW  传送字.    MOVSD  传送双字. )
CMPS    串比较.
( CMPSB  比较字符.    CMPSW  比较字. )
SCAS    串扫描.
把AL或AX的内容与目标串作比较,比较结果反映在标志位.
LODS    装入串.
把源串中的元素(字或字节)逐一装入AL或AX中.
( LODSB  传送字符.    LODSW  传送字.    LODSD  传送双字. )
STOS    保存串.
是LODS的逆过程.
REP            当CX/ECX<>0时重复.
REPE/REPZ      当ZF=1或比较结果相等,且CX/ECX<>0时重复.
REPNE/REPNZ    当ZF=0或比较结果不相等,且CX/ECX<>0时重复.
REPC          当CF=1且CX/ECX<>0时重复.
REPNC          当CF=0且CX/ECX<>0时重复.

五、程序转移指令
───────────────────────────────────────
1>无条件转移指令 (长转移)
JMP    无条件转移指令
CALL    过程调用
RET/RETF过程返回.
2>条件转移指令 (短转移,-128到+127的距离内)
( 当且仅当(SF XOR OF)=1时,OP1<OP2 )
JA/JNBE 不小于或不等于时转移.
JAE/JNB 大于或等于转移.
JB/JNAE 小于转移.
JBE/JNA 小于或等于转移.
以上四条,测试无符号整数运算的结果(标志C和Z).
JG/JNLE 大于转移.
JGE/JNL 大于或等于转移.
JL/JNGE 小于转移.
JLE/JNG 小于或等于转移.
以上四条,测试带符号整数运算的结果(标志S,O和Z).
JE/JZ  等于转移.
JNE/JNZ 不等于时转移.
JC      有进位时转移.
JNC    无进位时转移.
JNO    不溢出时转移.
JNP/JPO 奇偶性为奇数时转移.
JNS    符号位为 "0" 时转移.
JO      溢出转移.
JP/JPE  奇偶性为偶数时转移.
JS      符号位为 "1" 时转移.
3>循环控制指令(短转移)
LOOP            CX不为零时循环.
LOOPE/LOOPZ    CX不为零且标志Z=1时循环.
LOOPNE/LOOPNZ  CX不为零且标志Z=0时循环.
JCXZ            CX为零时转移.
JECXZ          ECX为零时转移.
4>中断指令
INT    中断指令
INTO    溢出中断
IRET    中断返回
5>处理器控制指令
HLT    处理器暂停, 直到出现中断或复位信号才继续.
WAIT    当芯片引线TEST为高电平时使CPU进入等待状态.
ESC    转换到外处理器.
LOCK    封锁总线.
NOP    空操作.
STC    置进位标志位.
CLC    清进位标志位.
CMC    进位标志取反.
STD    置方向标志位.
CLD    清方向标志位.
STI    置中断允许位.
CLI    清中断允许位.

六、伪指令
───────────────────────────────────────
DW      定义字(2字节).
PROC    定义过程.
ENDP    过程结束.
SEGMENT 定义段.
ASSUME  建立段寄存器寻址.
ENDS    段结束.
END    程序结束.

这些都是基本知识 熟记一下  

简单判断找到OEP

2010年9月29日 Crack 没有评论 | 热度:117 ℃

有很多刚入门的朋友都有个问题 在刚开始练习脱壳时 怎么判断到达OEP了?
不是只要一个大的跳转(JMP之类的)就可以到达OEP了?那是错的
看过天草的教程应该知道 这个所谓大的跳转不是真正意义上的“大”
而是跨区段的跳转 什么是跨区段的跳转?程序都是有区段的 这个大家都很清楚
至于区段的名字只是为了区别区段的作用 名字是什么这个不是很重要
举个简单的例子吧 我们脱个ASPACK的壳 压缩壳一个 基本入门的朋友都可以搞定
看看一个ASPACK的壳的区段 如下

地址              区段
00400000
00401000          .text
00405000          .data
00406000          .idata
00407000          .rsrc
0040C000          .reloc
0040D000          .adata
00411000          .udata

程序载入的代码是在0040D000这里 如果我们是用单步跟踪法(常用的)去调试这个壳

等走到以下一处代码之后 就会发现程序会跨段跳转了 那个0040D564的retn就是跨段跳转

0040D558    61              popad
0040D559    75 08           jnz short ASPACK.0040D563
0040D55B    B8 01000000     mov eax,1
0040D560    C2 0C00         retn 0C
0040D563    50              push eax
0040D564    C3              retn

我们继续单步走到0040D564 然后程序代码会走到如下代码(即OEP)

004010CC    55              push ebp
004010CD    8BEC            mov ebp,esp
004010CF    83EC 44         sub esp,44
004010D2    56              push esi
004010D3    FF15 E4634000   call dword ptr ds:[4063E4]               ; kernel32.GetCommandLineA
004010D9    8BF0            mov esi,eax

代码从0040D000到00401000这就是所谓的跨段跳转 也是我们脱壳到达OEP的简单判断

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

OEP 就是各种编程软件的入口特征,一般有 VC,BC,VB,DELPHI 较为常见

delphi:

55             PUSH EBP
8BEC           MOV EBP,ESP
83C4 F0        ADD ESP,-10
B8 A86F4B00    MOV EAX,PE.004B6FA8

——————————————————————————

vc++

55             PUSH EBP
8BEC           MOV EBP,ESP
83EC 44        SUB ESP,44
56             PUSH ESI

————————————————————————————
vb:

00401166   - FF25 6C104000    JMP DWORD PTR DS:[<&MSVBVM60.#100>]       ; MSVBVM60.ThunRTMain
0040116C >   68 147C4000      PUSH PACKME.00407C14
00401171     E8 F0FFFFFF      CALL <JMP.&MSVBVM60.#100>
00401176     0000             ADD BYTE PTR DS:[EAX],AL
00401178     0000             ADD BYTE PTR DS:[EAX],AL
0040117A     0000             ADD BYTE PTR DS:[EAX],AL
0040117C     3000             XOR BYTE PTR DS:[EAX],AL

————————————————————————————————

bc++

0040163C > $ /EB 10          JMP SHORT BCLOCK.0040164E
0040163E      |66             DB 66                                     ;   CHAR 'f'
0040163F      |62             DB 62                                     ;   CHAR 'b'
00401640      |3A             DB 3A                                     ;   CHAR ':'
00401641      |43             DB 43                                     ;   CHAR 'C'
00401642      |2B             DB 2B                                     ;   CHAR '+'
00401643      |2B             DB 2B                                     ;   CHAR '+'
00401644      |48             DB 48                                     ;   CHAR 'H'
00401645      |4F             DB 4F                                     ;   CHAR 'O'
00401646      |4F             DB 4F                                     ;   CHAR 'O'
00401647      |4B             DB 4B                                     ;   CHAR 'K'
00401648      |90             NOP
00401649      |E9             DB E9
0040164A    . |98E04E00       DD OFFSET BCLOCK.___CPPdebugHook
0040164E    > \A1 8BE04E00    MOV EAX,DWORD PTR DS:[4EE08B]
00401653    .   C1E0 02        SHL EAX,2
00401656    .   A3 8FE04E00    MOV DWORD PTR DS:[4EE08F],EAX
0040165B    .   52             PUSH EDX
0040165C    .   6A 00          PUSH 0                                    ; /pModule = NULL
0040165E    .   E8 DFBC0E00    CALL <JMP.&KERNEL32.GetModuleHandleA>     ; \GetModuleHandleA 

Jquery侧栏、TAB效果

2010年9月29日 jQuery 1 条评论 | 热度:163 ℃

模仿Mapbar的效果,其它地方也有见过的,大家看演示吧!

Bcastr幻灯片调用代码详解

2010年9月29日 Design 没有评论 | 热度:268 ℃

C#操作bcastr.xml代码

2010年9月29日 Design 没有评论 | 热度:55 ℃

微软的10款最佳产品和10款垃圾产品

2010年9月28日 业界观察 1 条评论 | 热度:38 ℃

Android Market 即将增加香港地区

2010年9月28日 业界观察 没有评论 | 热度:38 ℃

谷歌今天迎来12岁生日

2010年9月27日 业界观察 1 条评论 | 热度:36 ℃

Box.net 发布 Android 云存储应用

2010年9月24日 业界观察 2 条评论 | 热度:80 ℃

2010的中秋—潘多拉

2010年9月22日 懒人日志 7 条评论 | 热度:51 ℃

rar3.9注册码

2010年9月22日 Crack 1 条评论 | 热度:109 ℃

Google Docs 新增6种 web 字体支持

2010年9月22日 Vulndb 没有评论 | 热度:51 ℃

老爸老妈看美国

2010年9月21日 业界观察 5 条评论 | 热度:27 ℃

msnshell 5.5.4.28远程代码执行漏洞

2010年9月21日 Vulndb 2 条评论 | 热度:58 ℃

Google 将 Instantiations 制作的 JAVA 开发工具全部免费放出

2010年9月19日 业界观察 3 条评论 | 热度:48 ℃
加载中……