首页
社区
课程
招聘
tmd脱壳记录
发表于: 2019-11-13 16:48 7484

tmd脱壳记录

2019-11-13 16:48
7484
17 年前脱的壳,最近有需要,找出来看看,都快忘记了,放到这上面复活下!

00659254        769279B0  kernel32.ExitProcess
00659258        76923475  kernel32.CreateThread


执行断点的位置

00BE02F3   /E9 58000000     JMP CCMainFo.00BE0350
00BE02F8   |F9              STC
00BE02F9   |FF95 06327A12   CALL DWORD PTR SS:[EBP+127A3206]         ; 。
00BE02FF   |E9 08000000     JMP CCMainFo.00BE030C
00BE0304   |D187 C990E980   ROL DWORD PTR DS:[EDI+80E990C9],1


地址:
00BE02F9
00BD32F0    0000            ADD     BYTE PTR [EAX], AL
00BD32F2    0000            ADD     BYTE PTR [EAX], AL
00BD32F4    0000            ADD     BYTE PTR [EAX], AL
00BD32F6    0000            ADD     BYTE PTR [EAX], AL
00BD32F8    0000            ADD     BYTE PTR [EAX], AL
00BD32FA    0000            ADD     BYTE PTR [EAX], AL
00BD32FC    0000            ADD     BYTE PTR [EAX], AL
00BD32FE    0000            ADD     BYTE PTR [EAX], AL
00BD3300    81EC 04000000   SUB     ESP, 4
00BD3306    893424          MOV     DWORD PTR [ESP], ESI



008DA663    8A1B            MOV     BL, BYTE PTR [EBX]               ; OEP
008DA665    80F9 C6         CMP     CL, 0C6
008DA668    0F85 03000000   JNZ     008DA671
008DA66E    66:8B1B         MOV     BX, WORD PTR [EBX]
008DA671    80F9 84         CMP     CL, 84
008DA674    0F85 02000000   JNZ     008DA67C
008DA67A    8B1B            MOV     EBX, DWORD PTR [EBX]
008DA67C    81EB EE246F34   SUB     EBX, 346F24EE
008DA682    89E8            MOV     EAX, EBP
008DA684    05 7F000000     ADD     EAX, 7F
008DA689    8918            MOV     DWORD PTR [EAX], EBX
008DA68B    81E6 40000000   AND     ESI, 40



0090EDB3    81C2 04000000   ADD     EDX, 4
0090EDB9    81C2 04000000   ADD     EDX, 4
0090EDBF    871424          XCHG    DWORD PTR [ESP], EDX
0090EDC2    5C              POP     ESP
0090EDC3    FF20            JMP     DWORD PTR [EAX]                          ; OEP
0090EDC5    53              PUSH    EBX
0090EDC6    FF3424          PUSH    DWORD PTR [ESP]
0090EDC9    58              POP     EAX
0090EDCA    53              PUSH    EBX
0090EDCB    54              PUSH    ESP





1:写加密的IAT地址:
008FD959   /0F85 02000000   JNZ CCMainFo.008FD961
008FD95F   |8917            MOV DWORD PTR DS:[EDI],EDX                             ; EDX为变形的API地址 EDI为IAT地址
008FD961   \80FB E0         CMP BL,0E0
008FD964    0F85 02000000   JNZ CCMainFo.008FD96C
008FD96A    8917            MOV DWORD PTR DS:[EDI],EDX

地址: 008FD961 此时寄EDI为IAT   EDX为变形的API地址


2:写未加密的IAT地址
00BE0E0D    59              POP ECX
00BE0E0E    8F00            POP DWORD PTR DS:[EAX]                   ; 未加密的IAT地址
00BE0E10    8128 C670DD6E   SUB DWORD PTR DS:[EAX],6EDD70C6
00BE0E16    FC              CLD
00BE0E17    AD              LODS DWORD PTR DS:[ESI]                  ; 从ESI表中取值
00BE0E18    FC              CLD


地址: 00BE0E16  此时寄存器: EAX为对应IAT地址   ECX为未加密的API地址


3:修改CALLIP--->判断NOP

00BE10D0    0FBFDB          MOVSX EBX,BX
00BE10D3    61              POPAD
00BE10D4    803F 90         CMP BYTE PTR DS:[EDI],90
00BE10D7    0F84 46000000   JE CCMainFo.00BE1123
00BE10DD    FC              CLD
00BE10DE    60              PUSHAD

地址:00BE10D4   EDI为call调用处,ECX为当前的API



4:取API地址:
00BDFFC1    58              POP EAX                                  ; 这里应该是最后得到的API地址
00BDFFC2    81C6 8700C408   ADD ESI,8C40087
00BDFFC8    0F84 07000000   JE CCMainFo.00BDFFD5
00BDFFCE    0F8B 01000000   JPO CCMainFo.00BDFFD5

地址:00BDFFC2


00BE0364    6A 3C           PUSH 3C
00BE0366    DFE4            FBLD ESP                                 ; 非法使用寄存器
00BE0368    E6 DE           OUT 0DE,AL
00BE036A    8985 45DDC012   MOV DWORD PTR SS:[EBP+12C0DD45],EAX      ; 这里也有写入操作API
00BE0370    E9 0B000000     JMP CCMainFo.00BE0380
00BE0375    A0 774620DD     MOV AL,BYTE PTR DS:[DD204677]
00BE037A    2E:0057 71      ADD BYTE PTR CS:[EDI+71],DL
00BE037E    A8 1B           TEST AL,1B

地址:00BE0370

EAX=76925183 (kernel32.GetEnvironmentStringsW)





006591F4  04A80000

0065972C  7DEACD2E  ntdll_12.NtdllDefWindowProc_A
00659730  7DC7851F  user32.CallWindowProcA
00659734  7DC76114  user32.GetMenu


006591F4  04B50000
006591F8  04B50083
006591FC  04B50122
00659200  04B50127
00659204  04B501E1
00659208  04B5033D
0065920C  04B50418
00659210  04B504D8
00659214  04B507B6
00659218  04B507BB
0065921C  04B50C9F
00659220  04B50E32
00659224  04B50FEF
00659228  04B60000
0065922C  04B600FF
00659230  04B601EF
00659234  04B60287
00659238  04B603B7
0065923C  04B70000
00659240  04B70D83
00659244  04B70E45
00659248  04B80000
0065924C  04B8099B
00659250  04B80D1B
00659254  769279B0  kernel32.ExitProcess
00659258  76923475  kernel32.CreateThread
0065925C  04B90000
00659260  04B90852



00659540  00C3477C    3333_.00C3477C
00659544  00C34799    3333_.00C34799
00659548  00C347AE    3333_.00C347AE
0065954C  00C347BB    3333_.00C347BB
00659550  00C347C4    3333_.00C347C4
00659554  00C347DA    3333_.00C347DA
00659558  00C347ED    3333_.00C347ED



//---
004BF8F1    89B5 36198206   MOV     DWORD PTR [EBP+6821936], ESI     ; dayhello.004B791A
004BF8F7    60              PUSHAD
004BF8F8    66:81E6 7CC4    AND     SI, 0C47C
004BF8FD    E9 0E000000     JMP     004BF910
004BF902    3C 07           CMP     AL, 7
004BF904    A7              CMPS    DWORD PTR [ESI], DWORD PTR ES:[E>
004BF905    58              POP     EAX
004BF906    61              POPAD
004BF907  ^ 74 CB           JE      SHORT 004BF8D4
004BF909    10ED            ADC     CH, CH





0061C434   .  E8 5C1E0000   CALL    0061E295
0061C439   .  C3            RETN
0061C43A   .  E8 32060100   CALL    0062CA71
0061C43F   .^ E9 89FEFFFF   JMP     0061C2CD
0061C444  /$  8BFF          MOV     EDI, EDI





0BDDA55 





00BD2D78
00633809

00BD32F4//表处理完成了...

//--开始的地方 …………。

00BDDA55    C785 D1397A12 0>MOV DWORD PTR SS:[EBP+127A39D1],0        ; 果然是开始的地方……。
00BDDA5F    C785 69397A12 0>MOV DWORD PTR SS:[EBP+127A3969],0
00BDDA69    83BD D902C712 0>CMP DWORD PTR SS:[EBP+12C702D9],0
00BDDA70    74 06           JE SHORT CCMainFo.00BDDA78
00BDDA72    FF95 6E217A12   CALL DWORD PTR SS:[EBP+127A216E]
00BDDA78    FF85 81067A12   INC DWORD PTR SS:[EBP+127A0681]
00BDDA7E    60              PUSHAD



00BE0ECD   /0F87 01000000   JA CCMainFo.00BE0ED4
00BE0ED3   |F5              CMC
00BE0ED4  ^\E9 7CCBFFFF     JMP CCMainFo.00BDDA55                    ; 处理完一轮。再跳到上面00BDDA55
00BE0ED9    E9 12000000     JMP CCMainFo.00BE0EF0


00BDDA93    FC                                 CLD
00BDDA94    83BD 81067A12 64                   CMP DWORD PTR SS:[EBP+127A0681],64       ; 比较……
00BDDA9B    0F82 52010000                      JB CCMainFo.00BDDBF3
00BDDAA1    60                                 PUSHAD

循环的一个记录……。

第一处清零(也就是取API的项,FFFFFFFFDDDDDDDDXXXXXXXX...)

00BDDCBA    81CB 4A036F75                      OR EBX,756F034A
00BDDCC0    81EB FF8BFFF5                      SUB EBX,F5FF8BFF
00BDDCC6    895E FC                            MOV DWORD PTR DS:[ESI-4],EBX             ; 清零表项……。
00BDDCC9    5B                                 POP EBX

63EF27D5 EAX


00BDE135    8300 49                            ADD DWORD PTR DS:[EAX],49
00BDE138    3B8D 191ABA12                      CMP ECX,DWORD PTR SS:[EBP+12BA1A19]
00BDE13E  ^ 0F85 90FFFFFF                      JNZ CCMainFo.00BDE0D4                                ; 这里可以直接过……以上为找函数的一个过循环。直接出
00BDE144    60                                 PUSHAD                                               ; ECX=555
00BDE145    81C6 DF01DD11                      ADD ESI,11DD01DF
00BDE14B    66:8BC8                            MOV CX,AX
00BDE14E    61                                 POPAD
00BDE14F    51                                 PUSH ECX
00BDE150    B9 E88BF23B                        MOV ECX,3BF28BE8
00BDE155    81C1 AB43FF7D                      ADD ECX,7DFF43AB
00BDE15B    81E9 93CFF1B9                      SUB ECX,B9F1CF93
00BDE161    51                                 PUSH ECX
00BDE162    58                                 POP EAX
00BDE163    59                                 POP ECX
00BDE164    FC                                 CLD
00BDE165    FFA5 8D1B7A12                      JMP DWORD PTR SS:[EBP+127A1B8D]                      ; 这里不要跟上去了……太JB多了跳,会死人的
00BDE16B    F8                                 CLC
00BDE16C    898D 553A7A12                      MOV DWORD PTR SS:[EBP+127A3A55],ECX                  ; 其实最后是到这里来了……。上面的跳转会晕人的
00BDE172    E9 05000000                        JMP CCMainFo.00BDE17C
00BDE177    7B D6                              JPO SHORT CCMainFo.00BDE14F
00BDE179    0951 EE                            OR DWORD PTR DS:[ECX-12],EDX
00BDE17C    C685 C503C712 00                   MOV BYTE PTR SS:[EBP+12C703C5],0



00BDE289    4A                                 DEC EDX
00BDE28A    03F2                               ADD ESI,EDX
00BDE28C    40                                 INC EAX
00BDE28D    07                                 POP ES
00BDE28E    3F                                 AAS                                                  ; 关键的地方来,函数的相对偏移
00BDE28F    0385 7068B612                      ADD EAX,DWORD PTR SS:[EBP+12B66870]
00BDE295    60                                 PUSHAD
00BDE296    66:BB 6F19                         MOV BX,196F
00BDE29A    66:8BF3                            MOV SI,BX

HugeWritePtr--->

00BDE330    52                                 PUSH EDX
00BDE331    BA 4F78EB26                        MOV EDX,26EB784F
00BDE336    01D0                               ADD EAX,EDX
00BDE338    5A                                 POP EDX
00BDE339    01C8                               ADD EAX,ECX
00BDE33B    2D 4F78EB26                        SUB EAX,26EB784F
00BDE340    F9                                 STC
00BDE341    8138 E8000000                      CMP DWORD PTR DS:[EAX],0E8                           ; 这个时候,API就出现了
00BDE347    0F85 3C010000                      JNZ CCMainFo.00BDE489
00BDE34D    E9 11000000                        JMP CCMainFo.00BDE363

00BDE854    32B4CC 09404A5D                    XOR DH,BYTE PTR SS:[ESP+ECX*8+5D4A4009]
00BDE85B    C586 221E9686                      LDS EAX,FWORD PTR DS:[ESI+86961E22]
00BDE861    F8                                 CLC
00BDE862    3B85 9495B312                      CMP EAX,DWORD PTR SS:[EBP+12B39594]                  ; 和一些固定的 API比较,就是看是不是常用的
00BDE868    0F85 51000000                      JNZ CCMainFo.00BDE8BF
00BDE86E    60                                 PUSHAD
00BDE86F    0F88 02000000                      JS CCMainFo.00BDE877


00BDFFAA    05 7103C53E                        ADD EAX,3EC50371
00BDFFAF    40                                 INC EAX
00BDFFB0    25 C1F5FF7F                        AND EAX,7FFFF5C1
00BDFFB5    25 6405DB7D                        AND EAX,7DDB0564
00BDFFBA    05 2027ABFA                        ADD EAX,FAAB2720
00BDFFBF    09C6                               OR ESI,EAX
00BDFFC1    58                                 POP EAX                                              ; 这里应该是最后得到的API地址
00BDFFC2    81C6 8700C408                      ADD ESI,8C40087
00BDFFC8    0F84 07000000                      JE CCMainFo.00BDFFD5
00BDFFCE    0F8B 01000000                      JPO CCMainFo.00BDFFD5
00BDFFD4    F9                                 STC

00BE02F8    F9                                 STC
00BE02F9    FF95 06327A12                      CALL DWORD PTR SS:[EBP+127A3206]                     ; 这里我认为要看看……。
00BE02FF    E9 08000000                        JMP CCMainFo.00BE030C



//取---〈API〉
C5B6DA7E
更多的细节看附件的脚本。。。。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2019-11-13 17:56 被wenboly编辑 ,原因: 附件呢?
收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 991
活跃值: (195)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
为什么附件传不了?
2019-11-13 17:58
0
雪    币: 2149
活跃值: (3211)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
3
附件大小是多少?
2019-11-14 17:40
0
游客
登录 | 注册 方可回帖
返回
//