-
-
[原创]一次简单的手动加壳
-
发表于:
2015-12-18 21:09
24052
-
记得来15PB的第一堂课 任老师就告诉我们说要写博客之类的,就算写个:
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
printf("hello world!");
return 0;
}
世界上人那么多 可能就会有一个因为你的文章而受到启发从而信心大增。
然后我开始写了,坚持到现在。
班上其他同学近期也开始写了 嘿嘿
嗯 他们都比我厉害。
-------------------------------------------
准备工具:010editor 、 od 、 vs2012 、 lordpe
自己用VS任意编个程序 以:
#include "stdafx.h"
#include "windows.h"
int _tmain(int argc, _TCHAR* argv[])
{
MessageBox(0,L"Hello World!",L"bbs,pediy.com",MB_OK);
return 0;
}
为例。
将编译好的程序拖入lordpe 点击“区段”-右键“添加区段”:
点击新添加的区段-右键“编辑区段” 更改:
- 虚拟大小:00000200
- 物理大小:00000200
保存-确定。
将文件拖入010 菜单栏点击“编辑”-“覆盖插入”-“插入字节” 由上图新添加区段得
ctrl+s 保存。
我们拖入od 点击E(可执行模块) 得到基址:
00B30000:
可求得新添加区段首地址为
00B4C000 CTRL+G -回车来到此地址处 空格修改:
jmp 00B41078(入口点)
保存命名为:“mesgbox1.exe”。
将新保存的文件拖入lordpe 更改入口点为
1c000:
保存-确定。
为了确定是否修改成功请点击程序是否可以正常运行:
增加代码段“可写入”属性:
拖入010加密:
选中代码段-十六进制的操作(加减号 如图)-二进制xor:
ctrl+s保存
修改后:
防止再次基址重定位 修改dll特征:
拖入OD“解密”:
0041C000 > 60 pushad ; 保存寄存器
0041C001 B9 003C0000 mov ecx,0x3C00 ; 循环次数
0041C006 BB 00100100 mov ebx,0x11000 ; 代码段起始位置
0041C00B BA 00004000 mov edx,mesgbox1.00400000
0041C010 03DA add ebx,edx
0041C012 8033 0F xor byte ptr ds:[ebx],0xF
0041C015 43 inc ebx
0041C016 ^ E0 FA loopdne short mesgbox1.0041C012
0041C018 61 popad ; 恢复寄存器
0041C019 - E9 5A50FFFF jmp mesgbox1.00411078 ; 跳转至入口点
重命名为“mesgbox2.exe”。
点击查看是否可以运行(PS:没成功继续修改 我这里已成功
)。
拖入OD:
完。
-----------------
附件:
附件.rar
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课