ASPROTECT 1.23RC4 脱壳分析

ximo脱壳基础(个人学习汇总记录 二 ) 本篇从“ximo脱壳基础”教程第16节开始 0x02 (16)脱ACProtect1.32(无Stolen Code) 1)、设置异常,隐藏OD 选项—>调试设置—>设置内存访问异常 插件—>StrongOD—>Options—>勾选HidePEB Shift+F9直到程序运行(记录次数) 重载—>Shift+F9直到程序运行(次数-1)—>查... 阅读详情
ASPR1.23RC4 脱壳之 advanced im password Recovery+ 简单 MD5
【目    标】: advanced im password Recovery v2.31
【工    具】:Olydbg1.1(diy版)、LORDPE、ImportREC1.6F ASPRDBGR1.0,IDA
【任    务】:先脱马甲,然后hehe……
【操作平台】:WINXP pro sp1
【作    者】:loveboom[DFCG][FCG]
【相关链接】: www.elcomsoft.com
【简要说明】:也算有一段时间没有发破文了,因水平菜,时间等问题,所以难的搞不定,易的已经有很多朋友写了,这篇文章也算是搞一点积分吧,再则,很久没看见自己的贴有个精,所以想这篇文章看看能不能再混个精,其它就没多少研究价值了。
【详细过程】:
       用PEID查一下发现是ASProtect 1.23 RC4 - 1.3.08.24 -> Alexey Solodovnikov,一开始还以为是ASPR1.3XXX的呢,所以有点想打道回府,但又想,既然来了,不管怎么样也要试上把,反正输了,也没有人知道,最多是“浪费”一点时间。还好有惊无险,跟到后面发现原来是个软柿子,让我占了个便宜。好了,留点口水到后面用。
打开OD设置为取消忽略内存异常,去掉RING3的检测,一路shift+f9飞到最后一次异常(我这里是第25次后到最后异常):
009C39EC    3100            XOR DWORD PTR DS:[EAX],EAX
009C39EE    64:8F05 0000000>POP DWORD PTR FS:[0]
009C39F5    58              POP EAX
009C39F6    833D B07E9C00 0>CMP DWORD PTR DS:[9C7EB0],0
009C39FD    74 14           JE SHORT 009C3A13
009C39FF    6A 0C           PUSH 0C
009C3A01    B9 B07E9C00     MOV ECX,9C7EB0
009C3A06    8D45 F8         LEA EAX,DWORD PTR SS:[EBP-8]
009C3A09    BA 04000000     MOV EDX,4
009C3A0E    E8 2DD1FFFF     CALL 009C0B40
009C3A13    FF75 FC         PUSH DWORD PTR SS:[EBP-4]
009C3A16    FF75 F8         PUSH DWORD PTR SS:[EBP-8]
009C3A19    8B45 F4         MOV EAX,DWORD PTR SS:[EBP-C]
009C3A1C    8338 00         CMP DWORD PTR DS:[EAX],0
009C3A1F    74 02           JE SHORT 009C3A23
009C3A21    FF30            PUSH DWORD PTR DS:[EAX]
009C3A23    FF75 F0         PUSH DWORD PTR SS:[EBP-10]
009C3A26    FF75 EC         PUSH DWORD PTR SS:[EBP-14]
009C3A29    C3              RETN                   ;这里下断
看到了c3吧,对就这里下断,在009c3a29处下f2断点,然后shift+f9就会断下来。断下后取消该断点(怎么取消,晕倒,对没有一点基础知识的朋友,请去看相关文档,不用来问我了,因我没有这么多时间来回答,这里也随便回答一下,上次有朋友问我,用了我的幻影的脱壳脚本后如何dump+fixdump,这个问题我不好怎么讲,只能说你们自己去看看最基础的东西先)
唔,开小差就开到这里先,取消断点后下硬件访问断点hr [ESP+C](这里也就相当于hr 12ffa4),下断完毕当然是F9运行了,下面的东西要有一点基础,要不看那些代码就有点飞的感觉。
运行后这里断下,断下后取消硬件访问断点:
009D5CA3    F3:             PREFIX REP:            ; 这里断下
009D5CA4    EB 02           JMP SHORT 009D5CA8
下面就要小心点按F8来找到stolen code,
009D5CF5    BE C55C9D00     MOV ESI,9D5CC5
009D5CFA    FF56 3F         CALL DWORD PTR DS:[ESI+3F]  ;这里F7跟进去,要不就真的飞了,进去后就按f8一直跟到stolen code处
009D5D67    896C24 00       MOV DWORD PTR SS:[ESP],EBP ;*****       ;这里就是push ebp了
009D5D6B    8BEC            MOV EBP,ESP  ;*****
009D5D6D    6A FF           PUSH –1 ;*****
009D5D6F    68 48A44200     PUSH 42A448 ;*****
009D5D74    68 F4514200     PUSH 4251F4 ;*****
009D5D79    64:A1 00000000  MOV EAX,DWORD PTR FS:[0]  ;*****
009D5D7F    66:8105 895D9D0>ADD WORD PTR DS:[9D5D89],4916
……
009D5DBB    894424 00       MOV DWORD PTR SS:[ESP],EAX       ;*****
009D5DBF    64:8925 0000000>MOV DWORD PTR FS:[0],ESP            ;*****
009D5DC6    83EC 58         SUB ESP,58                  ;*****
……
009D5E05    895C24 00       MOV DWORD PTR SS:[ESP],EBX       ;*****
……
009D5E45    897424 00       MOV DWORD PTR SS:[ESP],ESI        ;*****     
……
009D5E85    897C24 00       MOV DWORD PTR SS:[ESP],EDI    ;*****           ; ntdll.77F944A8
009D5E89    8965 E8         MOV DWORD PTR SS:[EBP-18],ESP     ;*****
009D5E8C    F3:             PREFIX REP:       
009D5E95    68 F8FF4100     PUSH 41FFF8              ;看到这里,只要跟过aspr的朋友都知道下面就是清场代码,我们没必要去跟。
009D5E9A    68 015C9D00     PUSH 9D5C01
009D5E9F    C3              RETN
现在我们直接执行g 41fff8,这样就到这里停下来了.
0041FFF8    FF15 C4914200   CALL DWORD PTR DS:[4291C4]  ;到这里下车
0041FFFE    33D2            XOR EDX,EDX
00420000    8AD4            MOV DL,AH
00420002    8915 84BE4300   MOV DWORD PTR DS:[43BE84],EDX
00420008    8BC8            MOV ECX,EAX
好了,现在总结一下stolen code:
0041FFD2    55              PUSH EBP
0041FFD3    8BEC            MOV EBP,ESP
0041FFD5    6A FF           PUSH -1
0041FFD7    68 48A44200     PUSH AIMPR.0042A448
0041FFDC    68 F4514200     PUSH AIMPR.004251F4
0041FFE1    64:A1 00000000  MOV EAX,DWORD PTR FS:[0]
0041FFE7    50              PUSH EAX
0041FFE8    64:8925 0000000>MOV DWORD PTR FS:[0],ESP
0041FFEF    83EC 58         SUB ESP,58
0041FFF2    53              PUSH EBX
0041FFF3    56              PUSH ESI
0041FFF4    57              PUSH EDI
0041FFF5    8965 E8         MOV DWORD PTR SS:[EBP-18],ESP
补上这些代码后,打开asprdbgr 1.0并载入目标,加载后,出现对框就点yes直到目标程序运行:
AsprDbgr v1.0beta (:P) Made by me... Manko.
 
  iEP=401000 (C:/Program Files/AIMPR/AIMPR.exe)
 
  GST returns to: 9B2667
    Trick aspr GST... (EAX=12121212h)
  GV returns to: 9C1A61
    IAT Start: 429000
          End: 42938C
       Length: 38C
      IATentry 4290E4 = 9C1CF0 resolved as FreeResource
      IATentry 4290E8 = 9C1C64 resolved as GetModuleHandleA
      IATentry 4290F4 = 9C1CC8 resolved as LockResource
      IATentry 42913C = 9C17A4 resolved as GetProcAddress
      IATentry 4291A4 = 9C1CB8 resolved as GetCurrentProcess
      IATentry 4291C4 = 9C1C8C resolved as GetVersion
      IATentry 4291CC = 9C1CD8 resolved as GetCommandLineA
      IATentry 4292C8 = 9C1D14 resolved as DialogBoxParamA
    0 invalid entries erased.
  Dip-Table at adress: 9C7AB4
    0 0 0 0 0 0 0 0 0 0 41DA10 41DA00 41D9F0 0
  Last SEH passed. Searching for signatures. Singlestepping to OEP!
    Call + OEP-jump-setup at: 9D5E3F ( Code: E8000000 5D81ED )
    Mutated, stolen bytes at: 9D5E8A ( Code: 61F3EB02 CD20F3EB )
    Erase of stolen bytes at: 9D5DEE ( Code: 9CFCBF2D 5E9D00B9 )
      Repz ... found. Skipping erase of stolen bytes. ;)
  Dip from pre-OEP: 41FFF8 (Reached from: 9D5DFF)
现在打开imp设置OEP为1fff8,然后就可以得到全部的iat,真是好东西,给我等懒人用最好不过了.得到全部输入表后把oep改回1FFD2,当然,如果你喜欢的话也可以一开始就设OEP 为1FFD2。
现在DUMP+FIXDUMP后程序就能运行了,到此脱壳也就算完成了
衣服已经脱掉了,现在我们就要进行强暴(强力暴破,你可不要想坏了哦,本来想不脱衣服直接强暴,但又想一下,如果直接强暴的话,不就文字太少了,也就不能成为一篇文章嘛)了,
载入脱后的文件,运行之,打开注册对话框输入你的大名,然后下断bpx GetDlgitemTextA
这样断在这里:
lbl_GetSN:                              ; CODE XREF: seg000:0041DE61j
seg000:0041DE70                 mov     eax, ds:dword_43BE3C
seg000:0041DE75                 xor     ecx, ecx
seg000:0041DE77                 mov     cx, [eax+300h]
seg000:0041DE7E                 add     eax, 200h
seg000:0041DE83                 push    ecx             ; Count
seg000:0041DE84                 push    eax             ; 缓冲区,等下会返回注册码的长度
seg000:0041DE85                 push    0FFAh           ; 这里就是ID了
seg000:0041DE8A                 push    edi             ; 这个就是句柄来的
seg000:0041DE8B                 call    ds:GetDlgItemTextA
seg000:0041DE91                 mov     edx, ds:dword_43BE3C
seg000:0041DE97                 add     edx, 200h
seg000:0041DE9D                 push    edx             ; EDX保存了我们输入的注册码
seg000:0041DE9E                 call    lbl_CheckSn     ; 这里跟进,要不就over了
seg000:0041DEA3                 add     esp, 4
seg000:0041DEA6                 test    eax, eax
seg000:0041DEA8                 jnz     short loc_41DEB3 ; 这里要注意了,不要以为这里改成jmp就会ok
seg000:0041DEA8                                         ; 了,这里改是没有用的,因为后面还会进上面
seg000:0041DEA8                                         ; 那个CALL里检查是否正确
seg000:0041DEAA                 push    edi
seg000:0041DEAB                 call    sub_41DD80
seg000:0041DEB0                 add     esp, 4
进入上面的call到这里
lbl_CheckSn     proc near               ; CODE XREF: seg000:0041DE9Ep
seg000:0041DB90                                         ; sub_41E030+12p ...
seg000:0041DB90
seg000:0041DB90 var_6C          = dword ptr -6Ch
seg000:0041DB90 var_5C          = dword ptr -5Ch
seg000:0041DB90 arg_0           = dword ptr  4
seg000:0041DB90
seg000:0041DB90                 sub     esp, 6Ch
seg000:0041DB93                 or      ecx, 0FFFFFFFFh
seg000:0041DB96                 xor     eax, eax
seg000:0041DB98                 push    ebx
seg000:0041DB99                 push    ebp
seg000:0041DB9A                 mov     ebp, [esp+74h+arg_0]
seg000:0041DB9E                 push    edi
seg000:0041DB9F                 mov     edi, ebp
seg000:0041DBA1                 repne scasb             ; 这里也就是得出注册码的长度
seg000:0041DBA3                 not     ecx
seg000:0041DBA5                 dec     ecx
seg000:0041DBA6                 cmp     ecx, 6          ; 比较注册长度是否大于六,不就是over了
seg000:0041DBA9                 jge     short lbl_Next1 ; 如果没问题的话,就跳去下一步
seg000:0041DBAB                 pop     edi
seg000:0041DBAC                 pop     ebp
seg000:0041DBAD                 pop     ebx
seg000:0041DBAE                 add     esp, 6Ch
seg000:0041DBB1                 retn                    ; 如果到了这里的RET的话,就要重来了
seg000:0041DBB2 ; ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
seg000:0041DBB2
seg000:0041DBB2 lbl_Next1:                              ; CODE XREF: lbl_CheckSn+19j
seg000:0041DBB2                 and     ecx, 80000001h
seg000:0041DBB8                 jns     short loc_41DBBF ; 这里跳,
seg000:0041DBBA                 dec     ecx
seg000:0041DBBB                 or      ecx, 0FFFFFFFEh
seg000:0041DBBE                 inc     ecx
seg000:0041DBBF
seg000:0041DBBF loc_41DBBF:                             ; CODE XREF: lbl_CheckSn+28j
seg000:0041DBBF                 jz      short lbl_Next2 ; 这里也跳,这两个地方我们一般不用管它
seg000:0041DBC1                 pop     edi
seg000:0041DBC2                 pop     ebp
seg000:0041DBC3                 xor     eax, eax
seg000:0041DBC5                 pop     ebx
seg000:0041DBC6                 add     esp, 6Ch
seg000:0041DBC9                 retn                    ; 到这里的话也是over哦
seg000:0041DBCA ; ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
seg000:0041DBCA
seg000:0041DBCA lbl_Next2:                              ; CODE XREF: lbl_CheckSn+2Fj
seg000:0041DBCA                 mov     edi, ebp        ; 注册码入edi
seg000:0041DBCC                 or      ecx, 0FFFFFFFFh
seg000:0041DBCF                 xor     eax, eax
seg000:0041DBD1                 push    esi
seg000:0041DBD2                 repne scasb             ; 这里再次计算注册码的长度
seg000:0041DBD4                 not     ecx
seg000:0041DBD6                 dec     ecx
seg000:0041DBD7                 lea     eax, [esp+7Ch+var_5C]
seg000:0041DBDB                 mov     ebx, ecx        ; 注册码长度入EBX
seg000:0041DBDD                 push    eax
seg000:0041DBDE                 add     ebx, 4
seg000:0041DBE1                 shr     ebx, 1          ; 如果没有什么意外的话就到这里
seg000:0041DBE3                 call    lbl_InitMD5     ; 这里跟进后可以看到是MD5算法来的
进来看看吧:
seg000:0041C7F0 ; 〓〓〓〓〓〓〓〓 S U B R O U T I N E  〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
seg000:0041C7F0
seg000:0041C7F0
seg000:0041C7F0 lbl_InitMD5     proc near               ; CODE XREF: sub_409E20+128p
seg000:0041C7F0                                         ; sub_414D80+8p ...
seg000:0041C7F0
seg000:0041C7F0 arg_0           = dword ptr  4
seg000:0041C7F0
seg000:0041C7F0                 mov     eax, [esp+arg_0]
seg000:0041C7F4                 xor     ecx, ecx
seg000:0041C7F6                 mov     dword ptr [eax], 67452301h            ;看到这些东西就不用我再说了吧
seg000:0041C7FC                 mov     dword ptr [eax+4], 0EFCDAB89h
seg000:0041C803                 mov     dword ptr [eax+8], 98BADCFEh
seg000:0041C80A                 mov     dword ptr [eax+0Ch], 10325476h
seg000:0041C811                 mov     [eax+10h], ecx
seg000:0041C814                 mov     [eax+14h], ecx
seg000:0041C817                 mov     [eax+58h], ecx
seg000:0041C81A                 retn
seg000:0041C81A lbl_InitMD5     endp
seg000:0041C81A
seg000:0041C81A ; ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
看完后,回到老地方:
seg000:0041DBE9                 lea     ecx, [esp+84h+var_5C]
seg000:0041DBED                 push    ebp             ; 注册码入栈
seg000:0041DBEE                 push    ecx
seg000:0041DBEF                 call    sub_41C820
seg000:0041DBF4                 lea     edx, [esp+8Ch+var_5C]
seg000:0041DBF8                 lea     eax, [esp+8Ch+var_6C]
seg000:0041DBFC                 push    edx
seg000:0041DBFD                 push    eax
seg000:0041DBFE                 call    sub_41D8B0
seg000:0041DC03                 add     esp, 18h
seg000:0041DC06                 mov     ecx, 4
seg000:0041DC0B                 mov     edi, offset unk_43714C
seg000:0041DC10                 lea     esi, [esp+7Ch+var_6C]
seg000:0041DC14                 xor     edx, edx
seg000:0041DC16                 repe cmpsd
seg000:0041DC18                 pop     esi
seg000:0041DC19                 jz      short lbl_Next3 ; ****  看到MD5我就头疼,一疼就一直按f8跑到这里,
seg000:0041DC19                                         ; 这里一定要跳,
seg000:0041DC1B                 pop     edi
seg000:0041DC1C                 pop     ebp
seg000:0041DC1D                 xor     eax, eax
seg000:0041DC1F                 pop     ebx
seg000:0041DC20                 add     esp, 6Ch
seg000:0041DC23                 retn
seg000:0041DC24 ; ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
seg000:0041DC24
seg000:0041DC24 lbl_Next3:                              ; CODE XREF: lbl_CheckSn+89j
seg000:0041DC24                 lea     eax, [esp+78h+var_5C]
seg000:0041DC28                 push    eax
seg000:0041DC29                 call    lbl_InitMD5
seg000:0041DC2E                 mov     edi, ebp
seg000:0041DC30                 or      ecx, 0FFFFFFFFh
seg000:0041DC33                 xor     eax, eax
seg000:0041DC35                 repne scasb
seg000:0041DC37                 not     ecx
seg000:0041DC39                 dec     ecx
seg000:0041DC3A                 push    ecx
seg000:0041DC3B                 lea     ecx, [esp+80h+var_5C]
seg000:0041DC3F                 push    ebp             ; 注册码入栈
seg000:0041DC40                 push    ecx
seg000:0041DC41                 call    sub_41C820
seg000:0041DC46                 lea     edx, [esp+88h+var_5C]
seg000:0041DC4A                 lea     eax, [esp+88h+var_6C]
seg000:0041DC4E                 push    edx
seg000:0041DC4F                 push    eax
seg000:0041DC50                 call    sub_41D8B0
seg000:0041DC55                 lea     ecx, [esp+90h+var_6C]
seg000:0041DC59                 push    ecx
seg000:0041DC5A                 call    sub_41DB20
seg000:0041DC5F                 add     esp, 1Ch
seg000:0041DC62                 test    eax, eax
seg000:0041DC64                 jnz     short lbl_Next4 ; ***** 不一会按F8到了这里,这里也要跳哦.
seg000:0041DC66                 pop     edi
seg000:0041DC67                 pop     ebp
seg000:0041DC68                 pop     ebx
seg000:0041DC69                 add     esp, 6Ch
seg000:0041DC6C                 retn
seg000:0041DC6D ; ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
seg000:0041DC6D
seg000:0041DC6D lbl_Next4:                              ; CODE XREF: lbl_CheckSn+D4j
seg000:0041DC6D                 mov     eax, ds:dword_43BE40
seg000:0041DC72                 test    eax, eax
seg000:0041DC74                 jnz     short lbl_RegOK ; ***** 呵呵一不小心就跳到光明之处了,这里也跳,不跳也完了
seg000:0041DC76                 push    ebx
seg000:0041DC77                 push    ebp
seg000:0041DC78                 call    sub_41DA80
seg000:0041DC7D                 add     esp, 8
seg000:0041DC80                 mov     ds:dword_43BE40, 1
seg000:0041DC8A
seg000:0041DC8A lbl_RegOK:                              ; CODE XREF: lbl_CheckSn+E4j
seg000:0041DC8A                 pop     edi
seg000:0041DC8B                 pop     ebp             ; 呵呵看到注册码出栈了吧
seg000:0041DC8C                 mov     eax, 1          ; 这里赋eax为1,如果注册成功的话
seg000:0041DC91                 pop     ebx
seg000:0041DC92                 add     esp, 6Ch
seg000:0041DC95                 retn
seg000:0041DC95 lbl_CheckSn     endp
 
到这里就知道怎么强暴了吧,改那几个用*的地方,改成jmp XXX:
0041DC19   . EB 09         JMP SHORT dumped1_.0041DC24
0041DC64   . EB 07         JMP SHORT dumped1_.0041DC6D
0041DC74   . EB 14         JMP SHORT dumped1_.0041DC8A
改好后,保存一下,再运行看一下,是不是已经注册了,这样就收工了?你不觉得改三个地方,改的太多了点吗?既然是强暴,当然要怎么样快就改哪里了,
我的改法:
seg000:0041DB90
seg000:0041DB90                 sub     esp, 6Ch        ;改这里
seg000:0041DB93                 or      ecx, 0FFFFFFFFh
seg000:0041DB96                 xor     eax, eax
seg000:0041DB98                 push    ebx
改为:
0041DB90   B8 01000000   MOV EAX,1
0041DB95  C3            RETN
这里够爽了吧,到了这里也就全部操作完成,因这个软件纯用来做教学的,所以不敢保证没有暗桩哦,如果你发现有暗桩或有什么别人好的方法或搞定了全部的算法,请告之本人,谢谢!
 
 
 
特别感谢老菜鸟给我一个好我武器IDA,没有他,可能我今天还是用w32dasm写文章给大家看.也算是我的IDA NO1 TUT吧!
Greetz:
 Fly.Jingulong,yock,tDasm.David.ahao.vcasm.UFO(brother).alan(sister).all of my friends and you!
 
By loveboom[DFCG][FCG]
Email:bmd2chen@tom.com
 
巨强悍的ASProtect脱壳机:ASProtect unpacker by PE_Kill 巨强悍的ASProtect脱壳机:ASProtect unpacker by PE_Kill巨强悍的ASProtect脱壳机:ASProtect unpacker by PE_Kill 立即下载

相关推荐

ASProtect 2.3 SKE的脱壳脚本

脚本支持Asprotect 1.32, 1.33, ,1.35, 1.4, 2.0, 2.1, 2.11, 2.2beta, 2.2, 2.3,EXE/DLL 包括高级输入表保护选项。己相当于一款Asprotect脱壳机了。

脱壳的艺术--6. 高级及其它技术

 脱壳的艺术Mark Vincent Yason概述:脱壳是门艺术——脱壳既是一种心理挑战,同时也是逆向领域最为激动人心的智力游戏之一。为了甄别或解决非常难的反逆向技巧,逆向分析人员有时不得不了解操作系统的一些底层知识,聪明和耐心也是成功脱壳的关键。这个挑战既牵涉到壳的创建者,也牵涉到那些决心躲过这些保护的脱壳者。本文主要目的是介绍壳常用的反逆向技术,同时也探讨了可以用来躲过或禁用

FISH 的专栏 2197

ASProtect1.22-1.23 自动脱壳机

自动脱 ASProtect1.22-1.23 壳

逆向学习笔记(5)——高级反调试技术

1.垃圾代码 向程序添加大量无意义的代码来增加代码调试的难度,这就是“垃圾代码”反调试技术。尤其是,这些垃圾代码中还含有真正有用的代码或者应用其他反调试技术时,调试程序会变得更加困难。 1)一些指令(PUSH/POP、XCHEG、MOV)拥有相同的操作数,最终执行的是一些无意义的运算。(命令执行后没有什么变化) 2)将一些简单的指令复杂化实现,增加分析难度。 2.扰乱代码对齐(花指令) 通过巧妙的编写汇编代码,实现干扰调试器反汇编的结果,让反汇编看上去一团乱。 在正常的汇编中插入多余的call、

谈成(C/C++) 466

手脱ASProtect1.23 RC4

1.OEP 2.解密IMPORT 3.修复STOLEN CODE 1.OEP比较好找,断到最后一次异常后开始单步跟踪,最终一个跨段转移就到了入口,但是是被STOLEN之后的入口了,STOLEN CODE在转移之前就已经被执行。 2.ASPR1.23RC4对KERNEL32.DLL里的API做了IAT HOOK,所以需要将其IAT HOOK去掉进行还原,然后IAT表里不同DLL的函数地址表应该是用0来分隔,但是ASPR用了随机数,这里要清0,还有个别的API是将API代码COPY到程序中直接使用,这里搞明白是啥API就可以修复了。经过以上步骤就修复了IAT。 3.修复STOLEN CODE需要了解编译器入口代码的特征,才好确定STOLEN了哪些代码。 技巧 利用IMPORT REC的 Adcanced Commands ->Get API Calls来搜索"Get 'Call [X] scheme'"其实也就是FF 15标志,这样来定位调用API的位置,找其规律,脚本或者程序进行批量修复。或者利用Import REC的TRACE LEVEL来进行识别,但是似乎有识别错的,可能不一定靠谱。

第39章-何谓stolen bytes1

第39章-何谓stolen bytes1

171211 逆向-高级反调试技术

1625-5 王子昂 总结《2017年12月11日》 【连续第437天总结】 A. 《逆向工程核心原理》-高级反调试技术 B. 花指令这种反调的难度可高可低,不过对于只靠F5的萌新们都是无解的简单的只是在代码块之间放置一些垃圾代码,通过jmp跳过,使得反汇编不正确,进而影响F5的反编译 只需要清除干扰指令,或者动态调试跟一下就能很轻松的解决复杂的则会随机插入大量的花指令,与正确代码混杂在一起

whklhhhh的博客 1357

40分钟快速入门Dart基础(上)

针对final 和const 理解的有点模糊的可以参考这篇文章: 可以参考这里Flutter 知识梳理(Dart)-Dart中static final const 区别看是不是超级好上手,好操作~其实Dart的整个学习起来还是蛮简单的,对于有基础的老司机更简单一些。分分钟敲起来~这篇文章就简单的介绍到这里如何短时间快速入门Dart,避免入坑。由于是想让大家快速入门Flutter,所以针对上面的这些章节我们讲解的只是一些在开发Flutter 过程中常用的一些方法和函数。

qq_7813180 4572

加密与解密 读书笔记

加密与解密的读书笔记,持续更新中

weixin_42100211的博客 1830

Unity2D像素刀光实现:粒子方向控制与像素级渲染规范

像素风游戏中的刀光特效并非普通粒子动画,而是需严格遵循像素艺术原理的视觉暂留模拟。其核心在于将‘瞬时切割感’转化为程序可执行的渲染逻辑:通过禁用纹理滤波保障1:1像素锐度,绑定刀锋向量控制粒子运动方向,限定≤0.15秒生命周期匹配人眼暂留阈值,并采用Stretched Billboard实现动态拉伸拖影。该方案兼顾美术语义(如直劈、横扫、突刺)与工程约束(Sorting Layer分层、对象池复用、单粒子GPU优化),广泛适用于Unity2D平台的动作反馈系统,尤其适配《空洞骑士》《死亡细胞》类高节奏像素R

weixin_32390647的博客 284

Truncated SVD for faster dection

Truncated SVD方法最先被提出在《Fast R-CNN》论文中,用于降低全连接层的运算量,提升模型的速度。在卷积神经网络的分类任务中,FC层的运算速度远远大于CONV层,而在Fast R-CNN的目标检测任务中,大多数的运算时间发生在FC 的运算中,是因为针对每张输入图片,只进行一次卷积操作,而要对生成的Region Proposal,大致两千个,进行全连接操作进行分类与Bounding...

weixin_35747666的博客 1535

高级反调试

垃圾代码 无意义的代码,也就是用来磨炼逆向人员的。。 扰乱代码对齐 这个的话,利用了代码对齐的状况,就中间插入了一个或者两个字节的指令,使得指令解析的时候,发送事故。但是在执行的时候并不会出现报错,利用跳转来控制运行流程。举个例子: 例1: 0041510F FFE3 JMP EBX //EBX=415117 00415111 C9 LEAVE 00415112 C2 0800 RETN 8 00415115 A3 687801FF MOV DWORD PTR DS:[FF01726

寻梦&之璐 1570

2023-2024深度学习框架之争——选pytorch还是tensorflow?

深度学习是人工智能领域的一个重要分支,它利用多层神经网络来模拟人类的学习和推理能力,解决各种复杂的问题,如图像识别、自然语言处理、语音识别、推荐系统等。深度学习框架是一种软件工具,它提供了构建、训练、测试和部署深度学习模型的便利,使得开发者和研究者可以更高效地进行深度学习的开发和应用。目前,市场上有许多不同的深度学习框架,如PyTorch、TensorFlow、Keras、MXNet、Caffe2等,它们各有优劣,适用于不同的场景和需求。

flchen_nchu的博客 6758

手脱ASProtect v1.23 RC1(有Stolen Code)

1.载入PEID ASProtect v1.23 RC1 常见ASprotect版本壳: ASProtect 1.23 RC4 按shift+f9键26次后来到典型异常 ASProtect 1.31 04.27 按shift+f9键36次后来到典型异常 ASProtect 1.31 05.18 按shift+f9键40次后来到典型异常 ASProtect 1.31 06.1...

weixin_30613433的博客 231

CTS实战:如何用set_sense优化时钟树平衡(附ICC2避坑指南)

本文深入探讨了在时钟树综合(CTS)中,如何正确使用`set_sense`命令优化时钟树平衡,并对比了其与`set_disable_timing`的本质区别。通过实战案例详细解析了`-stop_propagation`和`-clock_leaf`参数的应用场景,并提供了ICC2工具中的关键避坑指南,帮助后端工程师精准控制时钟拓扑,避免时序分析漏洞。

weixin_28933797的博客 460

绿盾注册机 使用手册

在很多涉及工程设计的单位(如建筑、模具、电路、广告等),电子图纸的应用极为普遍,而电子图纸的丢失、被盗对企业利益的影响是显而易见的,如果被竞争对手获取,甚至可能造成致命的打击。因此,对于这类企业,电子图纸的保密显得至关重要。绿盾信息安全管理软件充分考虑了电子图纸的各种可能传播途径,制定了针对性的解决方案,从而保证了电子图纸的安全。 我们总结了电子图纸的各种传播途径以及相应的对策,有如下几点:

998

简单脱壳笔记

这里对各类壳按照壳的特征分类说明:一、ACProtect1、ACProtect V2.0–VB6.0 脱壳前特征: VB入口特征: 可以依靠此特征来找到OEP,若发生stolen bytes ,也可以手动修补 脱壳流程简介: AC会把正常解密流程放到SEH中,故利用最后一次异常法找到关键跳转,设置跳转条件让它直接跳到OEP 1) 2)关键跳转处设置条件断点,这里是代码段内

王二娃的生活的博客 655

【音视频 ffmpeg 学习】 RTMP推流 mp4文件

3.当RTMP协议在互联网中传输数据的时候,消息会被拆分成更小的单元,称为消息块(Chunk)。1.RTMP(实时消息传输协议)是Adobe 公司开发的一个基于TCP的应用层协议。2.RTMP协议中基本的数据单元称为消息(Message)。下载地址:http://nginx.org/download。下载 rtmp模块 到nginx 模块下。安装nginx 和 rtmp模块。(1). linux 环境准备。下载nginx安装包。使用 vcl 播放流。

weixin_45397344的博客 2277

逆向教程,逆向教学视频,从0到1入门编程 学习编程不再难

C++百万并发网络通信引擎架构与实现(Socket、全栈、跨平台)黑马程序员匠心之作 C++教程从0到1入门编程 学习编程不再难。逆向教程,逆向教学视频,从0到1入门编程 学习编程不再难。X86 X64软件逆向分析入门。

1420

C#上位机开发揭秘:从新手到大神的蜕变之路,代码实例全解析!

上位机通常是与硬件设备(如嵌入式系统、PLC、传感器等)进行通信的计算机程序。它的作用是通过某种通信协议(如串口、TCP/IP 等)向设备发送命令,并接收设备的反馈数据。上位机需要有一个图形用户界面(GUI)来展示数据或控制硬件设备。通过本篇教程,我们介绍了 C# 上位机开发的基本步骤,从串口通信的实现,到图形用户界面的构建,再到进阶功能的实现。作为上位机开发的新手,掌握这些基础知识是非常重要的。而随着经验的积累,你可以逐步尝试更复杂的功能,比如多线程处理、数据分析与存储等。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 4835

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

ASProtect V1.31 build 06.14主程序 脱壳

明月几时有——ASProtect V1.31 build 06.14主程序 脱壳 【脱壳目标】:ASProtect V1.31 build 06.14的主程序ASProtect.exe 【作者声明】:只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教! 【调试环境】:WinXP、OllyDBG、PEiD、PEToo...

weixin_34279184的博客 372

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

几种常用加壳软件图文详解

为了保护自己的软件不轻易被他人“借鉴”,有必要对软件进行一些加密保护,而这方面目前己有成熟的专业加密软件可选择。但不要太依赖壳的保护,大多数壳是可以被攻破的,还是在自身保护上下些功夫。加密软件比较多,但在强度与兼容性上做的好的并不多,这里向大家介绍几款常见的。    现在壳的发展一个趋势就是虚拟机保护,利用虚拟机保护后,能大大提高强度,因此建议尽可能使用此类技术保护软件。如Themida ,W

鸟儿飞的专栏 3万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

ASPROTECT 2.x 脱壳系列(三)

ASPROTECT 2.x 脱壳系列(三)【目    标】:BeeIcons 4.02.1【工    具】:Olydbg1.1(diy版)、LORDPE、ImportREC1.6F【任    务】:简单的脱壳【操作平台】:Windows XP sp2【作    者】:LOVEBOOM[DFCG][FCG][US]【相关链接】:自己搜索下【简要说明】:继上一篇,这次的目标前两篇的又有所不同了.难度稍

loveboom's Reverse Enginering 6277

ASPROTECT 2.0 脱壳示例

ASPROTECT  2.0 脱壳示例【目    标】:Win98’s notepad【工    具】:Olydbg1.1(diy版)、LORDPE、ImportREC1.6F【任    务】:简单的脱一下asprotect的壳【操作平台】:Windows Xp sp2【作    者】:loveboom[DFCG][FCG][US]【简要说明】:有一段时间没写文章了,这篇文章本来是想在奥运会那时写

loveboom's Reverse Enginering 2631

ASPROTECT 2.x 脱壳系列(一)

ASPROTECT 2.x 脱壳系列(一)【目    标】:DVD Fab Gold 2.9.4.2【工    具】:Olydbg1.1(diy版)、LORDPE、ImportREC1.6F【任    务】:简单的脱壳【操作平台】:Windows XP sp2【作    者】: LOVEBOOM[DFCG][FCG][US]【相关链接】: 自己搜索下【简要说明】: 时间在不断的减少,人越靠近死亡的

loveboom's Reverse Enginering 1万+
上一篇: 外挂脱壳示例一
下一篇: Encyrptpe 2003.5.18主程序Unpacking tut
bmd2chen
博客等级 码龄23年 34粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值