foxjinlin 发表于 2010-12-20 03:46:08

KeygenMe一个,顺便汇编的算法分析求教

本帖最后由 foxjinlin 于 2011-3-28 08:21 编辑

小菜我最近在学易语言和汇编,用易语言写了个也很菜的KeygenMe,VC编译器静态编译,加了个UPX 2.0的壳,用来减少程序体积,呵呵,注册成功后里面有个MP3,这个比较耐听的哦。

本来这玩意是写给自己学汇编语言用的,哪知道放到OD里打开一看,小菜我就傻眼了,程序是自己写的,爆破小菜我是也勉强能做,可我自己来分析汇编算法却无从下手了,现在我的汇编学得是半生不熟,痛苦啊。

所以向论坛上的大侠们讨个该程序的汇编算法分析,帮小菜我一把,先谢过了(源码等算法分析出来后,我再传到论坛上来,易语言里看这个算法其实很简单,汇编里比较麻烦,代码比较凌乱)。

飘云 发表于 2010-12-20 04:37:43

花了几分钟反了一下,你参考下吧,没细看,,应该差不多就是这样了.... BTW:那个音乐听着蛮蛋疼的说~~
.
.
.
.
省略若干
004012D9fild    dword ptr       ; 第一位用户名的ASCII = A
004012DCfstp    qword ptr
004012DFfld   qword ptr
004012E2fsub    qword ptr       ; A = ascii - 100
004012E8fstp    qword ptr
004012EBpush    80000601
004012F0push    dword ptr
004012F3push    dword ptr
004012F6push    1
004012FBmov   ebx, 00401E90
00401300call    00401DE9
00401305add   esp, 10
.
.
.
.
.省略若干
0040139Fadd   esp, 4
004013A2pop   eax
004013A3mov   dword ptr , eax
004013A6push    80000004
004013ABpush    0
004013ADmov   eax, dword ptr ; //机器码,,,,全局变量,汗~
004013B2test    eax, eax
004013B4jnz   short 004013BB
004013B6mov   eax, 00481BA1
004013BBpush    eax
004013BCpush    1
004013C1mov   ebx, 00402120
004013C6call    00401DE9
004013CBadd   esp, 10
004013CEmov   dword ptr , eax
004013D1mov   dword ptr , edx
004013D4push    80000004
004013D9push    0
004013DBmov   eax, dword ptr
004013DEtest    eax, eax
004013E0jnz   short 004013E7
004013E2mov   eax, 00481BA1
004013E7push    eax
004013E8push    1
004013EDmov   ebx, 00402120
004013F2call    00401DE9
004013F7add   esp, 10
004013FAmov   dword ptr , eax
004013FDmov   dword ptr , edx
00401400fld   qword ptr       ; A
00401403fmul    qword ptr       ; A × 10000000 = B
00401409fstp    qword ptr
0040140Cfld   qword ptr       ; 机器码
0040140Ffsub    qword ptr       ; 机器码 - B = C
00401412fstp    qword ptr
00401415fld   qword ptr
00401418fadd    qword ptr       ; C + 2011 = SN
0040141Efstp    qword ptr
00401421push    80000601
00401426push    dword ptr
00401429push    dword ptr
0040142Cpush    1
00401431mov   ebx, 00402330
00401436call    00401DE9
0040143Badd   esp, 10
.
.
.
.
.省略若干
004014ABmov   dword ptr , eax
004014AEmov   dword ptr , edx
004014B1fld   qword ptr
//=====================================
004014B4fsub    qword ptr       ; 减法运算,传说中的关键比较,在易语言中是下面这个样子,哈~~
004014B7ftst
004014B9fstsw   ax
004014BBtest    ah, 1
004014BEje      short 004014C2
004014C0fchs
004014C2fcomp   qword ptr
004014C8fstsw   ax
004014CAtest    ah, 41
004014CDjnz   0040150D
//=====================================
004014D3push    0
004014D5push    0
004014D7push    0
004014D9push    80000301
004014DEpush    0
004014E0push    0
004014E5push    80000004
004014EApush    0
004014ECpush    00481BD9                ; 注册码不对,请重试!
004014F1push    3
004014F6mov   ebx, 00402560
004014FBcall    00401DE9
00401500add   esp, 28
00401503jmp   00401591
00401508jmp   0040153D
0040150Dpush    0
0040150Fpush    0
00401511push    0
00401513push    80000301
00401518push    0
0040151Apush    0
0040151Fpush    80000004
00401524push    0
00401526push    00481BEE                ; 恭喜你,注册成功,放个小段子来奖励你一下!
0040152Bpush    3
00401530mov   ebx, 00402560
00401535call    00401DE9


//注册机:
{-------------------------------------------------------------------------------
过程名:    GetRegCode
作用:      计算注册码
作者:      piaoyun/P.Y.G
日期:      2010.12.20
参数:      sMachineCode,sUserName: string
返回值:    string
特别说明:无
-------------------------------------------------------------------------------}
function GetRegCode(sMachineCode,sUserName: string):string;
var
cUserNameIndex_1: Char;
bAsc: Byte;
dwSum: DWORD;
begin
cUserNameIndex_1 := sUserName;
bAsc := Ord(cUserNameIndex_1) - 100;
dwSum := StrToInt(sMachineCode)- bAsc * 10000000;;
dwSum := dwSum + 2011;
Result := IntToStr(dwSum);
end;

foxjinlin 发表于 2010-12-20 09:12:17

本帖最后由 foxjinlin 于 2011-3-28 08:23 编辑

飘老大太强悍了,分析得不差毫厘啊。

多谢,多谢,呵呵。

音乐是蛋疼了些哦。

放出源码。



我的网速太慢,去掉了源码中的音乐换成了一个txt文件。

月之精灵 发表于 2010-12-20 21:03:23

老飘惊现,哈哈,楼上兄弟厉害

cjteam 发表于 2010-12-20 23:32:25

/:013强大的对话

winmvp 发表于 2010-12-21 08:24:46

理解了N大的话了,如果基础没打好,学到一定程度会有瓶颈!

zhy123138 发表于 2010-12-24 15:32:34

zhuangd 发表于 2010-12-25 10:54:34

绝好的钻研精神!支持

ljjdpyg 发表于 2011-3-9 00:17:53

新人报道,大家快乐

zyf20080921 发表于 2011-4-3 15:27:11

学习之。。
页: [1]
查看完整版本: KeygenMe一个,顺便汇编的算法分析求教