欢迎来到 嗅灵易学

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

一点小意见,不知对否…… (3千字)

一点小意见,不知对否…… (3千字)

与我同时出道的随风而去[CNCG]兄今天终于搞出了他的第一个算法,实在是可喜可贺!呵呵,我看了看,但居然发现有一些地方还存在问题,最奇怪的是我跟踪过程中看到的地址竟完全不同,不过指令大致一样,所以写了出来,望大家多多指教。
具体跟踪过程及取注册码风兄已说得很清楚,在此不再哆嗦,只是我跟的地址有所不同,所以我干脆一步到位,下bpx GETDLGITEMTEXTA断点,再按一下F12就到达程序领空,不用按10次F10,然后跟进风兄提及到的第一个Call中。

0177:015C2F90  SUB      ESP,BYTE +28
0177:015C2F93  PUSH    EBP
0177:015C2F94  MOV      EBP,[ESP+30]
0177:015C2F98  TEST    EBP,EBP
0177:015C2F9A  PUSH    EDI
0177:015C2F9B  JZ      NEAR 015C30CA
0177:015C2FA1  MOV      EDX,[ESP+38]
0177:015C2FA5  TEST    EDX,EDX
0177:015C2FA7  JZ      NEAR 015C30CA
0177:015C2FAD  MOV      EDI,EBP
0177:015C2FAF  OR      ECX,BYTE -01
0177:015C2FB2  XOR      EAX,EAX
0177:015C2FB4  REPNE SCASB
0177:015C2FB6  NOT      ECX
0177:015C2FB8  DEC      ECX
0177:015C2FB9  JZ      NEAR 015C30CA
0177:015C2FBF  MOV      EDI,EDX
0177:015C2FC1  OR      ECX,BYTE -01
0177:015C2FC4  REPNE SCASB
0177:015C2FC6  NOT      ECX
0177:015C2FC8  DEC      ECX
0177:015C2FC9  JZ      NEAR 015C30CA
0177:015C2FCF  PUSH    EBX
0177:015C2FD0  XOR      BL,BL
0177:015C2FD2  MOV      ECX,08
0177:015C2FD7  LEA      EDI,[ESP+11]
0177:015C2FDB  MOV      [ESP+10],BL
0177:015C2FDF  XOR      EDX,EDX
0177:015C2FE1  REP STOSD
0177:015C2FE3  MOV      EDI,EBP
0177:015C2FE5  OR      ECX,BYTE -01
0177:015C2FE8  REPNE SCASB
0177:015C2FEA  NOT      ECX
0177:015C2FEC  DEC      ECX
0177:015C2FED  PUSH    ESI
0177:015C2FEE  TEST    ECX,ECX
0177:015C2FF0  MOV      [ESP+3C],ECX
0177:015C2FF4  JNG      015C3000
0177:015C2FF6  MOV      AL,[EDX+EBP] \\取用户名第一位字母十六进制值并存入al
0177:015C2FF9  XOR      BL,AL        \\al与bl相异或,结果存入bl
0177:015C2FFB  INC      EDX          \\edx的值递增,初值为0
0177:015C2FFC  CMP      EDX,ECX      \\取完一位后edx的值变1,与ecx比较,(ecx值为用户名长度)
0177:015C2FFE  JL      015C2FF6   \\当edx小于ecx时跳到上面继续取用户名,至取完后则跳
0177:015C3000  XOR      ESI,ESI      \\这里esi清零
0177:015C3002  CMP      ESI,BYTE +08 \\奇怪的是上面清零后esi当然不可能等于8
0177:015C3005  JL      015C300E   \\我跟到这里是不跳的,只有改变跳转才能去到计注册码的地方?
0177:015C3007  LEA      EAX,[ECX+ECX]
0177:015C300A  CMP      ESI,EAX
0177:015C300C  JNL      015C3075
0177:015C300E  MOV      EDI,EBP
0177:015C3010  OR      ECX,BYTE -01
0177:015C3013  XOR      EAX,EAX
0177:015C3015  REPNE SCASB
0177:015C3017  MOV      EAX,ESI
0177:015C3019  CDQ   
0177:015C301A  NOT      ECX
0177:015C301C  SUB      EAX,EDX
0177:015C301E  DEC      ECX
0177:015C301F  SAR      EAX,1
0177:015C3021  XOR      EDX,EDX
0177:015C3023  DIV      ECX
0177:015C3025  CMP      ESI,BYTE +01
0177:015C3028  MOV      EDI,EDX
0177:015C302A  JNG      015C3031
0177:015C302C  LEA      EAX,[ESI-01]
0177:015C302F  JMP      SHORT 015C3033
0177:015C3031  XOR      EAX,EAX
0177:015C3033  MOV      CL,[ESP+EAX+14]
0177:015C3037  XOR      CL,BL
0177:015C3039  XOR      CL,8D
0177:015C303C  MOV      BL,CL
0177:015C303E  MOV      [ESP+10],BL
0177:015C3042  MOV      EDX,[ESP+10]
0177:015C3046  PUSH    EDX
0177:015C3047  CALL    015C2F40
0177:015C304C  MOV      ECX,[ESP+40]
0177:015C3050  MOV      [ESP+ESI+18],AL
0177:015C3054  SUB      ECX,EDI
0177:015C3056  MOV      DL,[ECX+EBP-01]
0177:015C305A  XOR      DL,AL
0177:015C305C  XOR      DL,D8
0177:015C305F  PUSH    EDX
0177:015C3060  CALL    015C2F40
0177:015C3065  MOV      ECX,[ESP+44]
0177:015C3069  ADD      ESP,BYTE +08
0177:015C306C  MOV      [ESP+ESI+15],AL
0177:015C3070  ADD      ESI,BYTE +02
0177:015C3073  JMP      SHORT 015C3002
0177:015C3075  MOV      ESI,[ESP+40]\\经过上面的跳转已经来到这里,假注册出现
0177:015c3079  lea eax, dword ptr [esp+14] //这里存放了真的注册码,下d  esp+14
总结:跟了一遍,发现与风兄所写的有很大出入,不知是否我的Winamp版本问题?
我的注册名和注册码:
CNCG
rApCpHu9

谨以此文献给我的好朋友风兄!

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

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

0 0 0 举报
复制成功