手脱ACProtect V1.4X(有Stolen Code)
1.载入PEID
ACProtect V1.4X -> risco
首先需要说明的是,这个壳被偷取的代码非常多,如果去找的话会比较麻烦,所以我们换一种另类的方法,不脱壳也可以使用资源修改器对程序进行修改。先来看下被偷取的代码
0040A41E >/$ push ebp
0040A41F |. 8BEC mov ebp,esp
0040A421 |. 6A FF push -
0040A423 |. C8CB4000 push 跑跑排行.0040CBC8
0040A428 |. A4A54000 push <jmp.&MSVCRT._except_handler3> ; Entry address; SE handler installation
0040A42D |. :A1 >mov eax,dword ptr fs:[]
0040A433 |. push eax
0040A434 |. : >mov dword ptr fs:[],esp
0040A43B |. 83EC sub esp,
0040A43E |. push ebx
0040A43F |. push esi
0040A440 |. push edi
0040A441 |. E8 mov [local.],esp
0040A444 |. 33DB xor ebx,ebx
0040A446 |. 895D FC mov [local.],ebx
0040A449 |. 6A push
0040A44B |. FF15 BCC24000 call dword ptr ds:[<&MSVCRT.__set_app_ty>; msvcrt.__set_app_type
0040A451 |. pop ecx
0040A452 |. 830D F0FF4000>or dword ptr ds:[40FFF0],FFFFFFFF
0040A459 |. 830D F4FF4000>or dword ptr ds:[40FFF4],FFFFFFFF
0040A460 |. FF15 C0C24000 call dword ptr ds:[<&MSVCRT.__p__fmode>] ; msvcrt.__p__fmode
0040A466 |. 8B0D D0FF4000 mov ecx,dword ptr ds:[40FFD0]
0040A46C |. mov dword ptr ds:[eax],ecx
0040A46E |. FF15 C4C24000 call dword ptr ds:[<&MSVCRT.__p__commode>; msvcrt.__p__commode
0040A474 |. 8B0D CCFF4000 mov ecx,dword ptr ds:[40FFCC]
0040A47A |. mov dword ptr ds:[eax],ecx
0040A47C |. A1 C8C24000 mov eax,dword ptr ds:[<&MSVCRT._adjust_f>
0040A481 |. 8B00 mov eax,dword ptr ds:[eax]
2.载入OD,异常选项不勾选INT3选项,隐藏OD,吾爱官方现在的OD隐藏OD在strongOD里面,还是使用最后一次异常法shift+F9一次,第二次就会跑飞了,注意,这个壳对OD检测比较严格,所以可能需要多试几次才能成功,只要运行一次就是最后一次异常了,第二次就会跑飞了
3.最后一次异常的落脚点,落脚后堆栈窗口右键点SE句柄—数据窗口跟随,然后数据窗口下内存访问断点,然后shift+F9运行一次
0043D74D CD int 0x1 ; //F9落脚点
0043D74F inc eax
0043D750 inc eax
0043D751 0BC0 or eax,eax
0043D753 jnz short 跑跑排行.0043D75A
0043D755 nop 0012FEC8 0043D731 SE处理程序 0043D731 0C245C8B //数据窗口跟随
4.落脚后,在落脚点下F2断点,然后shift+F9运行一次
0043D731 8B5C24 0C mov ebx,dword ptr ss:[esp+0xC] ; //落脚点
0043D735 B8000000 >add dword ptr ds:[ebx+0xB8],0x2
0043D73C 33C0 xor eax,eax
0043D73E C3 retn
0043D73F ::FF36 push dword ptr fs:[]
0043D745 :: mov dword ptr fs:[],esp
0043D74B 33C0 xor eax,eax
5.落脚后再次再落脚点下F2断点,然后shift+F9运行一次
0043D781 8B048E mov eax,dword ptr ds:[esi+ecx*] ; //落脚点
0043D784 8B5C8E mov ebx,dword ptr ds:[esi+ecx*+0x4]
0043D788 2BC3 sub eax,ebx
0043D78A C1C0 rol eax,0x6
0043D78D 03C2 add eax,edx
0043D78F 81F2 80657CA3 xor edx,0xA37C6580
6.然后来到这里,先清除所有断点(两个F2断点,一个内存访问断点),然后F4运行到retn位置
0043D795 89048E mov dword ptr ds:[esi+ecx*],eax ; //落脚点
0043D798 dec ecx
0043D799 ^ EB E1 jmp short 跑跑排行.0043D77C
0043D79B popad
0043D79C popad
0043D79D C3 retn ; //F4
0043D79E add byte ptr ds:[eax],al
0043D7A0 add byte ptr ds:[eax],al
7.打开内存窗口在401000位置下内存断点然后shift+F9运行一次
Memory map, 条目
地址=
大小=0000B000 (.)
属主=跑跑排行
区段=.text
包含=代码
类型=Imag
访问=R
初始访问=RWE
8.来到假的OEP
0040A483 A3 ECFF4000 mov dword ptr ds:[40FFEC],eax ; //假的OEP
0040A488 E8 call 跑跑排行.0040A5A3
0040A48D 391D 90FE4000 cmp dword ptr ds:[40FE90],ebx
0040A493 0C jnz short 跑跑排行.0040A4A1
0040A495 A0A54000 push 跑跑排行.0040A5A0
0040A49A FF15 CCC24000 call dword ptr ds:[40C2CC] ; msvcrt.__setusermatherr
0040A4A0 pop ecx
0040A4A1 E8 E8000000 call 跑跑排行.0040A58E
0040A4A6 1CF04000 push 跑跑排行.0040F01C
0040A4AB 18F04000 push 跑跑排行.0040F018
9.重新载入要脱壳的程序,入口点是一个pushad入栈,下一行使用ESP运行到最后一次异常,正常情况应该是第16次就跑飞了,15次是一个大跳转,所以我们运行到第14次就可以了
0042C000 > pushad ; //入口点
0042C001 E8 call 跑跑排行.0042C007 ; //ESP
0042C006 - jns short 跑跑排行.0042BF8B
0042C008 add al,0x24
0042C00A push es
0042C00B C3 retn
0042C00C E8 call 跑跑排行.0042C012
10.程序落脚点应该是这个位置,我们在这个地方使用LoadPE+ImoprtREC进行脱壳,需要注意的是,使用ImoprtREC修复过程中,我们首先需要填入的地址应该是假的OEP地址0040A483-00400000也就是A483(这个原因大家都应该懂得),然后修复完成后先不急着转存,把OEP地址换成ESP最后一次异常落脚点的地址,也就是41E4D(减去00400000基址的地址)。然后再进行转存,其实这样是没有把壳脱掉的,不过已经达到我们的目的了,可以使用资源修改软件对程序进行修改破解了。所以再实在不好脱壳的时候考虑下这种方式也是蛮好的
00441E4D :A1 mov eax,dword ptr fs:[] ; //在这里脱壳
00441E53 39CA4200 mov dword ptr ds:[0x42CA39],eax
00441E59 FF35 39CA4200 push dword ptr ds:[0x42CA39]
00441E5F 8F05 71CA4200 pop dword ptr ds:[0x42CA71]
00441E65 FF35 71CA4200 push dword ptr ds:[0x42CA71]
00441E6B 891C24 mov dword ptr ss:[esp],ebx
00441E6E mov dword ptr ss:[esp],eax
手脱ACProtect V1.4X(有Stolen Code)的更多相关文章
- 手脱ACProtect V1.4X(有Stolen Code)之补区段
首先需要说的是,这个壳是ximo大神视频教程里的 0041F000 > pushad ; //程序入口点 0041F001 E8 call NgaMy.0041F007 0041F006 E8 ...
- 手脱ACProtect v1.35(无Stolen Code)之二
首先,想说明的是这个壳在我的PC上是可以用上一个帖子中的方法来到假的OEP的:http://www.52pojie.cn/forum.php?mod=viewthread&tid=433462 ...
- 手脱ACProtect v1.35(有Stolen Code)
1.载入PEID ACProtect v1.35 -> risco software Inc. & Anticrack Soft 2.载入OD,需要注意的是,异常选项除了[内存访问异常] ...
- 手脱ACProtect v1.35(无Stolen Code)
1.载入PEID ACProtect v1.35 -> risco software Inc. & Anticrack Soft 2.载入OD,需要注意的是,异常选项除了[内存访问异常] ...
- 手脱ACProtect V2.0(无Stolen Code)
1.载入PEID ACProtect V2.0 -> risco 2.载入OD > 00A04000 push ACP_Feed.0040A000 ; //入口点 0B104000 pus ...
- 手脱ASProtect v1.2(无Stolen Code)
1.载入PEID ASProtect v1.2 2.载入OD > 01C04200 push 跑跑赛道.0042C001 ; //入口处 C3 retn AA stos byte ptr es: ...
- 手脱ASProtect v1.23 RC1(有Stolen Code)之以壳解壳
1.载入PEID ASProtect v1.23 RC1 2.载入OD,不勾选内存访问异常,其他异常全部勾选 > 01C06D00 push SoWorker.006DC001 ; //入口点 ...
- 手脱ASProtect v1.23 RC1(有Stolen Code)
1.载入PEID ASProtect v1.23 RC1 常见ASprotect版本壳: ASProtect 1.23 RC4 按shift+f9键26次后来到典型异常 ASProtect 1.31 ...
- 手脱ASProtect v1.23 RC1(无Stolen Code)
1.载入PEID ASProtect v1.23 RC1 2.载入OD,不勾选内存访问异常,其他异常全部勾选 > 01C04200 push 跑跑排行.0042C001 ; //入口处 E8 c ...
随机推荐
- Spark mlib的本地向量
Spark mlib的本地向量有两种: DenseVctor :稠密向量 其创建方式 Vector.dense(数据) SparseVector :稀疏向量 其创建方式有两种: 方法一:Vector. ...
- Python最长连续数列的O(n)解法
题目 输入一个乱序的连续数列,输出其中最长连续数列长度,要求算法复杂度为 O(n) . 输入样例 100,4,200,1,3,2 54,55,300,12 1 5,4,3,2,1 1,2,3,4,5, ...
- How Does Batch Normalization Help Optimization?
1. 摘要 BN 是一个广泛应用的用于快速稳定地训练深度神经网络的技术,但是我们对其有效性的真正原因仍然所知甚少. 输入分布的稳定性和 BN 的成功之间关系很小,BN 对训练过程更根本的影响是:它让优 ...
- 五:Edits Viewer离线日志查看器
离线日志查看器可以将二进制日志翻译成可读的文件(如XML),只有当hadoop集群停止时才能使用.输入文件支持的类型:XML和二进制.输出文件支持类型:XML 二进制 Stats(标准输出?) ...
- [leetcode-775-Global and Local Inversions]
We have some permutation A of [0, 1, ..., N - 1], where N is the length of A. The number of (global) ...
- HDU 3260/POJ 3827 Facer is learning to swim(DP+搜索)(2009 Asia Ningbo Regional)
Description Facer is addicted to a game called "Tidy is learning to swim". But he finds it ...
- 第十七次ScrumMeeting会议
第十七次Scrum Meeting 时间:2017/12/7 地点:线上+主235 人员:蔡帜 王子铭 游心 解小锐 王辰昱 李金奇 杨森 陈鑫 赵晓宇 照片: 目前工作进展 名字 今日 明天的工作 ...
- VS2013运行C++报错:This function or variable may be unsafe. Consider using fopen_s instead.
在vs2013中运行时发生的关于方法调用的不安全错误. 1.更换方法,但是有些方法更改后参数不变,所以可能比较麻烦. 2.添加一条预处理器定义: 点击项目——>属性——>c/c++——&g ...
- 后端设置cookie写不到前端页面
javax.servlet.http.Cookie cookie = new javax.servlet.http.Cookie("id",session.getId()); co ...
- C# 创建Excel或需不安装Office
第一种.Aspose.Cells.dll //如果需要饶过office Excel那么就看我最后的实现方法吧~! //我最后的实现是使用的第三方Aspose.Cells.dll //具了解这个dll一 ...