UPX3.03外壳段处理历程全程解析[网络技术]
本文“UPX3.03外壳段处理历程全程解析[网络技术]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
解析的不是很好,有些东西没表达清楚,大家自己解析一哈,这个程序是我自己写的个进程管理,还没写完....
UPX3.03加壳,加壳时选了加密处理,高级导入保护,模拟系统尺度功效,但是再外壳段仿佛并没见到这几个功效.
先来个CALL公式,等会要用到.具体见附件,自己解析哈
代码:
CALL 地址计算公式:CALL下条指令开始 + E8背面的绝对偏移 = 目标地址
比方 00401B2C是当前地址,5是CALL机械码的长度;E8 CF 00 00 00是机械码
计算: 00401B2C+5+CF=00401C00 E8 CF 00 00 00就是表示CALL 00401C00.
例二: 00401B3B |. E8 C0270000 CALL decode.00404300
00401B3B+5+27C0=00404300,地址就是:CALL 00404300
例三: 00401B5F |. E8 3C1B0000 CALL decode.004036A0
00401B5F+5+1B3C=004036A0,地址就是:CALL 004036A0
00401B5F+5=下条指令开始的地址,向后移动1B3C就是目标指令的开始地址
00417550 > $ 60 PUSHAD
00417551 . BE 15604100 MOV ESI,进程管理.00416015
00417556 . 8DBE EBAFFEFF LEA EDI,DWORD PTR DS:[ESI+FFFEAFEB] ; 得到代码段的开始地址放在EDI里面
0041755C . 57 PUSH EDI
0041755D . EB 0B JMP SHORT 进程管理.0041756A
0041755F 90 NOP
00417560 > 8A06 MOV AL,BYTE PTR DS:[ESI] ; 目前解析得知00416015这个地址是我们程序代码段的开始地址,被映射到这里了,取出映射的代码的一字节
00417562 . 46 INC ESI ; 指向我们代码的下个字节
00417563 . 8807 MOV BYTE PTR DS:[EDI],AL ; EDI目前是从00401000开始的,把映射的代码放入本来我们代码的地址,那么目前知道在开始代码复原了
00417565 . 47 INC EDI ; 指向我们代码的下个地址,以便存放下个字节
00417566 > 01DB ADD EBX,EBX ; EBX+EBX,当EBX不等于0的时刻就跳,那么下面假如进位加法为0,那么取出下个地址到EBX
00417568 . 75 07 JNZ SHORT 进程管理.00417571
0041756A > 8B1E MOV EBX,DWORD PTR DS:[ESI] ; 00416015这个地址放到EBX里面,
0041756C . 83EE FC SUB ESI,-4 ; 00416015加4
0041756F . 11DB ADC EBX,EBX ; 进位加法器
[1] [2] [3] [4] [5] [6] [7] [8] 下一页
以上是“UPX3.03外壳段处理历程全程解析[网络技术]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |