当前位置: 首页 > news >正文

脱壳常用编程语言的OEP

一、 Microsoft Visual C++ 6.0

; 标准 OEP 特征
00401000    55              PUSH EBP
00401001    8BEC            MOV EBP,ESP
00401003    6A FF           PUSH -1
00401005    68 XXXXXXXX     PUSH 004C0618        ; 模块特定地址
0040100A    68 XXXXXXXX     PUSH 004736F8        ; SEH 处理程序
0040100F    64:A1 00000000  MOV EAX,DWORD PTR FS:[0]
00401015    50              PUSH EAX
00401016    64:8925 00000000 MOV DWORD PTR FS:[0],ESP
0040101D    83EC 58         SUB ESP,58           ; 平衡堆栈(常见 0x58/0x68); API 特征:第一个调用 GetVersion()
004010XX    E8 XXXXXXXX     CALL <JMP.&kernel32.GetVersion>

二、Visual Studio 2010-2013 

; VS2010/2013 Release 版本 OEP
00401234    E8 XXXXXXXX     CALL <security_init_cookie>
00401239    E9 XXXXXXXX     JMP <scrt_common_main_seh>; 或 VS2013 优化版本
00401234    E8 XXXXXXXX     CALL 00401300        ; call _security_init_cookie
00401239    E9 XXXXXXXX     JMP 00401000         ; jmp _scrt_common_main_seh; 内部特征(跟进第二个跳转)
00401000    6A 14           PUSH 14
00401002    68 XXXXXXXX     PUSH 00407000
00401007    E8 XXXXXXXX     CALL __SEH_prolog4
0040100C    ...             ; 后续调用 GetStartupInfoW 等

三、Visual Studio 2015+ (VS2019/2022)

; VS2019 Release 特征
00401500    E8 XXXXXXXX     CALL 00401600        ; _security_init_cookie
00401505    E9 XXXXXXXX     JMP 00401000         ; _scrt_common_main_seh; 内部特征
00401000    48:83EC 28      SUB RSP,28           ; x64 汇编
00401004    E8 XXXXXXXX     CALL __scrt_common_main_seh
00401009    90              NOP; 或 x86 版本
00401000    6A 14           PUSH 14
00401002    68 XXXXXXXX     PUSH 00402000
00401007    E8 XXXXXXXX     CALL __SEH_prolog4_GS
0040100C    FF15 XXXXXXXX   CALL DWORD PTR DS:[<&QueryPerformanceCounter>]

四、Borland Delphi 6.0-7.0

; Delphi 标准 OEP
00401000    55              PUSH EBP
00401001    8BEC            MOV EBP,ESP
00401003    83C4 F0         ADD ESP,-10          ; 关键特征!
00401006    53              PUSH EBX
00401007    56              PUSH ESI
00401008    57              PUSH EDI
00401009    33C0            XOR EAX,EAX
0040100B    8945 F0         MOV DWORD PTR SS:[EBP-10],EAX
0040100E    B8 XXXXXXXX     MOV EAX,00409720
00401013    E8 XXXXXXXX     CALL 0040694C        ; 初始化调用
00401018    A1 XXXXXXXX     MOV EAX,DWORD PTR DS:[0040C8AC]
0040101D    8B00            MOV EAX,DWORD PTR DS:[EAX]
0040101F    E8 XXXXXXXX     CALL 00402BC8        ; 调用 GetModuleHandle

五、Borland C++ Builder

; BC++ 1999 特征
00401000    EB 10           JMP SHORT 00401012   ; 先跳转
00401002    62 3A           BOUND EDI,DWORD PTR DS:[EDX]  ; 花指令/垃圾数据
00401004    43              INC EBX
00401005    2B 2B           SUB EBP,DWORD PTR DS:[EBX]
00401007    48              DEC EAX
00401008    4F              DEC EDI
00401009    4F              DEC EDI
0040100A    4B              DEC EBX
0040100B    90              NOP
0040100C    E9 XXXXXXXX     JMP 0097157A         ; 远跳转
00401011    8B0D XXXXXXXX   MOV ECX,DWORD PTR DS:[57008B]
00401017    C1E1 02         SHL ECX,2
0040101A    890D XXXXXXXX   MOV DWORD PTR DS:[57008F],ECX
00401020    52              PUSH EDX
00401021    6A 00           PUSH 0               ; /pModule = NULL
00401023    E8 XXXXXXXX     CALL <JMP.&kernel32.GetModuleHandleA>

六、Visual Basic 5.0/6.0

; VB5/VB6 标准 OEP(两种形式); 形式 1:JMP 到 MSVBVM60.dll
00401000    FF25 XXXXXXXX   JMP DWORD PTR DS:[<&MSVBVM60.#100>]  ; ThunRTMain
00401006    90              NOP; 形式 2:PUSH + CALL
00401000    68 XXXXXXXX     PUSH 00407C14        ; VB 头结构地址
00401005    E8 XXXXXXXX     CALL <JMP.&MSVBVM60.ThunRTMain>      ; 关键调用
0040100A    0000            ADD BYTE PTR DS:[EAX],AL
0040100C    0000            ADD BYTE PTR DS:[EAX],AL
0040100E    0000            ADD BYTE PTR DS:[EAX],AL
00401010    3400            XOR AL,0

七、MASM32 / TASM32

; MASM32 标准 OEP
00401000    6A 00           PUSH 0               ; /pModule = NULL
00401002    E8 XXXXXXXX     CALL <JMP.&kernel32.GetModuleHandleA>
00401007    A3 00304000     MOV DWORD PTR DS:[403000],EAX
0040100C    6A 00           PUSH 0               ; /lParam = NULL
0040100E    68 XXXXXXXX     PUSH 004010DF        ; |DlgProc = 004010DF
00401013    6A 00           PUSH 0               ; |hOwner = NULL
00401015    6A 65           PUSH 65              ; |pTemplate = 65
00401017    FF35 00304000   PUSH DWORD PTR DS:[403000] ; |hInst
0040101D    E8 XXXXXXXX     CALL <JMP.&user32.DialogBoxParamA>; 或简单控制台程序
00401000    6A F6           PUSH -0A             ; /nStdHandle = STD_OUTPUT_HANDLE
00401002    E8 XXXXXXXX     CALL <JMP.&kernel32.GetStdHandle>
00401007    A3 00304000     MOV DWORD PTR DS:[403000],EAX

八、易语言

; 易语言 OEP(类似 VC6)
00401000    E8 06000000     CALL 0040100B        ; 初始化
00401005    50              PUSH EAX
00401006    E8 XXXXXXXX     CALL <JMP.&kernel32.ExitProcess>
0040100B    55              PUSH EBP             ; 实际 OEP 开始
0040100C    8BEC            MOV EBP,ESP
0040100E    81EC 10010000   SUB ESP,110
00401014    E9 XXXXXXXX     JMP 0040109C
00401019    0F8F6C          IMUL ESI,DWORD PTR DS:[EDX+6E],6C
0040101D    6F              OUTS DX,DWORD PTR ES:[EDI]  ; 花指令

九、PowerBuilde

; PB 标准 OEP
00401000    55              PUSH EBP
00401001    8BEC            MOV EBP,ESP
00401003    53              PUSH EBX
00401004    56              PUSH ESI
00401005    57              PUSH EDI
00401006    BB 00416000     MOV EBX,00416000
0040100B    66:0F1F4422 00  NOP WORD PTR CS:[EDX+22],AX  ; 填充指令
00401011    D9EE            FLDZ
00401013    0000            ADD BYTE PTR DS:[EAX],AL
00401015    6A 00           PUSH 0               ; /pvReserved = NULL
00401017    FF15 XXXXXXXX   CALL DWORD PTR DS:[<&ole32.CoInitialize>]
0040101D    E8 EEFFFFFF     CALL 00401010
00401022    C705 XXXXXXXX 0>MOV DWORD PTR DS:[00416108],1
0040102C    8D83 90020000   LEA EAX,DWORD PTR DS:[EBX+290]
00401032    50              PUSH EAX             ; /pVersionInformation
00401033    FF93 XXXXXXXX   CALL DWORD PTR DS:[<&kernel32.GetVersionExA>]

十、Python 打包程序

; PyInstaller 单文件模式
00401000    60              PUSHAD               ; 解压/加载壳
00401001    E8 00000000     CALL 00401006
00401006    5B              POP EBX
00401007    81EB 06104000   SUB EBX,00401006
0040100D    ...             ; 解压 Python 运行时
...
00402000    55              PUSH EBP             ; Python 解释器 OEP
00402001    8BEC            MOV EBP,ESP
00402003    6A FF           PUSH -1
00402005    68 XXXXXXXX     PUSH PyInstaller.004XXXXX
0040200A    68 XXXXXXXX     PUSH PyInstaller.004XXXXX ; SE 处理程序
0040200F    64:A1 00000000  MOV EAX,DWORD PTR FS:[0]

十一、NET 程序

; .NET 程序 OEP(由 CLR 调用)
00402000    FF25 XXXXXXXX   JMP DWORD PTR DS:[<&_CorExeMain>]  ; mscoree.dll
00402006    90              NOP
00402007    90              NOP; 或 .NET Core
00402000    48:83EC 28      SUB RSP,28
00402004    48:8B05 XXXXXXXX MOV RAX,QWORD PTR DS:[<&coreclr.dll>]
0040200B    FF15 XXXXXXXX   CALL QWORD PTR DS:[<&coreclr_execute_assembly>]

十二、Go 语言程序

; Go 程序 OEP(较复杂)
00401000    4C:8D4424 08     LEA R8,QWORD PTR SS:[RSP+8]
00401005    48:8D0D XXXXXXXX LEA RCX,QWORD PTR DS:[0044A000]  ; 参数块
0040100C    48:89 44 24 08   MOV QWORD PTR SS:[RSP+8],RAX
00401011    48:8B 44 24 08   MOV RAX,QWORD PTR SS:[RSP+8]
00401016    48:89 44 24 10   MOV QWORD PTR SS:[RSP+10],RAX
0040101B    E8 XXXXXXXX      CALL runtime.rt0_go                ; Go 运行时初始化; runtime.rt0_go 内部
0044A000    48:83EC 40       SUB RSP,40
0044A004    48:89 6C 24 38   MOV QWORD PTR SS:[RSP+38],RBP
0044A009    48:8D6C24 38     LEA RBP,QWORD PTR SS:[RSP+38]
0044A00E    ...              ; 初始化 Go 运行时
0044A050    E8 XXXXXXXX      CALL main.main                     ; 用户 main 函数
| 语言/编译器      | 入口特征                               | 关键指令/API                  | IAT 调用  |
| ----------- | ---------------------------------- | ------------------------- | ------- |
| **VC6**     | `PUSH EBP`                         | `GetVersion`              | `FF 15` |
| **VS2010+** | `CALL + JMP`                       | `GetSystemTimeAsFileTime` | `FF 15` |
| **Delphi**  | `PUSH EBP` + `ADD ESP,-10`         | `GetModuleHandle`         | `FF 25` |
| **BC++**    | `JMP` + 垃圾数据                    | `GetModuleHandleA`        | `FF 25` |
| **VB6**     | `PUSH` + `CALL ThunRTMain`         | `MSVBVM60.ThunRTMain`     | `FF 25` |
| **MASM32**  | `PUSH 0` + `CALL GetModuleHandleA` | `GetModuleHandleA`        | `FF 15` |
| *易语言      | `CALL` + `PUSH EAX` 或 `PUSH EBP`  | 类似 VC6                   | `FF 15` |
| **PB**      | `PUSH EBP` + `CoInitialize`        | `CoInitialize`            | `FF 15` |
| **Python**  | `PUSHAD`(解压壳)                   | Python 解释器              | 混合    |
| **.NET**    | `JMP _CorExeMain`                  | `_CorExeMain`             | `FF 25` |
| **Go**      | `LEA` + `CALL runtime.rt0_go`      | `runtime.rt0_go`          | 内部链接|

####快速定位 OEP

; 根据编译器类型下 API 断点
VC6: bp GetVersion
VS2013+: bp GetSystemTimeAsFileTime 或 bp QueryPerformanceCounter
Delphi: bp GetModuleHandleA
VB6: bp ThunRTMain (在 MSVBVM60.dll 中)
MASM32: bp GetModuleHandleA

 

http://www.jsqmd.com/news/361543/

相关文章:

  • 2026年诚信的金属工艺品徽章,文创金属工艺品,金属工艺品奖牌厂家口碑供应商推荐榜 - 品牌鉴赏师
  • P13085 [SCOI2009] windy 数(加强版)
  • 2026年北京监理公司推荐:数字化转型趋势评测,涵盖基建与更新场景合规痛点 - 品牌推荐
  • 2026年徐汇区助听器专卖店推荐:基于专业验配与长期服务维度的深度评价榜单 - 品牌推荐
  • 2026年口碑好的烧结透水砖,烧结陶土砖,烧结路面砖厂家选购决策指南 - 品牌鉴赏师
  • 2026年知名的天然气加热器/管道加热器哪家质量好厂家实力参考 - 行业平台推荐
  • 2026年北京监理公司推荐榜单:覆盖多类重大工程、90%客户续约率的五强权威认证 - 品牌推荐
  • 2026年评价高的陶瓷仿石砖,pc仿石砖,外墙仿石砖厂家行业实力推荐 - 品牌鉴赏师
  • 国产vs进口:回转炉主流品牌推荐清单 - 品牌推荐大师1
  • 算算太原欧米奇西点西餐学校费用,性价比究竟高不高 - myqiye
  • 2026年口碑好的化妆品级云母粉/滁州塑料用云母粉用户口碑认可参考(高评价) - 行业平台推荐
  • 2026年贵州美发培训学校权威推荐:静莎领衔五大优质学校选择! - 深度智识库
  • 2026年靠谱的超临界CO₂萃取设备/超临界CO₂萃取怎么选真实参考销售厂家参考 - 行业平台推荐
  • 2026年陕西找高价收车服务,带上门电话的公司哪家强 - mypinpai
  • 主题爬虫采集主题新闻信息 - 详解
  • 2026年比较好的静音四段力铰链/耐用四段力铰链生产厂家实力参考哪家强(更新) - 行业平台推荐
  • 2026 合肥英语雅思培训教育机构推荐,雅思培训课程中心权威口碑榜单 - 老周说教育
  • 2026年评价高的pp实验台,定制实验台,实验室实验台厂家选型参考手册 - 品牌鉴赏师
  • 智推时代GEO上海区域合作速查:2026官方认证联系方式与真伪鉴别技巧 - 速递信息
  • 2026浙江地区不错的营养早餐店推荐,一鸣食品实力不容小觑 - 工业设备
  • 聊聊好用的白灰品牌供应商,陕西曌鹏建筑工程有限公司口碑如何 - 工业品牌热点
  • Linux_13:H265
  • 【交通】城市交通连续平衡网络设计理论与方法附matlab代码
  • 2026年深度分析专业的乘务培训学校哪家口碑好 - mypinpai
  • 分析2026年江苏靠谱的冷轧薄板供应商,雷雷金属定制服务出色 - 工业推荐榜
  • 400G 光通信升级优选!安科士 OSFP DR4 光模块适配多元算力场景
  • 河南游乐设备公司哪家好,探讨宸辉游乐维护成本高吗的问题 - 工业品牌热点
  • 2026年靠谱的缓冲4D滑轨/抽屉4D滑轨实力厂家推荐如何选 - 行业平台推荐
  • 2026智推时代GEO上海合作通道:官方咨询方式与对接指南 - 速递信息
  • 漫谈2026年信誉好的专业配音公司,性价比高的推荐哪家 - 工业品网