吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9149|回复: 26
收起左侧

[分享] 【纯分享】认识各语言的入口特征及加壳后的识别判断,及加密与压缩壳识别

  [复制链接]
Max 发表于 2013-7-7 16:02
今天刚刚加入论坛,很激动,新手一个,还请大家多指教!
刚看了小生讲的认识各语言的入口特征及加壳后的识别判断,及加密与压缩壳识别,觉得不错,就把它分享出来给大家了
仅是真的新手教程,大牛请飘过!希望对大家有帮助

以下是分享内容,第一次发帖,请多多支持!

C++语言入口特征:
00408027 >/$  55             push ebp
00408028  |.  8BEC           mov ebp,esp
0040802A  |.  6A FF          push -0x1
0040802C  |.  68 F0F14000    push C++.0040F1F0
00408031  |.  68 84AF4000    push C++.0040AF84                        ;  SE 处理程序安装
00408036  |.  64:A1 00000000 mov eax,dword ptr fs:[0]
0040803C  |.  50             push eax
0040803D  |.  64:8925 000000>mov dword ptr fs:[0],esp
00408044  |.  83EC 58        sub esp,0x58
00408047  |.  53             push ebx
00408048  |.  56             push esi
00408049  |.  57             push edi                                 ;  ntdll.7C930228
0040804A  |.  8965 E8        mov [local.6],esp
0040804D  |.  FF15 E4F04000  call dword ptr ds:[<&KERNEL32.GetVersion>;  kernel32.GetVersion
00408053  |.  33D2           xor edx,edx                              ;  ntdll.KiFastSystemCallRet
00408055  |.  8AD4           mov dl,ah
00408057  |.  8915 D06B4100  mov dword ptr ds:[0x416BD0],edx          ;  ntdll.KiFastSystemCallRet
0040805D  |.  8BC8           mov ecx,eax
0040805F  |.  81E1 FF000000  and ecx,0xFF
00408065  |.  890D CC6B4100  mov dword ptr ds:[0x416BCC],ecx
0040806B  |.  C1E1 08        shl ecx,0x8
C++的入口函数GetVersion
C++的字符串采用ASCII码查找
C++的按钮事件采用查找SUB EAX,0A
汇编的入口
0040285E >/$  6A 00          push 0x0                                 ; /pModule = NULL
00402860  |.  E8 970B0000    call <jmp.&kernel32.GetModuleHandleA>    ; \GetModuleHandleA
00402865  |.  A3 28544000    mov dword ptr ds:[0x405428],eax
0040286A  |.  E8 F50C0000    call <jmp.&comctl32.InitCommonControls>  ; [InitCommonControls
0040286F  |.  68 9D334000    push 汇编.0040339D                         ; /pTopLevelFilter = 汇编.0040339D
00402874  |.  E8 F50B0000    call <jmp.&kernel32.SetUnhandledExceptio>; \SetUnhandledExceptionFilter
00402879  |.  6A 00          push 0x0                                 ; /lParam = NULL
0040287B  |.  68 96284000    push 汇编.00402896                         ; |DlgProc = 汇编.00402896
00402880  |.  6A 00          push 0x0                                 ; |hOwner = NULL
00402882  |.  6A 65          push 0x65                                ; |pTemplate = 65
00402884  |.  FF35 28544000  push dword ptr ds:[0x405428]             ; |hInst = NULL
0040288A  |.  E8 4B0C0000    call <jmp.&user32.DialogBoxParamA>       ; \DialogBoxParamA
0040288F  |.  6A 00          push 0x0                                 ; /ExitCode = 0
00402891  \.  E8 480B0000    call <jmp.&kernel32.ExitProcess>         ; \ExitProcess
汇编的入口API函数   GetModuleHandleA
汇编查找字符串使用   ASCII码
DLPHI入口
0045D408 > $  55             push ebp
0045D409   .  8BEC           mov ebp,esp
0045D40B   .  83C4 F0        add esp,-0x10
0045D40E   .  B8 28D24500    mov eax,DELPHI.0045D228
0045D413   .  E8 6088FAFF    call DELPHI.00405C78
0045D418   .  A1 4CF14500    mov eax,dword ptr ds:[0x45F14C]
0045D41D   .  8B00           mov eax,dword ptr ds:[eax]
0045D41F   .  E8 08DFFFFF    call DELPHI.0045B32C
0045D424   .  8B0D 40F24500  mov ecx,dword ptr ds:[0x45F240]          ;  DELPHI.00460C04
0045D42A   .  A1 4CF14500    mov eax,dword ptr ds:[0x45F14C]
0045D42F   .  8B00           mov eax,dword ptr ds:[eax]
0045D431   .  8B15 CCC84500  mov edx,dword ptr ds:[0x45C8CC]          ;  DELPHI.0045C918
0045D437   .  E8 08DFFFFF    call DELPHI.0045B344
0045D43C   .  A1 4CF14500    mov eax,dword ptr ds:[0x45F14C]
0045D441   .  8B00           mov eax,dword ptr ds:[eax]
0045D443   .  E8 7CDFFFFF    call DELPHI.0045B3C4
0045D448   .  E8 2769FAFF    call DELPHI.00403D74
0045D44D   .  8D40 00        lea eax,dword ptr ds:[eax]
DELPHI入口特征 GetModuleHandleA
DELPHI查找按钮事件 右键--查找---查找二进制字符串740E8BD38B83????????FF93????????
采用CRTL+L键进行下翻页查找,需每一个都下上断
DELPHI 查找字符串采用ASCII码
易语言入口特征
004464D1 >/$  55            push ebp
004464D2  |.  8BEC          mov ebp,esp
004464D4  |.  6A FF         push -0x1
004464D6  |.  68 B0C14600   push 易语言.0046C1B0
004464DB  |.  68 DCAC4400   push 易语言.0044ACDC                        ;  SE 处理程序安装
004464E0  |.  64:A1 0000000>mov eax,dword ptr fs:[0]
004464E6  |.  50            push eax
004464E7  |.  64:8925 00000>mov dword ptr fs:[0],esp
004464EE  |.  83EC 58       sub esp,0x58
004464F1  |.  53            push ebx
004464F2  |.  56            push esi
004464F3  |.  57            push edi                                 ;  ntdll.7C930228
004464F4  |.  8965 E8       mov [local.6],esp
004464F7  |.  FF15 98514600 call dword ptr ds:[<&KERNEL32.GetVersion>;  kernel32.GetVersion
004464FD  |.  33D2          xor edx,edx                              ;  ntdll.KiFastSystemCallRet
易语言入口API函数 GetVersion
注:停留下后,AIT+F9返回到用户代码后,查找2进制字符串FC DB E3 E8 ?? ?? ?? ??
易语言查找字符串采用ASCII码查找
注:多数易语言采用花指令对易格式体进行保护,所以在查找字符串之前尽量先去掉花指令,具体去花指令的插件在我OD里已经添加 E JUNk CODE
VC8入口特征
00403A30 > $  E8 6E270000   call VC8.004061A3
00403A35   .^ E9 79FEFFFF   jmp VC8.004038B3
00403A3A  /$  55            push ebp
00403A3B  |.  8BEC          mov ebp,esp
00403A3D  |.  83EC 08       sub esp,0x8
00403A40  |.  897D FC       mov [local.1],edi                        ;  ntdll.7C930228
00403A43  |.  8975 F8       mov [local.2],esi
00403A46  |.  8B75 0C       mov esi,[arg.2]
00403A49  |.  8B7D 08       mov edi,[arg.1]                          ;  VC8.<ModuleEntryPoint>
00403A4C  |.  8B4D 10       mov ecx,[arg.3]
00403A4F  |.  C1E9 07       shr ecx,0x7
VC8入口特征查找 GetStartupInfoW
VC8查找字符串采用 Unicode码
VC8的按钮事件采用查找SUB EAX,0A
VB入口特征
00401978   .- FF25 18114000 jmp dword ptr ds:[<&MSVBVM60.#613>]      ;  msvbvm60.rtcVarStrFromVar
0040197E   .- FF25 84104000 jmp dword ptr ds:[<&MSVBVM60.__vbaVarTst>;  msvbvm60.__vbaVarTstEq
00401984   .- FF25 7C104000 jmp dword ptr ds:[<&MSVBVM60.#528>]      ;  msvbvm60.rtcUpperCaseVar
0040198A   .- FF25 A8104000 jmp dword ptr ds:[<&MSVBVM60.EVENT_SINK_>;  msvbvm60.EVENT_SINK_QueryInterface
00401990   .- FF25 78104000 jmp dword ptr ds:[<&MSVBVM60.EVENT_SINK_>;  msvbvm60.EVENT_SINK_AddRef
00401996   .- FF25 9C104000 jmp dword ptr ds:[<&MSVBVM60.EVENT_SINK_>;  msvbvm60.EVENT_SINK_Release
0040199C   $- FF25 08114000 jmp dword ptr ds:[<&MSVBVM60.#100>]      ;  msvbvm60.ThunRTMain
004019A2      00            db 00
004019A3      00            db 00
004019A4 > $  68 5C284000   push VB.0040285C                         ;  ASCII "VB5!6&vb6chs.dll"
004019A9   .  E8 EEFFFFFF   call <jmp.&MSVBVM60.#100>
004019AE   .  0000          add byte ptr ds:[eax],al
004019B0   .  0000          add byte ptr ds:[eax],al
004019B2   .  0000          add byte ptr ds:[eax],al
004019B4   .  3000          xor byte ptr ds:[eax],al
004019B6   .  0000          add byte ptr ds:[eax],al
VB入口特征查找函数 ThunRTMain
VB 查找字符串时采用二进制字符串816C2404??000000
注:识别VB P-code编译时,只需要查找不到按钮事件就是P-CODE编译
P-CODE代码是虚拟代码,需要独立的调试器
Vb 查找字符串采用 UNICODE码查找
DIE64类似于PEID的功能,但是他强大之处,在于他可以不管是任何壳保护的情况下,都可以识别出他的编写语言
当程序提示说有压缩代码时,就表示程序已经被压缩或者加密
VMP入口,就是看起来很凌乱,就像未解码的代码一样,但是VMP保护分两种代码
乱序
虚拟
VMP在默认保护的情况下是不会保护功能代码的,并且VMP保护功能代码只是一个区段,如果大家看到的.VMP区段有三条的话,就表示此程序已经被VMP进行了最大保护,如果只是一条区段的话,那就是乱序保护,两条区段的话,就是乱序加虚拟保护
TMD2.10以后的版本和WL的版本入口都是一样
00600000 >  83EC 04         sub esp,0x4
00600003    50              push eax
00600004    53              push ebx
00600005    E8 01000000     call 易语言.0060000B
0060000A    CC              int3
0060000B    58              pop eax                                  ; kernel32.7C817027
0060000C    89C3            mov ebx,eax
0060000E    40              inc eax
0060000F    2D 00D00900     sub eax,0x9D000
00600014    2D 17186000     sub eax,0x601817
00600019    05 0C186000     add eax,0x60180C
0060001E    803B CC         cmp byte ptr ds:[ebx],0xCC
00600021    75 19           jnz short 易语言.0060003C
00600023    C603 00         mov byte ptr ds:[ebx],0x0
00600026    BB 00100000     mov ebx,0x1000
0060002B    68 C5D8FB58     push 0x58FBD8C5
00600030    68 50030877     push 0x77080350
00600035    53              push ebx
00600036    50              push eax
00600037    E8 0A000000     call 易语言.00600046
0060003C    83C0 00         add eax,0x0
0060003F    894424 08       mov dword ptr ss:[esp+0x8],eax
00600043    5B              pop ebx                                  ; kernel32.7C817027
00600044    58              pop eax                                  ; kernel32.7C817027
个人推荐这个保护自己的补丁Private exe Protector
SE调试技巧,就是在运行起来之后4-5分钟时在去调试,可以避免少被ANTI到
ANTI所指的是反调试

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

qiusuo 发表于 2013-7-7 17:17
看一下 谢谢
lihu5841314 发表于 2013-7-7 17:12
逍遥枷锁 发表于 2013-7-7 16:14
 楼主| Max 发表于 2013-7-7 16:04
沙发我来做
uaenghfh 发表于 2014-3-19 21:27
多谢楼主分享经验,认真学习了。
qq7156792 发表于 2013-7-7 17:18
不错,谢谢楼主分享
吾爱扣扣 发表于 2013-7-7 18:27
。。。虽然这类帖已经被发过很多遍了。。但还是感谢LZ有这份心
苏紫方璇 发表于 2013-7-7 18:40
谢谢楼主分享,再看一遍,全当复习了
123321.tk 发表于 2013-7-7 18:48
这个不错
学习一下
感谢楼主
li7011 发表于 2013-7-7 20:48
看不懂  先学习
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-17 18:27

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表