欢迎来到 嗅灵易学

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

pediy06_00537

<span class="pediy"><span class="pediy">

[part 8]

; --------------------------- 不明飞行物 -----------------------------------
003B0FD3    8D85 DA5C4000   lea     eaxdword ptr ss:[ebp+405CDA]
003B1011    E8 96200000     call    003B30AC    ; 没看懂
; ***************************************************************************
;                 处 理 调 用 表 & 跳 转 表 ( 还 原 指 针 )
; ***************************************************************************
003B105F    8D85 DB5C4000   lea     eaxdword ptr ss:[ebp+405CDB]
; fly 写的文章里提到,但没有说为什么,这里详细说明一下
; ---------------call    dword ptr ds:[xxxxxxxx],其中xxxxxxxx是80xxxxxxxx----------------
003B108C    60              pushad
003B10A4    8B9D 08D64100   mov     ebxdword ptr ss:[ebp+41D608]
003B10AF    039D DCD34100   add     ebxdword ptr ss:[ebp+41D3DC]                ; 还是Imagebase
003B110F    BE E4D34100     mov     esi, 41D3E4    ; 块表
003B1119    03F5            add     esiebp
003B1120    8B9D DCD34100   mov     ebxdword ptr ss:[ebp+41D3DC]                ; Try.00400000
003B112B    031E            add     ebxdword ptr ds:[esi]
; ebx -> a section,应该是代码段
003B1132    8BFB            mov     ediebx                                      ; Try.00401000
003B1139    8B4E 08         mov     ecxdword ptr ds:[esi+8]    ; VSize
003B1141    83F9 00         cmp     ecx, 0
003B115B   /0F84 93050000   je      003B16F4    ; 0?不玩了
003B1178    D1E9            shr     ecx, 1                                        ;  ecx/2
003B11A7    49              dec     ecx
003B11AD    66:B8 FF15      mov     ax, 15FF                                      ; call    dword ptr ds:[xxxxxxxx]
003B11CD    BE 31354200     mov     esi, 423531
003B11FF    03F5            add     esiebp
003B124A    F2:66:AF        repne   scas word ptr es:[edi]    ; 寻找call    dword ptr ds:[xxxxxxxx]
; forgot:如果没有就……不好玩了,看Ding Boy怎么收场
; edi -> xxxxxxxx,而不是call dword ptr
003B1264    8B1F            mov     ebxdword ptr ds:[edi]; 要call的地址->Ebx
003B127D    81E3 00000080   and     ebx, 80000000    ; 取高位
003B129A    81FB 00000080   cmp     ebx, 80000000    ; 是80xxxxxxx的形势?
003B12A0   /0F85 13010000   jnz     003B13B9            ; 不是算了
003B12AB    8B1F            mov     ebxdword ptr ds:[edi]; 加密过的指针
003B12B2    81E3 FFFFFF7F   and     ebx, 7FFFFFFF    ; 去掉31st bit,还原指针
003B12BD    3B9D 33D64100   cmp     ebxdword ptr ss:[ebp+41D633]
003B12C3    0F82 C3000000   jb      003B138C    ; 判断地址范围
003B12CE    3B9D 2FD64100   cmp     ebxdword ptr ss:[ebp+41D62F]                ; Try.0041F01B
003B12D4   /0F87 AD000000   ja      003B1387
003B12DF    833E FF         cmp     dword ptr ds:[esi], -1    ; ???
003B130F   /0F84 DF030000   je      003B16F4
003B131A    8B1B            mov     ebxdword ptr ds:[ebx]                       ; 把指针指向的内容读出来
003B1321    891E            mov     dword ptr ds:[esi], ebx
; 写到esi
003B1350    8937            mov     dword ptr ds:[edi], esi    ; 地址重定位,nop掉,下同
003B1357    83C6 04         add     esi, 4    ; 移动指针
003B13BE    83F9 00         cmp     ecx, 0
003B13C1  ^ 0F85 56FEFFFF   jnz     003B121D    ; 循环直到所有都搞定
; ----------------------- jmp     dword ptr ds:[xxxxxxxx]----------------------------------
; 方法如出一辙,不多解释
003B140B    56              push    esi;剩下的buffer
003B1416    8B9D 08D64100   mov     ebxdword ptr ss:[ebp+41D608]
003B1449    039D DCD34100   add     ebxdword ptr ss:[ebp+41D3DC]                ; Try.00400000
003B1459    BE E4D34100     mov     esi, 41D3E4
003B148B    03F5            add     esiebp
003B1492    8B9D DCD34100   mov     ebxdword ptr ss:[ebp+41D3DC]                ; Try.00400000
003B149D    031E            add     ebxdword ptr ds:[esi]
003B14A4    8BFB            mov     ediebx                                      ; Try.00401000
003B14AB    8B4E 08         mov     ecxdword ptr ds:[esi+8]
003B14C5    D1E9            shr     ecx, 1
003B14DE    49              dec     ecx
003B150C    66:B8 FF25      mov     ax, 25FF    ;  jmp     dword ptr ds:[xxxxxxxx]
003B151A    5E              pop     esi
003B152A    F2:66:AF        repne   scas word ptr es:[edi]
003B1532    8B1F            mov     ebxdword ptr ds:[edi]
003B1539    81E3 00000080   and     ebx, 80000000
003B1556    81FB 00000080   cmp     ebx, 80000000
003B155C   /0F85 5B010000   jnz     003B16BD
003B158F    8B1F            mov     ebxdword ptr ds:[edi]
003B15BE    81E3 FFFFFF7F   and     ebx, 7FFFFFFF
003B15F1    3B9D 33D64100   cmp     ebxdword ptr ss:[ebp+41D633]                ; Try.00411000
003B15F7   /0F82 A9000000   jb      003B16A6
003B1614    3B9D 2FD64100   cmp     ebxdword ptr ss:[ebp+41D62F]                ; Try.0041F01B
003B161A   /77 5D           ja      short 003B1679
003B1621    833E FF         cmp     dword ptr ds:[esi], -1
003B1629   /0F84 C5000000   je      003B16F4
003B1634    8B1B            mov     ebxdword ptr ds:[ebx]
003B163B    891E            mov     dword ptr ds:[esi], ebx
003B166A    8937            mov     dword ptr ds:[edi], esi
003B166A    8937            mov     dword ptr ds:[edi], esi
003B16D4    83F9 00         cmp     ecx, 0
003B16D7  ^ 0F85 48FEFFFF   jnz     003B1525    ; 循环处理所有
003B170B    61              popad    ; 文革结束啦 

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

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

0 0 0 举报
复制成功