手脱ACProtect v1.35(有Stolen Code)
1.载入PEID
ACProtect v1.35 -> risco software Inc. & Anticrack Soft
2.载入OD,需要注意的是,异常选项除了[内存访问异常]外其他全部勾选上,然后shift+F9运行至最后一次异常,是1次之后。第二次程序就跑飞了
> pushad ; //入口
7C jl short QQ个性签.
7D jge short QQ个性签.
0B jno short QQ个性签.
C2 66C1 retn 0xC166
0043600A D29E FC4566D3 rcr byte ptr ds:[esi-0x2C99BA04],>
D27403 sal byte ptr ds:[ebx+eax+0x75],cl
add dword ptr ds:[edi+0x66],esi
3.落脚点,落脚后右键点堆栈窗口SE句柄—数据窗口跟随—数据窗口第一行下内存访问断点然后shift+F9
00447B1F CD int 0x1 ; //落脚点
00447B21 inc eax
00447B22 inc eax
00447B23 0BC0 or eax,eax
00447B25 jnz short QQ个性签.00447B2C
00447B27 nop
00447B28 nop 0012FF44 00447B03 SE处理程序 //堆栈窗口 00447B03 0C245C8B //数据窗口第一行
4.落脚点,在落脚点下F2断点,然后shift+F9
00447B03 8B5C24 0C mov ebx,dword ptr ss:[esp+0xC] ; //落脚点
00447B07 B8000000 >add dword ptr ds:[ebx+0xB8],0x2
00447B0E 33C0 xor eax,eax
00447B10 C3 retn
00447B11 ::FF36 push dword ptr fs:[]
00447B17 :: mov dword ptr fs:[],esp
5.落脚点,继续在这里下F2断点,然后shift+F9运行
00447B53 8B048E mov eax,dword ptr ds:[esi+ecx*] ; //落脚点 00447B56 8B5C8E mov ebx,dword ptr ds:[esi+ecx*+>
00447B5A 2BC3 sub eax,ebx
00447B5C C1C0 rol eax,0x7
00447B5F 33C2 xor eax,edx
00447B61 81C2 4B3DF129 add edx,0x29F13D4B
6.落脚点,先清除刚刚下的2个F2断点和1个内存访问断点,然后在最近的retn处F4
00447B67 89048E mov dword ptr ds:[esi+ecx*],eax ; //落脚点
00447B6A dec ecx
00447B6B ^ EB E1 jmp short QQ个性签.00447B4E
00447B6D popad
00447B6E popad
00447B6F C3 retn ; //F4
00447B70 add byte ptr ds:[eax],al
7.在无StolenCode的帖子中已经说过,正常情况下接下来是在内存窗口的401000处下段然后shift+F9运行就可以到OEP了,但是我们这个壳你这样操作后会发现OEP处的代码好像不对劲,因为被抽取过了,我们要做的是点[调试]按钮—设置条件,或者使用快捷键ctrl+T,在弹出来的界面勾选最下面一个然后输入被偷取的代码,我使用的ximo教程里的壳,被偷取的代码为”push ebp”,输入完后点确定,然后使用快捷键ctrl+F11跟踪步入(或者点[调试]–跟踪步入)
8.找到了我们被偷取的代码,在这个壳中被偷取了三行代码,选中这三行,二进制复制
004254C8 popad
004254C9 push ebp ; //被偷取1
004254CA 8BEC mov ebp,esp ; //被偷取2
004254CC 83EC sub esp,0x44 ; //被偷取3
004254CF pushad
004254D0 pushad 8B EC EC //二进制复制出来的,一共6个字节
9.然后到内存窗口,在401000处下断F2,然后shift+F9运行来到假的OEP,向上找6个字节(看代码第二列,两位为一个字节),然后右键–二进制—使用nop填充,填充完毕后再数6个字节,然后使用二进制粘贴
004010D2 push esi
004010D3 FF15 E4634000 call dword ptr ds:[0x4063E4] ; //假的OEP
004010D9 8BF0 mov esi,eax
004010DB 8A00 mov al,byte ptr ds:[eax]
004010DD 3C cmp al,0x22
004010DF 1B jnz short notepad9.004010FC
004010E1 push esi
10.此时OEP已经补充完整了,接着右键点’push ebp’哪一行—点[此处新建EIP]然后就可以脱壳了,脱壳注意[重建输出表]这一项不勾选,脱壳后使用ImportREC修复,我在脱壳的过程中出现过修复失败的情况,这种情况我一般都是用ImportREC上修复的插件或者别的版本的ImportREC来修复,可以都试试。
004010CC push ebp
004010CD 8BEC mov ebp,esp
004010CF 83EC sub esp,0x44
004010D2 push esi
004010D3 FF15 E4634000 call dword ptr ds:[0x4063E4] ; notepad9.0040D1BA
004010D9 8BF0 mov esi,eax ; kernel32.BaseThreadInitThunk
004010DB 8A00 mov al,byte ptr ds:[eax]
004010DD 3C cmp al,0x22
004010DF 1B jnz short notepad9.004010FC
004010E1 push esi
11.运行查壳
运行OK,查壳:Microsoft Visual C++ v6.0 SPx
手脱ACProtect v1.35(有Stolen Code)的更多相关文章
- 手脱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.4X(有Stolen Code)之补区段
首先需要说的是,这个壳是ximo大神视频教程里的 0041F000 > pushad ; //程序入口点 0041F001 E8 call NgaMy.0041F007 0041F006 E8 ...
- 手脱ACProtect V1.4X(有Stolen Code)
1.载入PEID ACProtect V1.4X -> risco 首先需要说明的是,这个壳被偷取的代码非常多,如果去找的话会比较麻烦,所以我们换一种另类的方法,不脱壳也可以使用资源修改器对程序 ...
- 手脱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 ...
随机推荐
- Python os.makedirs() 方法
os.makedirs() 方法用于递归创建目录.像 mkdir(), 但创建的所有intermediate-level文件夹需要包含子目录. 语法 makedirs()方法语法格式如下: os.ma ...
- Adobe InDesign CS6自学入门到高级视频教程
关键字:Adobe InDesign 视频教程 点击获取视频教程 教程目录 第1章/1.卸载InDesign CS6.avi 第1章/2.安装InDesign CS6.avi 第2章/1.创建并编辑自 ...
- jQuery 判断浏览器
jQuery 浏览器判断,jQuery提供了一个 jQuery.browser 方法 来判断浏览器 可用值: safari opera msie mozilla 例如:if($.brows ...
- c# ms chart 控件使用方法
第一个简单的chart: spline// Create new data series and set it's visualattributes Series series = new ...
- python基础知识-03-字符串
python其他知识目录 1.for循环遍历字符串中单个字符 s_str="mcw" for i in s_str: print(i) -----------结果: m c w 2 ...
- 数据库与数据仓库的比较Hbase——Hive
数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented).集成的(Integrate).相对稳定的(Non-Volatile).反映历史变化(Time Varian ...
- Tempter of the Bone HDU 1010(DFS+剪枝)
Problem Description The doggie found a bone in an ancient maze, which fascinated him a lot. However, ...
- Beta阶段第二次网络会议
Beta阶段第二次网络会议 第一次会议问题解决情况 画面问题已经解决,游戏提示信息已加入完成 不同情况下背景已加入完成,但细节部分仍需要进行调整 科技树添加完成,权限修改完成,还存在部分细节调整 AI ...
- Pyhont:内建函数enumerate
1.enumerate的中文意思 2.enumerate参数为可遍历的变量,如字符串.列表等,其返回值为enumerate类. 3.enumerate多用在for循环中得到计数 . [注]:若在for ...
- Objective-C Json转Model(利用Runtime特性)
封装initWithNSDictionary:方法 该方法接收NSDictionary对象, 返回PersonModel对象. #pragma mark - 使用runtime将JSON转成Model ...