cu629944 发表于 2011-5-13 16:19

内存监视器的算法分析

本帖最后由 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 , 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 , eax
0040B7A7    8B45 F4         mov   eax, dword ptr
0040B7AA    50            push    eax
0040B7AB    8B5D FC         mov   ebx, dword ptr
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 , 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 , eax
0040B7BF    6A 01         push    1
0040B7C1    B8 69804900   mov   eax, 00498069                  ; 据分析及价格很高45333
0040B7C6    8945 F4         mov   dword ptr , eax
0040B7C9    8D45 F4         lea   eax, dword ptr
0040B7CC    50            push    eax
0040B7CD    8D45 FC         lea   eax, dword ptr
0040B7D0    50            push    eax
0040B7D1    E8 1A6AFFFF   call    004021F0
0040B7D6    8945 F0         mov   dword ptr , 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 , eax
00402224    8D45 FC         lea   eax, dword ptr
00402227    50            push    eax
00402228    E8 14020000   call    00402441
0040222D    8945 F8         mov   dword ptr , eax
00402230    8B5D FC         mov   ebx, dword ptr
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:=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 , eax
004022B5    8B45 FC         mov   eax, dword ptr

当走过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 , eax
00402314    8B45 FC         mov   eax, dword ptr

当走过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
0040232E    8903            mov   dword ptr , eax
00402330    FF75 08         push    dword ptr
00402333    E8 19030000   call    00402651
00402338    8945 FC         mov   dword ptr , eax

当走到00402338的时候,发现取反机器码

00402333    E8 19030000   call    00402651
00402338    8945 FC         mov   dword ptr , eax
0040233B    FF75 FC         push    dword ptr
0040233E    8B5D 0C         mov   ebx, dword ptr
00402341    FF33            push    dword ptr
00402343    8B5D 08         mov   ebx, dword ptr
00402346    FF33            push    dword ptr
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 , 0
0040238B    6A 00         push    0
0040238D    FF75 FC         push    dword ptr
00402390    FF75 0C         push    dword ptr
00402393    E8 18060000   call    004029B0
00402398    8945 F8         mov   dword ptr , eax
0040239B    8B45 F8         mov   eax, dword ptr

当到004502398的时候,我们发现EAX取了一个MD5加密的字符串

eax=0017B9F0, (ASCII "7eb7e433ad0ff4ec58a474327ea5922c")
堆栈 ss:=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

吾爱丶破解 发表于 2011-5-13 16:29

呵呵破文写的不错支持一下了

cu629944 发表于 2011-5-13 16:20

老规矩,沙发自己的,你们别跟我抢哈~吼吼~

Illidan_Stor 发表于 2011-5-13 16:57

汇编好难......不太懂.......

ximo 发表于 2011-5-13 18:48

现在很少有人写算法分析了…

nic 发表于 2011-5-14 13:07

不错支持一下了

zone0826 发表于 2011-5-14 18:03

支持啊,你是从哪里来的大内密探……呵呵呵。东西直接拿走,前排支持。

lcylcyll 发表于 2011-5-14 19:07

这一个可是要支持的啊现在只会一些最简单的爆破
不过真的不会汇编真的不行的啊

Emil 发表于 2011-5-14 19:17

我来定一个了 不厚道啊 发帖了都不说一句

0xdeath 发表于 2011-5-14 19:25

我来看看怎么样·········
页: [1] 2 3 4 5 6 7
查看完整版本: 内存监视器的算法分析