好友
阅读权限30
听众
最后登录1970-1-1
|
本帖最后由 cu629944 于 2014-8-6 11:51 编辑
【文章标题】: 内存监视器的算法分析
【软件名称】: 内存注册机
【下载地址】: 自己搜索下载
【加壳方式】: 变形UPX
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
实现说一下,我家的金山报毒,我的AVAST不报毒,你们要是不放心可以不下,不过在我破解的过程中分析了一下,没有毒
是误报,如果不信,信杀软,请不用下载。
闲着无聊,来分析一个内存监视工具的算法,这个工具对些外挂的人是很有帮助的哦~怎么使用,大家应该都会吧~HOHO~
如果写了一个炫舞的外挂就借我用用~我对外挂就是一个白痴~呵呵~
查一下壳,是UPX的,应该是变形壳,脱壳机搞不定~呵呵,所以我们就用ESP定律来手动脱衣下壳~
脱壳后,不能运行,所以我们要修复一下IAT~可以运行,运行后,提示程序非法修改,说明程序有自校验,我们OD载入,
搜索“程序被非法修改”,找到后双击进入
00408821 83C4 04 add esp, 4
00408824 837D F8 00 cmp dword ptr [ebp-8], 0
00408828 0F85 63000000 jnz 00408891
0040882E 68 04000080 push 80000004
00408833 6A 00 push 0
00408835 68 6D824900 push 0049826D ; 注意
0040883A 68 01030080 push 80000301
0040883F 6A 00 push 0
00408841 68 30100000 push 1030
00408846 68 04000080 push 80000004
0040884B 6A 00 push 0
0040884D 68 72824900 push 00498272 ; 程序被非法修改 请重新下载!
00408852 68 03000000 push 3
00408857 BB C0004100 mov ebx, 004100C0
找到关键跳转JNZ,我们将它改为JE,然后右键==》保存为可执行文件,然后再OD载入,F9运行程序
搜索ascii码~,发现关键句,注册成功,我们双击进入,向上面发,发现没什么,所以就不再段首下断了
0040B79F E8 A163FFFF call 00401B45
0040B7A4 8945 F4 mov dword ptr [ebp-C], eax
0040B7A7 8B45 F4 mov eax, dword ptr [ebp-C]
0040B7AA 50 push eax
0040B7AB 8B5D FC mov ebx, dword ptr [ebp-4]
0040B7AE 85DB test ebx, ebx
0040B7B0 74 09 je short 0040B7BB
0040B7B2 53 push ebx
0040B7B3 E8 372B0000 call 0040E2EF
0040B7B8 83C4 04 add esp, 4
0040B7BB 58 pop eax
0040B7BC 8945 FC mov dword ptr [ebp-4], eax
0040B7BF 6A 01 push 1
0040B7C1 B8 69804900 mov eax, 00498069 ; 据分析及价格很高45333
我们在0040B79F下F2断点,输入注册信息“1234567890”,点击注册,程序断下后,F8跟踪,断下后,在
EAX寄存器,发现开始取我们的机器码“2141939516”,继续F8
0040B7B2 53 push ebx
0040B7B3 E8 372B0000 call 0040E2EF
0040B7B8 83C4 04 add esp, 4
0040B7BB 58 pop eax
0040B7BC 8945 FC mov dword ptr [ebp-4], eax
0040B7BF 6A 01 push 1
0040B7C1 B8 69804900 mov eax, 00498069 ; 据分析及价格很高45333
0040B7C6 8945 F4 mov dword ptr [ebp-C], eax
0040B7C9 8D45 F4 lea eax, dword ptr [ebp-C]
0040B7CC 50 push eax
0040B7CD 8D45 FC lea eax, dword ptr [ebp-4]
0040B7D0 50 push eax
0040B7D1 E8 1A6AFFFF call 004021F0
0040B7D6 8945 F0 mov dword ptr [ebp-10], eax
当到0040B7C1时,发现注释有一个不知道什么意思的字符串,需要小心一下~
继续F8单步,当到达0040B7D1的时候,发现到达算法CALL,我们F7进入
00402214 BB 50F54000 mov ebx, 0040F550
00402219 E8 EFC00000 call 0040E30D
0040221E 83C4 10 add esp, 10
00402221 8945 FC mov dword ptr [ebp-4], eax
00402224 8D45 FC lea eax, dword ptr [ebp-4]
00402227 50 push eax
00402228 E8 14020000 call 00402441
0040222D 8945 F8 mov dword ptr [ebp-8], eax
00402230 8B5D FC mov ebx, dword ptr [ebp-4]
00402233 85DB test ebx, ebx
00402235 74 09 je short 00402240
00402237 53 push ebx
00402238 E8 B2C00000 call 0040E2EF
当到达0040222D的时候,在EAX出现了一个字节集eax=00167060, (ASCII "{190,221,183,214,206,
246,188,176,188,219,184,241,186,220,184,223,52,53,51,51,51}")
堆栈 ss:[0012F1C0]=7FAB673C
这是什么东西呢?不知道,我突然想,是不是和刚才的那个不明所以的字符串有关系?我立即运行
破解计算器,将“据分析及价格很高45333”,转为字节集的时候,发现和这个字节集一模一样,所
以,我假设它为密钥
明白之后,继续F8单步走~
00402298 /75 05 jnz short 0040229F
0040229A |B8 10804900 mov eax, 00498010
0040229F \50 push eax
004022A0 68 06000000 push 6
004022A5 BB D0F14000 mov ebx, 0040F1D0
004022AA E8 5EC00000 call 0040E30D
004022AF 83C4 4C add esp, 4C
004022B2 8945 FC mov dword ptr [ebp-4], eax
004022B5 8B45 FC mov eax, dword ptr [ebp-4]
当走过004022AA的时候,字节集的逗号全部去掉了~
004022F7 /75 05 jnz short 004022FE
004022F9 |B8 10804900 mov eax, 00498010
004022FE \50 push eax
004022FF 68 03000000 push 3
00402304 BB C0E94000 mov ebx, 0040E9C0
00402309 E8 FFBF0000 call 0040E30D
0040230E 83C4 28 add esp, 28
00402311 8945 FC mov dword ptr [ebp-4], eax
00402314 8B45 FC mov eax, dword ptr [ebp-4]
当走过00402309的时候,在EAX的寄存器上出现了字符串
EAX 0015F6F8 ASCII "9022118321420624618817618"
经过分析,发现和上面的字节集,从第三位开始取,到第27是相同的,继续单步跟踪
0040231F /74 09 je short 0040232A
00402321 |53 push ebx
00402322 |E8 C8BF0000 call 0040E2EF
00402327 |83C4 04 add esp, 4
0040232A \58 pop eax
0040232B 8B5D 0C mov ebx, dword ptr [ebp+C]
0040232E 8903 mov dword ptr [ebx], eax
00402330 FF75 08 push dword ptr [ebp+8]
00402333 E8 19030000 call 00402651
00402338 8945 FC mov dword ptr [ebp-4], eax
当走到00402338的时候,发现取反机器码
00402333 E8 19030000 call 00402651
00402338 8945 FC mov dword ptr [ebp-4], eax
0040233B FF75 FC push dword ptr [ebp-4]
0040233E 8B5D 0C mov ebx, dword ptr [ebp+C]
00402341 FF33 push dword ptr [ebx]
00402343 8B5D 08 mov ebx, dword ptr [ebp+8]
00402346 FF33 push dword ptr [ebx]
00402348 B9 03000000 mov ecx, 3
0040234D E8 3EF1FFFF call 00401490
00402352 83C4 0C add esp, 0C
当走到00402352的时候,EAX出现了取反机器码+取前27位的密钥+正的机器码
00402384 C745 FC 0000000>mov dword ptr [ebp-4], 0
0040238B 6A 00 push 0
0040238D FF75 FC push dword ptr [ebp-4]
00402390 FF75 0C push dword ptr [ebp+C]
00402393 E8 18060000 call 004029B0
00402398 8945 F8 mov dword ptr [ebp-8], eax
0040239B 8B45 F8 mov eax, dword ptr [ebp-8]
当到004502398的时候,我们发现EAX取了一个MD5加密的字符串
eax=0017B9F0, (ASCII "7eb7e433ad0ff4ec58a474327ea5922c")
堆栈 ss:[0012F1C0]=00165E90, (ASCII "214193951690221183214206246188176186159391412")
说明利用了MD5加密,就是md5(取反机器码+密钥+机器码)
004023C5 /75 05 jnz short 004023CC
004023C7 |B8 10804900 mov eax, 00498010
004023CC \50 push eax
004023CD 68 01000000 push 1
004023D2 BB 20ED4000 mov ebx, 0040ED20
004023D7 E8 31BF0000 call 0040E30D
004023DC 83C4 10 add esp, 10
此时在EAX的寄存器出现了大写的MD5加密
00402406 /75 05 jnz short 0040240D
00402408 |B8 10804900 mov eax, 00498010
0040240D \50 push eax
0040240E 68 03000000 push 3
00402413 BB C0E94000 mov ebx, 0040E9C0
00402418 E8 F0BE0000 call 0040E30D
0040241D 83C4 28 add esp, 28
当到0040241D的时候,在EAX上出现了一个去掉前两位的MD5加密的大写字符串
EAX 0015F6F8 ASCII "B7E433AD0FF4EC58A474327EA"
继续跟踪就出了算法CALL到达比较的地方了~
所以这个算法就是MD5加密取反机器码+密钥+机器码,再去掉前两位,取第三位到第27位,便是我们的注册码了
此时写注册机~呵呵~注册机和软件都给大家打包了~
--------------------------------------------------------------------------------
【经验总结】
算法就是MD5加密取反机器码+密钥+机器码,再去掉前两位,取第三位到第27位,便是我们的注册码了,比较简单
--------------------------------------------------------------------------------
【版权声明】: 本文原创于Nisycc, 转载请注明作者并保持文章的完整, 谢谢!
2011年05月13日 16:07:32
|
-
-
注册机.rar
255.41 KB, 下载次数: 315, 下载积分: 吾爱币 -1 CB
写了注册机,卖一下撒~嘿嘿
-
-
内存监视工具.rar
437.09 KB, 下载次数: 478, 下载积分: 吾爱币 -1 CB
免费评分
-
查看全部评分
|