Chief 发表于 2013-5-27 12:04

[新手教程]鼠标连点器v2.0 脱壳(ASProtect v1.23 RC1) + 注册机

本帖最后由 Peace 于 2013-5-29 08:09 编辑

【文章标题】:[新手教程]鼠标连点器v2.0 脱壳(ASProtect v1.23 RC1) + 注册机
【文章作者】: Chief
【作者邮箱】: Hi_Chief@163.com
【作者主页】: http://hi.baidu.com/Hi_Chief
【下载地址】: 见附件
【保护方式】: ASProtect v1.23 RC1保护壳+注册码
【使用工具】: PEiD,OllyDbg,ImportREC
【作者声明】: 脱壳方法大部分收集于网络,总结自己的小方法,哪里不对还望各位指点!
--------------------------------------------------------------------------------
【详细过程】

首先查壳:ASProtect v1.23 RC1

入口:
00401000 >68 01005400   push 鼠键连点.00540001
00401005    E8 01000000   call 鼠键连点.0040100B
0040100A    C3            retn
0040100B    C3            retn
0040100C    70 0F         jo short 鼠键连点.0040101D
0040100E    1170 BD         adc dword ptr ds:[eax-43],esi
00401011    A1 29315024   mov eax,dword ptr ds:
00401016    5F            pop edi
00401017    2B8F 00C2D8DE   sub ecx,dword ptr ds:[edi+DED8C200]
0040101D    9B            wait
0040101E    8F            ???                                    ; 未知命令
0040101F    24 15         and al,15
00401021    49            dec ecx
00401022    FA            cli
00401023    C006 6A         rol byte ptr ds:[esi],6A
00401026    51            push ecx
00401027    95            xchg eax,ebp


先设置OD
打开OD--选项--调试设置---异常
去掉   INT3 中断    非法访问内存前面的勾    如图:

设置StrongOD如图:

(这里要说下,OD设置不同,所以有的会跑飞,预防新同学不会设置,我会把设置好的OD给大家打包(OD来自网络),提供给大家练习)

一切设置完毕后,F9运行
运行后会停在如下位置
00000: 00E6FF66    0000            add byte ptr ds:[eax],al
00001: 00E6FF68    E8 33C05A59   call 5A41BFA0
00002: 00E6FF6D    59            pop ecx
00003: 00E6FF6E    64:8910         mov dword ptr fs:[eax],edx
00004: 00E6FF71    EB 0F         jmp short 00E6FF82
00005: 00E6FF73^ E9 F02EFCFF   jmp 00E32E68
00006: 00E6FF78    E8 67FBFFFF   call 00E6FAE4
00007: 00E6FF7D    E8 4232FCFF   call 00E331C4
00008: 00E6FF82    E8 05E9FFFF   call 00E6E88C
00009: 00E6FF87    33C0            xor eax,eax
00010: 00E6FF89    5A            pop edx
00011: 00E6FF8A    59            pop ecx
00012: 00E6FF8B    59            pop ecx
00013: 00E6FF8C    64:8910         mov dword ptr fs:[eax],edx
00014: 00E6FF8F    68 A4FFE600   push 0E6FFA4
00015: 00E6FF94    8D45 F4         lea eax,dword ptr ss:[ebp-C]
00016: 00E6FF97    E8 5C37FCFF   call 00E336F8

////////////////////////////////////////////////////////////
注意左下角的提示:如图:

////////////////////////////////////////////////////////////
此时我们Shift+F9 继续运行
来到
00000: 00E6E2BB    90            nop
00001: 00E6E2BC    EB 01         jmp short 00E6E2BF
00002: 00E6E2BE    6966 81 FE47467>imul esp,dword ptr ds:[esi-7F],744647FE
00003: 00E6E2C5    05 31C040EB   add eax,EB40C031
00004: 00E6E2CA    0231            add dh,byte ptr ds:[ecx]
00005: 00E6E2CC    C031 DB         sal byte ptr ds:[ecx],0DB
00006: 00E6E2CF    64:8F03         pop dword ptr fs:[ebx]
00007: 00E6E2D2    83C4 04         add esp,4
00008: 00E6E2D5    EB 01         jmp short 00E6E2D8
00009: 00E6E2D7    E8 5F5E5BC3   call C442413B

////////////////////////////////////////////////////////////
继续F9运行
停到如下位置
00000: 00E6F004    0000            add byte ptr ds:[eax],al
00001: 00E6F006    E8 33C05A59   call 5A41B03E
00002: 00E6F00B    59            pop ecx
00003: 00E6F00C    64:8910         mov dword ptr fs:[eax],edx
00004: 00E6F00F    EB 0F         jmp short 00E6F020
00005: 00E6F011^ E9 523EFCFF   jmp 00E32E68
00006: 00E6F016    E8 A5FEFFFF   call 00E6EEC0
00007: 00E6F01B    E8 A441FCFF   call 00E331C4
00008: 00E6F020    A1 9C2BE700   mov eax,dword ptr ds:
00009: 00E6F025    C600 CF         mov byte ptr ds:[eax],0CF
00010: 00E6F028    EB 7E         jmp short 00E6F0A8
00011: 00E6F02A    E8 1D35FCFF   call 00E3254C

////////////////////////////////////////////////////////////
此时我们会发现左下角又提示异常
继续 Shift+F9 运行
来到
00000: 00E6F382    0000            add byte ptr ds:[eax],al
00001: 00E6F384    E8 33C05A59   call 5A41B3BC
00002: 00E6F389    59            pop ecx
00003: 00E6F38A    64:8910         mov dword ptr fs:[eax],edx
00004: 00E6F38D    EB 2F         jmp short 00E6F3BE
00005: 00E6F38F^ E9 D43AFCFF   jmp 00E32E68
00006: 00E6F394    8B45 F8         mov eax,dword ptr ss:[ebp-8]
00007: 00E6F397    50            push eax
00008: 00E6F398    8B45 FC         mov eax,dword ptr ss:[ebp-4]
00009: 00E6F39B    50            push eax
00010: 00E6F39C    A1 242BE700   mov eax,dword ptr ds:
00011: 00E6F3A1    8B00            mov eax,dword ptr ds:[eax]
00012: 00E6F3A3    E8 B45DFFFF   call 00E6515C

还是一样左下角提示异常,继续Shift+F9 运行
来到
00000: 00E6E2BB    90            nop
00001: 00E6E2BC    EB 01         jmp short 00E6E2BF
00002: 00E6E2BE    6966 81 FE47467>imul esp,dword ptr ds:[esi-7F],744647FE
00003: 00E6E2C5    05 31C040EB   add eax,EB40C031
00004: 00E6E2CA    0231            add dh,byte ptr ds:[ecx]
00005: 00E6E2CC    C031 DB         sal byte ptr ds:[ecx],0DB
00006: 00E6E2CF    64:8F03         pop dword ptr fs:[ebx]
00007: 00E6E2D2    83C4 04         add esp,4
00008: 00E6E2D5    EB 01         jmp short 00E6E2D8
00009: 00E6E2D7    E8 5F5E5BC3   call C442413B

////////////////////////////////////////////////////////////
此时发现又回到 00E6E2BB这里了,此时若再次运行程序就跑飞了,
我们往下找到retn处,也就是段尾
00000: 00E6E32F   /EB 01         jmp short 00E6E332
00001: 00E6E331   |0F31            rdtsc
00002: 00E6E333    C040 5F 5E      rol byte ptr ds:[eax+5F],5E
00003: 00E6E337    EB 01         jmp short 00E6E33A
00004: 00E6E339    C7            ???                                    ; 未知命令
00005: 00E6E33A    5B            pop ebx
00006: 00E6E33B    5A            pop edx
00007: 00E6E33C    59            pop ecx
00008: 00E6E33D    C3            retn

////////////////////////////////////////////////////////////
00E6E33D 处 F2下断   F9继续运行
////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////
如图已经被断下,此时取消断点
ALT+M打开内存映射
找到代码段,如图

////////////////////////////////////////////////////////////
00401000处F2下断
Shift+F9 运行
来到
00000: 0053F17B    8128 51CB68A5   sub dword ptr ds:[eax],A568CB51
00001: 0053F181    EB 24         jmp short 鼠键连点.0053F1A7
00002: 0053F183^ E3 E9         jecxz short 鼠键连点.0053F16E
00003: 0053F185    34 EA         xor al,0EA
00004: 0053F187    F8            clc
00005: 0053F188    6F            outs dx,dword ptr es:[edi]
00006: 0053F189    96            xchg eax,esi
00007: 0053F18A    2D 33F0BDF5   sub eax,F5BDF033
00008: 0053F18F    60            pushad
00009: 0053F190    16            push ss
00010: 0053F191    814CB4 58 498D6>or dword ptr ss:[esp+esi*4+58],13688D49
00011: 0053F199    CE            into
00012: 0053F19A    1BA7 DC2252AA   sbb esp,dword ptr ds:[edi+AA5222DC]
00013: 0053F1A0    15 F0BE22BE   adc eax,BE22BEF0
00014: 0053F1A5    05 8B83C004   add eax,4C0838B
00015: 0053F1AA    EB 0C         jmp short 鼠键连点.0053F1B8

F8往下走几次来到如图
00000: 0053F1D1    95            xchg eax,ebp
00001: 0053F1D2    52            push edx
00002: 0053F1D3    94            xchg eax,esp
00003: 0053F1D4    CF            iretd
00004: 0053F1D5^ 0F85 79FFFFFF   jnz 鼠键连点.0053F154
00005: 0053F1DB    EB 08         jmp short 鼠键连点.0053F1E5                  ; F4 运行到所选位置
00006: 0053F1DD    C7            ???                                    ; 未知命令

往上跳,我们选中0053F1DB -------F4 运行到所选位置

F8继续往下走来到如图,又是往上跳,继续选中下面一行代码F4
00000: 0053F207    832F 01         sub dword ptr ds:[edi],1
00001: 0053F20A    F9            stc
00002: 0053F20B    72 01         jb short 鼠键连点.0053F20E
00003: 0053F20D    F1            int1
00004: 0053F20E^ 0F85 CEFEFFFF   jnz 鼠键连点.0053F0E2
00005: 0053F214    EB 16         jmp short 鼠键连点.0053F22C                  ;F4 运行到所选位置
00006: 0053F216    1153 41         adc dword ptr ds:[ebx+41],edx

一路F8,就到OEP了OEP:0045E585
00000: 0045E585    55            push ebp                                 ; 来到 OEP了
00001: 0045E586    8BEC            mov ebp,esp
00002: 0045E588    6A FF         push -1
00003: 0045E58A    68 E8E24C00   push 鼠键连点.004CE2E8
00004: 0045E58F    68 C40F4600   push 鼠键连点.00460FC4
00005: 0045E594    64:A1 00000000mov eax,dword ptr fs:
00006: 0045E59A    50            push eax
00007: 0045E59B    64:8925 0000000>mov dword ptr fs:,esp
00008: 0045E5A2    83EC 58         sub esp,58
00009: 0045E5A5    53            push ebx
00010: 0045E5A6    56            push esi
00011: 0045E5A7    57            push edi
00012: 0045E5A8    8965 E8         mov dword ptr ss:[ebp-18],esp
00013: 0045E5AB    FF15 94014800   call dword ptr ds:               ; kernel32.GetVersion

此时用OllyDump脱壳保存

小总结一下步骤
F9 运行来到 00E6FF66
Shift+F9 运行来到 00E6E2BB
F9 运行来到00E6F004
Shift+F9 运行来到 00E6F382
Shift+F9 运行来到 00E6E2BB
RETN处00E6E33DF2断点
F9运行----取消断点----Alt+M----代码段00401000(F2断点)---Shift+F9运行
一路F8往下走,遇到往上跳的,选中下面一行代码F4。

接下来就是修复了,打开ImportREC
选取我们的进程
填入OEP:5E585
自动查找IAT,获取输入表修复转储文件



/////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////接下来就是破解部分了//////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////


载入脱壳修复后的程序 F9运行
Ctrl+B 输入 FF55FC5F5E(易语言按钮事件)来到 004258CD -----F2 下断

随意输入我们的假码
CPU系列号:S178BFBFF00060FB2J
用户名称:Chief
注册码:52pojie


点击注册此时会断在004258CD   按钮事件这里
F7进入来到
00000: 00404034/.55            push ebp                                 ;(Initial CPU selection)
00001: 00404035|.8BEC          mov ebp,esp
00002: 00404037|.81EC 0C000000 sub esp,0C
00003: 0040403D|.E8 66010000   call Dump_.004041A8
00004: 00404042|.8945 FC       mov ,eax
00005: 00404045|.6A FF         push -1
00006: 00404047|.6A 08         push 8
00007: 00404049|.68 29180116   push 16011829
00008: 0040404E|.68 1E180152   push 5201181E
00009: 00404053|.E8 4F1A0000   call Dump_.00405AA7


F8往下
0040403D       F7进入
来到
00000: 004041A8/$55            push ebp
00001: 004041A9|.8BEC          mov ebp,esp
00002: 004041AB|.81EC 0C000000 sub esp,0C
00003: 004041B1|.68 04000080   push 80000004
00004: 004041B6|.6A 00         push 0
00005: 004041B8|.68 42304800   push Dump_.00483042            ;ASCII "STR_UINTIP=1;STR_QLOGIN_VERSION_ERR=2;STR_NO_UIN=3;STR_NO_PWD=4;STR_NO_VCODE=5;STR_INV_UIN=6;STR_INV_VCODE=7;STR_UIN=8;STR_PWD=9;STR_VCODE=10;STR_VCODE_TIP=11;STR_CHANGE_VCODE=12;STR_REMEMBER_PWD=13;STR_1_DAY=14;STR_1_WEEK=15;STR_1_MONTH"...
00006: 004041BD|.68 01000300   push 30001
00007: 004041C2|.68 20180116   push 16011820
00008: 004041C7|.68 1E180152   push 5201181E
00009: 004041CC|.68 02000000   push 2
00010: 004041D1|.B8 02000000   mov eax,2
00011: 004041D6|.BB E0464500   mov ebx,Dump_.004546E0


F8来到004041F6后我们发现寄存器里出现CPU系列号:S178BFBFF00060FB2J

继续往下走
来到0040423F寄存器出现一串码 :9A2AF2BF18B8E84A8C0008E093C69A1D(会不会是注册码?试试。)

复制9A2AF2BF18B8E84A8C0008E093C69A1D   注册看看

注册码保存位置:

"sj"="9A2AF2BF18B8E84A8C0008E093C69A1D"

提示成功了,那说明这串字符就是我们的真码了。
那他是怎么算出这串码的?
不难发现
系列号是直接获取了我们CPU系列号再加上他固定的字符,S+CPU系列号+J既:S178BFBFF00060FB2J(我本机)
             (CPU序列号查看可以打开cmd输入:wmic CPU get ProcessorID   回车 即可看到)

注册码是将 系列号用MD5加密再转换成大写 = 注册码

易语言代码如下:源码我会打包

.版本 2
.支持库 dp1

.程序集 窗口程序集1

.子程序 _按钮1_被单击

编辑框2.加入文本 (到大写 (取数据摘要 (到字节集 (编辑框1.内容))))




Ps:至此就讲完了,觉得对你有帮助的就加分吧。

--------------------------------------------------------------------------------
【版权声明】: 本文原创于“吾爱破解论坛”Chief, 转载请注明作者并保持文章的完整, 谢谢!

                                                                  2013年05月27日

----------------------Peace:沙发也精彩喔------------------------------






我是烟花 发表于 2015-1-29 13:14

学习了                                                             多谢      

吾爱丶沧桑 发表于 2014-3-13 21:20

好贴 我喜欢多谢分享 希望以后大家 多多分享经验 共同进步
不错,支持了
赞                   赞               赞

Chief 发表于 2013-5-27 12:04

本帖最后由 Peace 于 2013-5-28 09:54 编辑

占个位置,等待解答问题。

-----借楼编辑--------------------------------------
校长居然没用吾爱专用注册机。。。
附吾爱版注册机及源码截图


kuwo911 发表于 2013-5-27 13:52

非常详细   感谢 Chief大牛分享精彩教程

簡簡單單 发表于 2013-5-27 15:32

这个暂时看不懂 慢慢来吧

dreamlzc 发表于 2013-5-27 16:19

下载学习一下!

q349806278 发表于 2013-5-27 16:24

图还是没有视频好,只能膜拜了

丶夜猫 发表于 2013-5-27 19:48

之前看到了150权限   = =!

朢月xX 发表于 2013-5-27 20:40

看到眼花,有视频就好了

cnmmb 发表于 2013-5-27 21:55

写的教程对新手来说有点难懂。不懂之处有:

注册码那里描述再详细一些会更容易理解

cnmmb 发表于 2013-5-27 22:15

谢谢C讲解!我下载了,但是不知道那个E语言怎么弄
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: [新手教程]鼠标连点器v2.0 脱壳(ASProtect v1.23 RC1) + 注册机