欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[原创]一次简单的手动加壳

[原创]一次简单的手动加壳


#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 菜单栏点击“编辑”-“覆盖插入”-“插入字节” 由上图新添加区段得

  • 起始地址:7A00
  • 大小:200


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

上传的附件 1.png
2.png
3.png
4.png
5.png
6.png
7.png
8.png
9.png
10.png
可写入.png
11.png
13.png
附件.rar

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功