吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6740|回复: 29
收起左侧

[原创] IPADR算法分析-一款很适合小白分析算法的软件

[复制链接]
Ps出来的小赵 发表于 2018-1-31 19:21
本帖最后由 zhaozdy 于 2018-2-1 15:06 编辑

和上一个帖子一样,这也是个适合我等小白的帖子。
什么?算法分析?别逗,我等小白怎么可能会这个……
不,不,不,我也是小白,我能行,你也能行的,只要你有很基础的汇编基础(不会也没关系,可以百度或者问大佬),还有相对多的时间。(因为我等作为小白,弄清楚个算法真是太他喵的费时间了,虽然只是简单的算法)


首先,这个软件算法很简单,真的很简单,欢迎小白尝试。


本贴相对简单(我就是来水贴的),各位大佬请略过,我是为像我这样的小白服务的。


首先至于找关键的地方,我就不啰嗦了,这软件也不难,不懂得可以参考我上一个帖子
直达电梯:https://www.52pojie.cn/thread-689921-1-1.html


直接贴算法,真的很简单,但是为了水贴……你懂的

[Asm] 纯文本查看 复制代码
00405F54  |.  E8 BF1C0800   call IPAdr.00487C18
00405F59  |.  8B4D C0       mov ecx,[local.16]                       ;  ntdll.7C92DC9C
00405F5C  |.  64:890D 00000>mov dword ptr fs:[0],ecx
00405F63  |.  E9 83010000   jmp IPAdr.004060EB                       ;  (以下内容数字什么的全部说的是十六进制的)
00405F68  |>  33C0          xor eax,eax                              ;  EAX置零
00405F6A  |.  8945 B4       mov [local.19],eax                       ;  LOCAL 19变量置零(从下面看出LOCAL 19是一次循环运算的结果寄存)
00405F6D  |.  33D2          xor edx,edx                              ;  edx置零
00405F6F  |.  8955 AC       mov [local.21],edx                       ;  LOCAL 21置零(从下面看出 LOCAL 21是循环次数-1)
00405F72  |>  8B4D AC       /mov ecx,[local.21]                      ;  ecx置零 ECX是循环次数-1
00405F75  |.  0FBE440D 94   |movsx eax,byte ptr ss:[ebp+ecx-0x6C]    ;  这里太长,请看注释1
00405F7A  |.  0345 B4       |add eax,[local.19]                      ;  注册码相应指针的数据和上一次循环的结果相加,并放回eax
00405F7D  |.  83C0 CB       |add eax,-0x35                           ;  将上面的结果-35,如果小于0则溢出
00405F80  |.  8945 B4       |mov [local.19],eax                      ;  将最终运算结果放到local 19
00405F83  |.  FF45 AC       |inc [local.21]                          ;  local 21数据加1(也就是循环次数)
00405F86  |.  837D AC 0A    |cmp [local.21],0xA                      ;  循环次数与10比较
00405F8A  |.^ 7C E6         \jl short IPAdr.00405F72                 ;  上面小于10,则跳转实现,等于10,则跳转不实现
00405F8C  |.  837D B4 4A    cmp [local.19],0x4A                      ;  将最终的运算结果local 19与4A比较
00405F90  |.  74 48         je short IPAdr.00405FDA                  ;  等于4A,则注册码正确,跳;反之则不跳。
00405F92  |.  6A 30         push 0x30
00405F94  |.  B9 86A74800   mov ecx,IPAdr.0048A786
00405F99  |.  BA 5FA74800   mov edx,IPAdr.0048A75F
00405F9E  |.  A1 08F94800   mov eax,dword ptr ds:[0x48F908]
00405FA3  |.  8B00          mov eax,dword ptr ds:[eax]
00405FA5  |.  E8 8E1B0800   call IPAdr.00487B38
00405FAA  |.  8B55 BC       mov edx,[local.17]
00405FAD  |.  8B82 00030000 mov eax,dword ptr ds:[edx+0x300]
00405FB3  |.  8B10          mov edx,dword ptr ds:[eax]
00405FB5  |.  FF92 C0000000 call dword ptr ds:[edx+0xC0]
00405FBB  |.  FF4D DC       dec [local.9]
00405FBE  |.  8D45 FC       lea eax,[local.1]
00405FC1  |.  BA 02000000   mov edx,0x2
00405FC6  |.  E8 4D1C0800   call IPAdr.00487C18
00405FCB  |.  8B4D C0       mov ecx,[local.16]                       ;  ntdll.7C92DC9C
00405FCE  |.  64:890D 00000>mov dword ptr fs:[0],ecx
00405FD5  |.  E9 11010000   jmp IPAdr.004060EB
00405FDA  |>  66:C745 D0 2C>mov word ptr ss:[ebp-0x30],0x2C          ;  能跳到这里说明注册码正确了,下面就不分析了
00405FE0  |.  BA 01000080   mov edx,0x80000001
00405FE5  |.  8B45 A4       mov eax,[local.23]
00405FE8  |.  E8 631B0800   call IPAdr.00487B50
00405FED  |.  66:C745 D0 38>mov word ptr ss:[ebp-0x30],0x38



这里是注释1的解释:
movsx这个比较尴尬,对我等小白来说不友善啊,这里软件注册码是ASCII码,也就是说ASCII码的1,对应的是十六进制的31;ASCII码的2,对应的是十六进制的32;ASCII码的A,对应的是十六进制的41;ASCII码的F,对应的是十六进制的46;
movsx的意思是   比如一个AX的高低位AH,AL,AL里的最高位为1,则AH全部为1;若AL里的最高位为0,则AH全部为0。什么?看不懂?没关系,我会举例子的。

我是例子:
QQ截图20180131184800.png
那么回到这个软件,我们的注册码是1-F的话,就算是F的话,二进制也是01000110,AL的最高位也只能是0,所以可以当作MOV考虑。
好,究竟什么意思呢?

movsx eax,byte ptr ss:[ebp+ecx-0x6C]   EBP是保存在EBP中的指针位置,ECX是循环次数-0,0x6C就是要减去的值,具体什么意思呢?看下图

1212.png

图中最初的EBP是0012F1D8,也就是左下角20这个位置,当第一次循环的时候,ECX是0,那么0012F1D8-6C,
就是指针0012F16C,也就是画红框46的那个位置,也就是注册码ASCII F对应的16进制数值46,当第二次循环的时候,就是取的0012F16D,也就是注册码第二位,画红框右边的那个46。

好了,分析就这样,总结一下就是


假如注册吗为  x1 x2 x3 x4 x5 x6 x7 x8 x9 x10  当然,这里用的是十六进制,最终注册码要换回ASCII码那么运算方法就是
x1(必须大于35)-35+x2(结果必须大于35)-35+x3(结果必须大于35)-35+……x10(结果必须大于35)-35=4A


为什么必须大于35?不大于35,减去35之后就溢出了

也就是一个十元1次函数了……好了,分析完毕,就是那么简单。


什么?注册机?别闹!对于我等不会任何编程语言的小白来说怎么会写注册机……这种事情还是交给610吧

特别感谢@610100的认真搞基,有什么困难大家可以尽情找他。
特别感谢@C-FBI-QM   @苏紫方璇   两位大神对我的指导
特别感谢论坛为我等小白提供的学(gao)习(ji)环境


另外本人小白一枚,若本帖有什么不对的地方,还望指出…………


软件下载地址:  点我下载               本帖算法过于简单,希望各位小白先自己尝试

免费评分

参与人数 13威望 +1 吾爱币 +30 热心值 +13 收起 理由
zhaotianrun + 2 + 1 主公
C-FBI-QM + 2 + 1 谢谢@Thanks!
神枪泡泡丶 + 2 + 1 用心讨论,共获提升!
Hmily + 1 + 10 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
朱朱你堕落了 + 1 + 1 多发贴子少吹牛。哈哈。
天使3号 + 1 + 1 牛逼牛逼,学习了
Godfather.Cr + 5 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
z128436131 + 1 + 1 膜拜大佬
YCXS + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
你的明知还未知 + 1 + 1 谢谢@Thanks!
xinkui + 1 + 1 谢谢@Thanks!
苏紫方璇 + 1 + 1 膜拜
610100 + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

610100 发表于 2018-1-31 19:24
不会写注册机,我爆破了
给个试出来的验证码
9999999AB
顺序随便放
whyida 发表于 2018-2-1 12:31
仔细看看好像是看懂了。
[Python] 纯文本查看 复制代码
import random
key=input('输入0获取序列号:')
S ='L1234567890-=QWERTYUIOP[]\ASDFGHJKL;\'ZXCVBNM,./!@#$%^&*()_+qwertyuiop{}|asdfghjkl:"zxcvbnm<>?'
S_len=len(S)
while(key=="0"):
    
    for i in range(0,S_len,1):
        a1 = S[random.randint (0,len(S)-1)]
        for i in range(0,S_len,1):
        
            a2 = S[random.randint (0,len(S)-1)] 
            a3 = S[random.randint (0,len(S)-1)] 
            a4 = S[random.randint (0,len(S)-1)]                            
            a5 = S[random.randint (0,len(S)-1)] 
            a6 = S[random.randint (0,len(S)-1)] 
            a7 = S[random.randint (0,len(S)-1)] 
            a8 = S[random.randint (0,len(S)-1)] 
            a9 = S[random.randint (0,len(S)-1)]                                
            a10 =S[random.randint (0,len(S)-1)]

            m = ord(str(a1))+ord(str(a2))+ord(str(a3))+ord(str(a4))+ord(str(a5))+ord(str(a6))+ord(str(a7))+ord(str(a8))+ord(str(a9))+ord(str(a10))-int('35',16)*10
            if m==74:
                print ('SN :    '+a1+a2+a3+a4+a5+a6+a7+a8+a9+a10)
                
                key2=input('输入任何数继续:')

else:
    print ('输入0')

点评

小白不懂编程,大佬们有空看看写得是不是对的  发表于 2018-2-1 13:27

免费评分

参与人数 2吾爱币 +3 热心值 +2 收起 理由
朱朱你堕落了 + 1 + 1 膜拜大佬。
Ps出来的小赵 + 2 + 1 膜拜大佬,我要抱大腿~~根部

查看全部评分

苏紫方璇 发表于 2018-1-31 19:42
像我这种小白,帖子都看不懂,只能膜拜大佬水帖子了

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
朱朱你堕落了 + 1 + 1 你又在装菜鸟!

查看全部评分

Niacker、Li 发表于 2018-1-31 19:42
哇,610大神可以,刚发就给破了,学习学习

免费评分

参与人数 1吾爱币 +1 收起 理由
Ps出来的小赵 + 1 就是就是,秒破,好厉害

查看全部评分

 楼主| Ps出来的小赵 发表于 2018-1-31 19:48
苏紫方璇 发表于 2018-1-31 19:42
像我这种小白,帖子都看不懂,只能膜拜大佬水帖子了

大神别闹,我要继续抱你的大腿~~嗯~~根部…………好多腿毛………………
610100 发表于 2018-1-31 19:55

像我这种小白,帖子都看不懂,只能膜拜大佬水帖子了
tntop0 发表于 2018-1-31 19:57
假装看懂了,但是还是有点没明白
Niacker、Li 发表于 2018-1-31 21:05
610100 发表于 2018-1-31 19:55
像我这种小白,帖子都看不懂,只能膜拜大佬水帖子了

大神还是不要谦虚啦
ygfygf_888 发表于 2018-1-31 21:30
真的很简单,欢迎小白尝试
oljbd7alyel 发表于 2018-1-31 21:32 来自手机
说的很清楚,对小白一针见血
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-24 08:44

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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