欢迎来到 黑吧安全网聚焦网络安全前沿资讯,精华内容,交流技术心得!

icy小组--易语言非常规破解思路秒杀

  • 软件大小:4.72 MB
  • 软件语言:简体中文
  • 软件类型:综合教程
  • 软件授权:免费教程
  • 更新时间:2007-03-21
  • 标签:
  • 开 发 商:http://www.myhack58.com
  • 应用平台:WinXP, Win7, Win8, WinAll
软件评分
网友评分:3

同类人气软件

立即下载

icy小组--易语言非常规破解思路秒杀软件介绍

  大家好,我是BoXer[ICY] ,今天的动画是《易语言非常规破解思路秒杀》
 
  ==============================================================================================
 
  1、脱壳
 
  下载,安装,查壳,发现是:PECompact 2.x -> Jeremy Collake
 
  熟悉 PECompact 2.x 的人都知道,这个壳的入口点就是程序的入口点,我们直接OD载入,
 
  看到EIP那里就是入口点00401000
 
  在输入  he eip  回车,F9运行,直接飞到OEP ,删除硬件断点,dump!
 
  不知道是不是我OD的dump插件的问题,我用了几个OD怎么dump出来修复的都没用
 
  只好 LoadPE 来dump ,然后 修复 ImportREC 修复
 
  OEP输入1000,自动找RVA,修复,ok!
 
  再查壳:E language *
 
  ==============================================================================================
 
  2、常规方法
 
  由于常规方法我只讲思路,就是EcE或者用bp MessageBoxA找找按钮事件,然后找到之好改跳转。
 
  但是随便输入注册码都能提示注册成功,而软件还是没有注册。经过冥想,我找到了以下方法。
 
  ==============================================================================================
 
  3、非常规方法
 
  细心的人会发现,od载入这个软件会发现提示有压缩代码,一般我们加载压缩壳都会有这样的提示。
 
  但是这个软件我们已经脱壳了,显示E language *
 
  我们这时候用我师兄(luocong师兄,比我高几届,我现在还没毕业)的查找字符串插件是找不到字符串的。
 
  这就是E语言封装的结果,我们来突破易语言的封装,找真正的“ OEP”吧。
 
  ==============================================================================================
 
  E语言的通用入口点
 
  00401000 >  E8 06000000     call    0040100B                         ; F7进入
  00401005    50              push    eax                              ; 这是退出代码
  00401006    E8 BB010000     call    <jmp.&kernel32.ExitProcess>      ; 退出释放进程
 
  。。。。。(华丽的省略号)。。。。。
 
  004010A2    50              push    eax                           ; 初始化,准备加载E语言支持库
  004010A3    E8 44010000     call    004011EC
  004010A8    68 19104000     push    00401019                      ; ASCII "krnln.fnr"
  004010AD    8D85 FCFEFFFF   lea     eax, dword ptr [ebp-104]
  004010B3    50              push    eax
  004010B4    E8 25010000     call    <jmp.&kernel32.lstrcat>       ; lstrcatA函数
  004010B9    50              push    eax                           ; 文件名
  004010BA    E8 19010000     call    <jmp.&kernel32.LoadLibraryA>  ; LoadLobraryA函数
  004010BF    85C0            test    eax, eax                      ; 测试支持库加载是否成功,成功就使下一句跳转
  004010C1    0F85 9E000000   jnz     00401165                      ; 不成功就从注册表中找E程序的安装目录
 
  。。。。。(又是菜鸟最喜欢的华丽的省略号)。。。。。
 
  00401191    FFD0            call    eax                           ; 加载E格式进行本地封装等操作,F7进去
  00401193    6A 00           push    0                             ; ExitCode=0
  00401195    E8 2C000000     call    <jmp.&kernel32.ExitProcess>   ; 退出释放进程
 
  。。。。。(还是无比华丽的省略号)。。。。。
 
  1002998A    55              push    ebp
  1002998B    8BEC            mov     ebp, esp
  1002998D    8B45 08         mov     eax, dword ptr [ebp+8]
  10029990    50              push    eax
  10029991    B9 10DB0E10     mov     ecx, 100EDB10
  10029996    E8 04F5FFFF     call    10028E9F                      ; F7进去
  1002999B    5D              pop     ebp
  1002999C    C2 0400         retn    4
 
 
  ==============================================================================================
 
  到了看krnln.fnr的领空了
 
  1002998A    55              push    ebp
  1002998B    8BEC            mov     ebp, esp
  1002998D    8B45 08         mov     eax, dword ptr [ebp+8]
  10029990    50              push    eax
  10029991    B9 10DB0E10     mov     ecx, 100EDB10
  10029996    E8 04F5FFFF     call    10028E9F                      ; F7进去
  1002999B    5D              pop     ebp
  1002999C    C2 0400         retn    4
 
  之后就到了这里:
 
  10028E9F    55              push    ebp                           ; 对E语言格式进行封装
  10028EA0    8BEC            mov     ebp, esp
  10028EA2    83EC 08         sub     esp, 8
  10028EA5    53              push    ebx
  10028EA6    56              push    esi
  10028EA7    57              push    edi
  10028EA8    894D F8         mov     dword ptr [ebp-8], ecx
  10028EAB    FF15 E0230C10   call    dword ptr [<&KERNEL32.GetProc>; kernel32.GetProcessHeap
  10028EB1    8B4D F8         mov     ecx, dword ptr [ebp-8]
  10028EB4    8981 50040000   mov     dword ptr [ecx+450], eax
  10028EBA    8B55 08         mov     edx, dword ptr [ebp+8]
  10028EBD    8B42 30         mov     eax, dword ptr [edx+30]
  10028EC0    83E0 01         and     eax, 1
  10028EC3    85C0            test    eax, eax
  10028EC5    75 10           jnz     short 10028ED7
  10028EC7    8B4D 08         mov     ecx, dword ptr [ebp+8]
  10028ECA    51              push    ecx
  10028ECB    8B4D F8         mov     ecx, dword ptr [ebp-8]
  10028ECE    E8 4DFB0200     call    10058A20                      ; 封装完成
  10028ED3    FFE0            jmp     eax                           ; 跳到程序真正的OEP
 
 
  ==============================================================================================
 
  0041E5EF    FC              cld                          ;程序真正的OEP,可以搜索字符串了
  0041E5F0    DBE3            finit
  0041E5F2    E8 F7FFFFFF     call    0041E5EE
  0041E5F7    68 A1E54100     push    0041E5A1
  0041E5FC    B8 03000000     mov     eax, 3
  0041E601    E8 36000000     call    0041E63C
  0041E606    83C4 04         add     esp, 4
  0041E609    E8 A2E1FFFF     call    0041C7B0
  0041E60E    68 CC000152     push    520100CC
  0041E613    E8 1E000000     call    0041E636
  0041E618    83C4 04         add     esp, 4
  0041E61B    6A 00           push    0
  0041E61D    E8 0E000000     call    0041E630
  0041E622    E8 03000000     call    0041E62A
  0041E627    83C4 04         add     esp, 4
  0041E62A  - FF25 F9B24100   jmp     dword ptr [41B2F9]            ; krnln.10029892
  0041E630  - FF25 FDB24100   jmp     dword ptr [41B2FD]            ; krnln.100297FD
  0041E636  - FF25 01B34100   jmp     dword ptr [41B301]            ; krnln.10029827
  0041E63C  - FF25 05B34100   jmp     dword ptr [41B305]            ; krnln.10028F95
  0041E642  - FF25 F5B24100   jmp     dword ptr [41B2F5]            ; krnln.1002995A
  0041E648  - FF25 E9B24100   jmp     dword ptr [41B2E9]            ; krnln.100297D6
  0041E64E  - FF25 DDB24100   jmp     dword ptr [41B2DD]            ; krnln.10028FBA
  0041E654  - FF25 E1B24100   jmp     dword ptr [41B2E1]            ; krnln.10029011
  0041E65A  - FF25 E5B24100   jmp     dword ptr [41B2E5]            ; krnln.100297B7
  0041E660  - FF25 EDB24100   jmp     dword ptr [41B2ED]            ; krnln.10029852
  0041E666  - FF25 D5B24100   jmp     dword ptr [41B2D5]            ; krnln.10029799
 
  。。。。。(最后一次华丽的省略抢风头)。。。。。。。。
 
  ==============================================================================================
 
  经过上面无聊的分析后发现:
 
  那么以后找E语言真正的OEP只要在脱壳后的程序“右键”-“查找”-“二进制字符串”
 
  输入 “ FC DB E3 ” 就可以到真正的易语言OEP了。
 
 
  ==============================================================================================
 
  找到真正的OEP后就非常方便了,我们可以搜索字符串,找到关键字就可以秒杀了。
 
  对真正的OEP按 F4 运行到所选,之后立刻“右键”-“超级字符串参考”-“查找ascii”
 
  就会发现很多关于注册的字样,那么究竟谁才是真正的关键字眼呢?
 
  一般都是找注册失败的提示啊,然后改跳转让它成功。
 
  最后我找啊找,终于下面这句才是关键语句:
 
   超级字串参考, 项目 30
   地址=0041C33D
   反汇编=PUSH dumped_.004032EF
   文本字串=未注册版本,您只能转换10次,请您注册此软件!
 
 
  双击来到这里:
 
  0041C33D   |68 EF324000     push    004032EF                         ; 未注册版本,您只能转换10次,请您注册此软件!
 
  往上看看有个je跳,是这样的:
 
 
  0041C330   /0F84 48000000   je      0041C37E                         ;这个跳,改jmp跳过就注册了
  0041C336   |68 04000080     push    80000004
  0041C33B   |6A 00           push    0
  0041C33D   |68 EF324000     push    004032EF                         ; 未注册版本,您只能转换10次,请您注册此软件!
  0041C342   |68 01030080     push    80000301
  0041C347   |6A 00           push    0
  0041C349   |68 02000000     push    2
  0041C34E   |68 02000400     push    40002
  0041C353   |68 EF000116     push    160100EF
  0041C358   |68 CC000152     push    520100CC
  0041C35D   |68 03000000     push    3
  0041C362   |BB 80000000     mov     ebx, 80
  0041C367   |B8 03000000     mov     eax, 3
  0041C36C   |E8 DD220000     call    0041E64E
  0041C371   |83C4 28         add     esp, 28
  0041C374   |C705 00229A00 0>mov     dword ptr [9A2200], 1
  0041C37E   \6A 00           push    0
 
  最后保存,运行,发现。。。已经注册了。。。连注册码都不用输入。。。
 
  给同学测试,成功!
 
--------------------------------------------------------------------------------
【经验总结】
  本文重点是讨论易语言的封装问题,突破易语言的封装去寻找用易语言编写的程序的字符串进行突破。经过这样做,才有上
  面的1字节秒杀效果。
 
icy群:18383453

  • 热门下载