吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 5777|回复: 31

[原创逆向图文] APIhook补丁让被VM的程序自动写出注册码

  [复制链接]
57907103 发表于 2018-12-28 00:19 | 显示全部楼层 |阅读模式

这个软件是前不久在其他地方看到一个求助帖,看了下此软件,找到关键点不难,
主要的是软件加壳了,会影响正常断点分析,会检测内存注册机。

今天就主要说下怎么不脱壳,通过APIhook补丁使软件自动生成注册码实现永久注册。

未注册和注册后的界面如下:
未注册打开界面.png 破解后登陆成功.png

第1步:查壳
PEID查壳显示:       yoda's Protector v1.02 (.dll,.ocx) -> Ashkbiz Danehkar (h) *
ExeinfoPe查壳显示:VMProtect v.2.07 - X.X  2003-2012 VMProtect Software - www.vmpsoft.com

搞不定这壳,只能带壳调试,

第2步:找关键点
字符串参考、F12暂停、按钮事件任选一种方法即可,
打开软件,输入假码会提示“验证码不正确,注意大小写!”

OK,先载入OD,字符串查找错误信息“验证码不正确,注意大小写!”,很容易找到关键代码段,找到关键call和关键跳如下,
00460AF3    E8 987EFAFF     call T6万能写.00408990                       ; \\关键call,返回1就需要注册,返回0就注册版,EDX为真码,这里可用内存注册机,但程序会检测注册机!!!
00460AF8    85C0            test eax,eax
00460AFA    0F85 B0000000   jnz T6万能写.00460BB0                       ; \\关键跳,不跳就成功,并将注册码写到C盘下c:\writecard\tmp.o,nop即爆破,但不脱壳时此处

不修改一切代码正常,一下段或者修改代码,他这段代码自动就改变了,如下图:必须要在程序完全解码后激活断点或者修改才行。

下段前运行.png

下断前运行效果

下断前运行效果


怎么判断程序完全解码呢,测试可用API断点CreateFileW,当程序运行到这个断点时,程序就已经完全解码了,这时就可以激活断点进行分析或者打补丁 。


对软件代码进行了分析,如果只改关键跳,它会把我们输入的假码写到C盘下c:\writecard\tmp.o,下次重新启动时会再次读取这个文件进行检测,每次打开软件都必须使用补丁进行逆向,这不方便,我们可以通过改动赋值语句让程序将正确的代码自动写出到注册文件,下次打开时即为正版了,以后就不在需要使用补丁。该法如下:
===================================================================================================
第1处:(爆破,需要每次使用补丁才能正常使用)
逆向前:
[Asm] 纯文本查看 复制代码
00460AEA    8B85 FCFDFFFF   mov eax,dword ptr ss:[ebp-0x204]         ; ebp-4    ;\\假码给EAX



逆向后:
[Asm] 纯文本查看 复制代码
00460AEA    8B45 FC         mov eax,dword ptr ss:[ebp-0x4]           ; ebp-4          ;\\将真码给EAX,后面的比较就成了真码与真码比较,肯定能通过了。
00460AED    90              nop
00460AEE    90              nop
00460AEF    90              nop

===================================================================================================

===================================================================================================
第2处:(需要在第1处逆向的前提下操作此处逆向,将软件产生的真码通过改动软件代码,让软件自己将真码写出到注册文件中,实现永久逆向,真码在c:\writecard\tmp.o中。)
逆向前:
[Asm] 纯文本查看 复制代码
00402E33    56              push esi                                                    ; \\假码位数
00402E34    8B43 14         mov eax,dword ptr ds:[ebx+0x14]          ; \\假码
00402E37    50              push eax



逆向后:
[Asm] 纯文本查看 复制代码
00402E33    6A 2C           push 0x2C                                              ;\\固定显示注册码位数为44为
00402E35    FF73 E0         push dword ptr ds:[ebx-0x20]                 ;\\将真码地址作为参数给写出函数



=====================================================================================

APIhook补丁怎么打呢,可以使用XH补丁制作工具 V1.3.6,首先填入OD中修改后的数据
如图
补丁数据.png

然后勾选InLine hook,在模块后填入kernel32.dll,在函数后填入对应的API函数名CreateFileW
如图:
APIHOOK.png
生成补丁后运行补丁即可成功打开软件
破解后登陆成功.png


=============================================
贴出分析的代码

[Asm] 纯文本查看 复制代码
00460AF3    E8 987EFAFF     call T6万能写.00408990                       ; \\关键call,返回1就需要注册,返回0就注册版,这里可用内存断点,EDX为真码,但程序会检测注册机!!!
00460AF8    85C0            test eax,eax
00460AFA    0F85 B0000000   jnz T6万能写.00460BB0                       ; \\关键跳,不跳就成功,并将注册码写到C盘下c:\writecard\tmp.o,nop即爆破,但此处会被Vm,不知道怎么改?
00460B00    B8 540C4600     mov eax,T6万能写.00460C54                   ; ASCII "c:\writecard"
00460B05    E8 8A86FAFF     call T6万能写.00409194
00460B0A    84C0            test al,al
00460B0C    75 0A           jnz short T6万能写.00460B18
00460B0E    B8 540C4600     mov eax,T6万能写.00460C54                   ; ASCII "c:\writecard"
00460B13    E8 6488FAFF     call T6万能写.0040937C
00460B18    BA 6C0C4600     mov edx,T6万能写.00460C6C                   ; ASCII "c:\writecard\tmp.o"
00460B1D    8D85 20FEFFFF   lea eax,dword ptr ss:[ebp-0x1E0]
00460B23    E8 0C25FAFF     call T6万能写.00403034
00460B28    8D85 20FEFFFF   lea eax,dword ptr ss:[ebp-0x1E0]
00460B2E    E8 9D22FAFF     call T6万能写.00402DD0
00460B33    E8 CC20FAFF     call T6万能写.00402C04
00460B38    8D95 F8FDFFFF   lea edx,dword ptr ss:[ebp-0x208]
00460B3E    8B87 04030000   mov eax,dword ptr ds:[edi+0x304]
00460B44    E8 736FFDFF     call T6万能写.00437ABC
00460B49    8B95 F8FDFFFF   mov edx,dword ptr ss:[ebp-0x208]
00460B4F    8D85 20FEFFFF   lea eax,dword ptr ss:[ebp-0x1E0]
00460B55    E8 9244FAFF     call T6万能写.00404FEC
00460B5A    E8 DD2AFAFF     call T6万能写.0040363C
00460B5F    E8 A020FAFF     call T6万能写.00402C04
00460B64    8D85 20FEFFFF   lea eax,dword ptr ss:[ebp-0x1E0]
00460B6A    E8 8D25FAFF     call T6万能写.004030FC                         ;\\写出注册码的call,进去后改参数即可实现程序自己将真码写出
00460B6F    E8 9020FAFF     call T6万能写.00402C04
00460B74    B8 880C4600     mov eax,T6万能写.00460C88                   ; ASCII "Form1"
00460B79    E8 923EFBFF     call T6万能写.00414A10
00460B7E    85C0            test eax,eax
00460B80    75 16           jnz short T6万能写.00460B98
00460B82    8BCF            mov ecx,edi
00460B84    B2 01           mov dl,0x1
00460B86    A1 EC0C4600     mov eax,dword ptr ds:[0x460CEC]
00460B8B    E8 50EFFEFF     call T6万能写.0044FAE0
00460B90    8B15 7CDA4800   mov edx,dword ptr ds:[0x48DA7C]          ; T6万能写.0048EE30
00460B96    8902            mov dword ptr ds:[edx],eax
00460B98    A1 7CDA4800     mov eax,dword ptr ds:[0x48DA7C]
00460B9D    8B00            mov eax,dword ptr ds:[eax]
00460B9F    E8 C432FFFF     call T6万能写.00453E68
00460BA4    A1 28EE4800     mov eax,dword ptr ds:[0x48EE28]
00460BA9    E8 B232FFFF     call T6万能写.00453E60
00460BAE    EB 16           jmp short T6万能写.00460BC6
00460BB0    B8 980C4600     mov eax,T6万能写.00460C98                   ; ASCII "验证码不正确,注意大小写!"
00460BB5    E8 9A06FDFF     call T6万能写.00431254
00460BBA    A1 44D94800     mov eax,dword ptr ds:[0x48D944]
00460BBF    8B00            mov eax,dword ptr ds:[eax]
00460BC1    E8 EE68FFFF     call T6万能写.004574B4
00460BC6    33C0            xor eax,eax




评分

参与人数 11威望 +1 HB +31 THX +8 收起 理由
花盗睡鼠 + 2 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
虚心学习 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
消逝的过去 + 1
l278785481 + 1
小菜虫 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
weiran324 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
kway + 1
lies + 1
菜鸟中的菜鸟 + 5 + 1 [快捷评语]--你将受到所有人的崇拜!
mxx852 + 1 + 1 [快捷评语] - 评分=感恩!简单却充满爱!感谢您的作品!
Shark恒 + 1 + 20 + 1 [快捷评语] - 评分=感恩!简单却充满爱!感谢您的作品!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
mxx852 发表于 2018-12-28 21:31 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
猪哥亮 发表于 2018-12-30 09:08 | 显示全部楼层

水平有限,实在没看懂。。。。。。
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
零下10℃ 发表于 2018-12-31 07:49 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
零下10℃ 发表于 2018-12-31 07:52 | 显示全部楼层

不得不说度娘还是有点东西的溜了
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
Shy 发表于 2018-12-31 13:11 | 显示全部楼层

恕我直言,这个好像不是VM,好像是因为断点的问题把前面两个字节改成了00,导致汇编代码的改变,你取消断点就能恢复正常,虽然我不敢确定到底是断点还是OD或者是软件的原因,但这个我敢肯定不是VM,请大佬们指教
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
 楼主| 57907103 发表于 2018-12-31 22:34 来自手机端 | 显示全部楼层

软件https://pan.baidu.com/s/1wQo30PgOkCf66DpC99tIGg
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
747076693 发表于 2019-1-1 19:04 | 显示全部楼层

学习了,感谢楼主
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
雪花公子 发表于 2019-4-20 09:27 | 显示全部楼层


学习楼主的教程
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
a353698400 发表于 2019-4-22 04:29 | 显示全部楼层

学习了谢谢
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

快速回复 返回顶部 返回列表