pespin 1.33 脱壳机
v1.33 绿色版- 软件大小:146KB
- 软件语言:中文
- 软件类型:国产软件
- 软件类别:免费软件 / 编程工具
- 更新时间:2019-06-01 12:41
- 运行环境:WinAll, WinXP, Win7
-
软件等级:
- 软件厂商:
- 官方网站:暂无
同类相关软件
-
2018AIO Runtime Librariesv(VC++运行库) 免费最新版
5.51M/中文/5.0
-
Advanced ETL Processor v3.9.3.22 官方版
32.59M/英文/10.0
-
Android Development Tools(安卓软件开发工具) v23.0.4 官方最新版
96.24M/中文/10.0
-
amd app sdk v3.0 中文版
105.00M/中文/5.0
-
3秒钟自动配置Access数据源 v2.16 绿色版
6.41M/中文/10.0
软件介绍
PESpin是一款非常好用的加壳exe压缩工具,对多种exe文件进行压缩编辑,使用简单有效执行修补。快来绿色资源网下载体验吧!
PESpin软件介绍
PESpin是一款简单易用功能强大的软件加密程序,它可以为所有的EXE,DLL程序加密,防止软件被解密。
PESpin软件特点
压缩库aPlib的版权保护和编码的约根易卜生主页:/
[attach]53605[/attach]
兼容性Windows?98/ME/NT/2K/XP/Vista
PESpin使用说明
// 本脚本不支持Nanomite修复 ----> hkfans
var sectionbase
mov sectionbase, eip
and sectionbase, FFFFF000
var codebase
var codesize
var lastException
gmi eip, CODEBASE
mov codebase, $RESULT
gmi eip, CODESIZE
mov codesize, $RESULT
//========================================================================
// 双进程解除
//=========================================================================
// 对CreateMutexA的首地址下硬件断点 --- > (不能在首地址下软件断点,有检测)
bphwc
gpa "CreateMutexA", "Kernel32.dll"
bphws $RESULT, "x"
run
bphwc
rtu
bphwc $RESULT
find eip, #9CC12C2406F7142483242401#
bphws $RESULT, "x"
run
bphwc
// 解除双进程,双变成单
mov !ZF,1
run
find eip, #F187DF57C3#
mov lastException, $RESULT+1
// int1异常的处理方法,新EIP --> 有调试进程(父进程处理的),所以根据debugApi处理
add eip, 1E
run
// 两次特权指令 三次内存异常 都是被调试进程自己处理
_exception:
esto
cmp eip, lastException
jnz _exception
// 最后一个单步异常, 由调试进程处理的
add eip, 2B
//===========================================================
// IAT 修复
//===========================================================
bphwc
var bp1
var bp2
var bp3
var encryptTable
var minIatAddr
var maxIatAddr
var iatSize
var compareValue
var pespinFound
//mov bp1, 010147EF
//mov bp2, 0101402D
//mov bp3, 010149B7
//mov encryptTable, 01014079
find sectionbase, #817E10????????9CEB01#
mov bp1, $RESULT
find sectionbase, #2407F5FF3424c30BC0C3#
mov bp2, $RESULT + 7
find sectionbase, #0FBA67FF07EB01#
mov bp3, $RESULT + 5
find sectionbase, #3917EB07??EB01#
mov encryptTable, $RESULT + E
// 获取比较的数值
mov compareValue, bp1+3
mov compareValue, [compareValue]
// NOP掉比较查找是否加密的表
fill encryptTable, 6, 90
bphws bp1, "x"
bphws bp2, "x"
bphws bp3, "x"
_cycle:
run
// 第一个段点 判读所有 DLL是否处理结束
cmp eip, bp1
jnz _bp2Label
cmp [esi+10], compareValue
jz _iatProcessOver
jmp_cycle
// 第二个断点保存 IAT地址 --> 计算出最大和最新的IAT地址(后面用)
_bp2Label:
cmp eip, bp2
jnz _bp3Label
cmp minIatAddr, 0
jnz _label
mov minIatAddr, edx
mov maxIatAddr, edx
_label:
cmp edx, minIatAddr
ja _label1
mov minIatAddr, edx
_label1:
cmp edx, maxIatAddr
jb _label2
mov maxIatAddr, edx
_label2:
jmp _cycle
// 第三个断点 让外壳不重定向API函数
_bp3Label:
mov !CF, 0
jmp _cycle
_iatProcessOver:
//-----------------------------------------------------------
// FF15 FF25 修复--> FF25 jmp [iat]
//-----------------------------------------------------------
//-------------------------------
// 特殊的一种 EA ???????? FF
//-------------------------------
var ff15Addr
var ff25Addr
var 8bAddr
var a1Addr
var ff15Count
var ff25Count
var 8bCount
var iatAddr
var errIatAddr
_findFF25Start:
mov ff25Addr, codebase
_findFF25:
find ff25Addr, #EA????????FF#
mov ff25Addr, $RESULT
cmp ff25Addr, 0
jz _findFF25Start_2
mov iatAddr, [ff25Addr+1]
// 判读IAT地址是否正确
cmp iatAddr, minIatAddr
jb _ff25Out
cmp iatAddr, maxIatAddr
ja _ff25Out
// 修复
mov [ff25Addr], 25FF
mov [ff25Addr+2], iatAddr
inc ff25Count
_ff25Out:
add ff25Addr, 6
jmp _findFF25
//---------------------------------------------
// FF25 [IAT] jmp dword ptr [iat]
//---------------------------------------------
_findFF25Start_2:
mov pespinFound, 0
mov ff25Addr, codebase
_findFF25_2:
find ff25Addr, #FF25#
mov ff25Addr, $RESULT
cmp ff25Addr, 0
jz _findff25PESpinStart_2
mov errIatAddr, [ff25Addr+2]
mov iatAddr, [errIatAddr]
// 判读IAT地址是否正确
cmp iatAddr, minIatAddr
jb _ff25Out_2
cmp iatAddr, maxIatAddr
ja _ff25Out_2
// 修复
mov [ff25Addr+2], iatAddr
inc ff25Count
_ff25Out_2:
add ff25Addr, 2
jmp _findFF25_2
_findff25PESpinStart_2:
cmp pespinFound, 1
jz _findFF15Start
mov ff25Addr, sectionbase
mov pespinFound, 1
jmp _findFF25_2
//-----------------------------------------------
// call dword ptr [iat]
_findFF15Start:
mov pespinFound, 0
mov ff15Addr, codebase
_findFF15:
find ff15Addr, #FF15#
mov ff15Addr, $RESULT
cmp ff15Addr, 0
jz _findff15PESpinStart
// 获取FF15的目的地址,由目的地址获取IAT地址
mov errIatAddr, [ff15Addr+2]
mov iatAddr, [errIatAddr]
// 判读IAT地址是否正确
cmp iatAddr, minIatAddr
jb _ff15Out
cmp iatAddr, maxIatAddr
ja _ff15Out
// 修复
mov [ff15Addr+2], iatAddr
inc ff15Count
_ff15Out:
add ff15Addr, 2
jmp _findFF15
_findff15PESpinStart:
cmp pespinFound, 1
jz _findA1Start
mov ff15Addr, sectionbase
mov pespinFound, 1
jmp _findFF15
//-----------------------------------------------------------
// A1 E6AF5800 mov eax, dword ptr [58AFE6]
// A3 F8C74900 mov dword ptr [49C7F8], eax ;<& kernel32.TlsGetValue>
//-----------------------------------------------------------
_findA1Start:
mov pespinFound, 0
mov a1Addr, codebase
_findA1:
find a1Addr, #A1#
mov a1Addr, $RESULT
cmp a1Addr, 0
jz _finda1PESpinStart
// 获取8B35的目的地址,由目的地址获取IAT地址
mov errIatAddr, [a1Addr+1]
mov iatAddr, [errIatAddr]
// 判读IAT地址是否正确
cmp iatAddr, minIatAddr
jb _A1Out
cmp iatAddr, maxIatAddr
ja _A1Out
// 修复
mov [a1Addr+1], iatAddr
inc 8bCount
_A1Out:
add a1Addr, 1
jmp _findA1
_finda1PESpinStart:
cmp pespinFound, 1
jz _find8BStart
mov a1Addr, sectionbase
mov pespinFound, 1
jmp _findA1
// 被保护程序所在区段 和 外壳所在的区段(OEP)
//------------------------------------------------------------
// 8B35 [IAT] --> mov esi, dword ptr [iat] call esi
// 8B3D [IAT] --> mov edi, dword ptr [iat] call edi
// BYTE: 05 0D 15 1D 25 2D 35 3D
_find8BStart:
mov pespinFound, 0
mov 8bAddr, codebase
// 效率比较差点...
_find8B:
find 8bAddr, #8B#
mov 8bAddr, $RESULT
cmp 8bAddr, 0
jz _find8bPESpinStart
// 获取8B35的目的地址,由目的地址获取IAT地址
mov errIatAddr, [8bAddr+2]
mov iatAddr, [errIatAddr]
// 判读IAT地址是否正确
cmp iatAddr, minIatAddr
jb _8BOut
cmp iatAddr, maxIatAddr
ja _8BOut
// 修复
mov [8bAddr+2], iatAddr
inc 8bCount
_8BOut:
add 8bAddr, 1
jmp _find8B
_find8bPESpinStart:
cmp pespinFound, 1
jz _oepFinder
mov 8bAddr, sectionbase
mov pespinFound, 1
jmp _find8B
//==================================================================
// OEP 查找
//===================================================================
var oep
_oepFinder:
bphwc
// esp定理, 然后向下单步几步就到了
bphws esp+1C, "r"
run
bphwc
// 直接作为EIP,不知道查找什么
mov oep, eip
//===================================================================
// SDK 修复
//===================================================================
var start
var end
var SDK1Count
var SDK2Count
var fixcallCount
var fixjmpCount
SDKFixer:
mov start, codebase
mov tmp, start
_findclearmacro:
find tmp, #9C60B9????????BF????????81E9????????B8????????05????????FF0D????????0011619D#
mov tmp, $RESULT
cmp tmp, 0
jz SDKFixer2
inc SDK1Count
mov eip, tmp
bp tmp+25
run
bc tmp+25
sto
// 修改跳转
mov dest, eip
sub dest, tmp
sub dest, 2
mov [tmp], EB
mov [tmp+1], dest
// 修改被保护代码下面的代码 (找popfd) -->防止删除
findop eip, #9D#
mov tmp, $RESULT
inc tmp
inc tmp
mov dest, [tmp]
and dest, FF
add dest, tmp
add dest, 1
// 固定长度的...
mov [tmp-2F], EB
sub dest, tmp-2F
sub dest, 2
mov [tmp-2E], dest
// 下一个
jmp _findclearmacro
/////////////////////////////////////////////////////////////////////
// SDK第二个宏修复 (这个代码不好搜索,暂时找FF15,并且进入的是EB 01)
SDKFixer2:
var crypt1
var crypt2
mov start, codebase
mov tmp, start
_cryptmacro:
findop tmp, #FF15#
mov tmp, $RESULT
cmp tmp, 0
jz CodeRedirectionFixer
mov crypt1, tmp
// 查看 FF15到的函数的前2个字节是不是EB 01
add tmp, 2
mov dest, [tmp]
mov dest, [dest]
mov dest, [dest]
and dest, FFFF
cmp dest, 01EB
jnz _cryptmacro
inc SDK2Count
// 新建eip
mov eip, tmp-2
// 对原程序的指令下段, 接着call后的是将要解密代码的大小 (4 + 6)
bphws eip+A, "x"
run
bphwc eip
// 查找下一个call, 下一个call为重新加密
find tmp, #FF15????????#
mov tmp, $RESULT
// 修改上一个call为直接跳到 解密后代码
mov [crypt1], 08EB
fill crypt1+2, 8, 90
mov [tmp], 08EB
fill tmp+2, 8, 90
jmp _cryptmacro
//////////////////////////////以下修复code redirection//////////////////////////
CodeRedirectionFixer:
mov start, codebase
// 查找CALL
_findcallstart:
mov tmp, start
_findcall:
findop tmp, #E8#
mov tmp, $RESULT
cmp tmp, 0
jz _findjmpstart
// 判断目的地址是否为 0x1000以下
inc tmp
mov dest, [tmp]
add dest, tmp
add dest, 4
cmp dest, codebase
jb _fixcall
jmp _findcall
_fixcall:
inc fixcallCount
// 修复
inc dest
mov dest1, [dest]
add dest1, dest
add dest1, 4
sub dest1, tmp
sub dest1, 4
mov [tmp], dest1
// 如果相邻的两个会有问题,下一个的call查找不到
add tmp, 4
jmp _findcall
///////////////////////////////////////
// 查找jmp
_findjmpstart:
mov tmp, start
_findjmp:
findop tmp, #E9#
mov tmp, $RESULT
cmp tmp, 0
jz exit
inc tmp
mov dest, [tmp]
add dest, tmp
add dest, 4
cmp dest, codebase
jb _fixjmp
jmp _findjmp
_fixjmp:
inc fixjmpCount
// 修复 都是5个字节 --> 可能不止
var b1
var b2
var longjumpdest
var movsize
var movsize1
var movdest
var srcbyte
mov b1, [dest]
and b1, FF
mov b2, [dest+1]
mov [tmp-1], b1
// 注意: 如果进去的 jmp 语句的话(肯定是E9)--> 不能直接搬
cmp b1, E9
jz _isLongJump
// 确定需要搬多少个字节--> jmp指令之前
findop dest, #E9#
mov movsize, $RESULT
sub movsize, dest
mov movsize1, 0
mov movdest, tmp-1
// 每个字节拷贝
_movcycle:
cmp movsize1, movsize
jz _movover
mov srcbyte, [dest]
and srcbyte, FF
fill movdest, 1, srcbyte
inc dest
inc movdest
inc movsize1
jmp _movcycle
_movover:
jmp _isnotLongJump
_isLongJump:
add longjumpdest, dest
add longjumpdest, b2
add longjumpdest, 4
sub longjumpdest, tmp
sub longjumpdest, 1
sub longjumpdest, 2
mov [tmp], longjumpdest
_isnotLongJump:
add tmp, 4
jmp _findjmp
exit:
bphwc
//=========================================================
// 信息提示
//==========================================================
sub maxIatAddr, minIatAddr
mov iatSize, maxIatAddr+4
var message
mov message, ""
add message, "OEP: "
add message, oep
add message, "\r\n"
add message, "IAT Address: "
add message, minIatAddr
add message, "\r\n"
add message, "IAT Size: "
add message, iatSize
msg message
解压密码:www.downcc.com
软件截图
猜你喜欢脱壳工具
脱壳就是对软件加壳的逆操作,把软件上存在的壳去掉,这款脱壳软件集文件编辑、导入表抓取、进程内存查看等多种实用功能于一体,可以脱任何软件的壳,功能十分强大,这里汇集了各种好用的脱壳软件下载大全,需要的朋友欢迎来绿色资源网下载使用。查看更多>>
脱壳工具
下载地址电脑版
pespin 1.33 脱壳机 v1.33 绿色版
本类最新
相关文章
用户评论
热门评论
最新评论
本类软件分类
本类下载排行
- 总
- 月
- 1.81Visual Studio .NET 2003 ISO简体中文企业版
- 5.12microsoft visual c++6.0安装包 32/64位 win7/win8/win10
- 5.23microsoft .net framework 4.5 v4.5 官方正式版
- 4.24编程软件dev c++安装包 v6.5 官方电脑版
- 1.95msxml 6.10.1129.0 64位 官方安装版 for 32/64位
- 5.16.net framework 4.0 32位 离线安装包
- 4.37Borland Turbo C++ 3.0 完整官方版
- 1.78Microsoft Visual C++ 2010 最新安装版
- 2.09java8 64位官方版 最新免费版
- 6.110dll文件编辑器绿色版(resource hacker) v5.1.8 官方简体中文版
- 1.011keil uvision5注册机 32位/64位
- 8.212jdk8 32位安装包 v8.0.132 官方版
- 5.213鸿蒙os2.0系统(华为harmonyos2.0) 最新正式版
- 6.514猿编程电脑客户端 v3.44.0 pc官方版
- 5.615myeclipse V2023.1.2 官方正式版_附myeclipse6.5注册码及安装方法
本类精品软件
-
vc6.0中文版官方下载 32/64位 win7/win8/win10
51.28M/中文/5.1
-
turbo c3.0官方下载 完整官方版
3.20M/英文/4.3
-
Visual C++ 2010官方下载 最新安装版
4.82M/中文/1.7
-
resource hacker官方下载 v5.1.8 官方简体中文版
2.71M/中文/6.1
-
myeclipse6.5下载 V2023.1.2 官方正式版_附myeclipse6.5注册码及安装方法
1.15KB/英文/5.6
-
vs2008中文版下载 官方简体中文正式版
3690.00M/中文/6.0
-
VC2010运行库完整版下载 官方中文完整版
10.25M/中文/5.2
装机必备软件
-
聊天工具
-
汉字输入
-
安全软件
-
下载工具
-
硬件驱动
-
视频播放
-
音乐播放
-
网络电视
-
办公软件
-
图像处理
-
影音播放
-
影音播放