-
-
[旧帖] [求助]一个算法的汇编代码,求帮忙看下哪里错了 0.00雪花
-
发表于: 2013-6-9 14:17 1474
-
EXPORT Java_com_xxx_utils_JNIUtils_xxx
Java_com_xxx_utils_JNIUtils_xxxx
var_104= -0x104
var_A0= -0xA0
var_48= -0x48
var_34= -0x34
var_2C= -0x2C
var_28= -0x28
STMFD SP!, {R4-R11,LR}
LDR R8, =($_GLOBAL_OFFSET_TABLE_ - 0x2A24)
LDR R11, =(__stack_chk_guard_ptr - 0x8104)
SUB SP, SP, #0xE4
ADD R8, PC, R8
LDR R3, [R8,R11]
ADD R4, SP, #0x108+var_A0
MOV R6, R2
LDR R3, [R3]
MOV R10, R0
MOV R0, R4
STR R3, [SP,#0x108+var_2C]
BL MD5Init
LDR R3, [R10]
MOV R1, R6
MOV R2, #0
MOV R0, R10
MOV LR, PC
LDR PC, [R3,#0x2A4]
LDR R1, =(asc_79E8 - 0x2A70)
MOV R6, R0
MOV R2, #2
MOV R0, R4
ADD R1, PC, R1 ; "~@"
BL MD5Update
MOV R0, R6 ; s
BL strlen
MOV R1, R6
MOV R2, R0
MOV R0, R4
BL MD5Update
LDR R1, =(asc_79F0 - 0x2AA0)
ADD R5, SP, #0x108+var_48
MOV R2, #2
MOV R0, R4
ADD R1, PC, R1 ; "^@"
BL MD5Update
ADD R9, SP, #0x108+var_104
MOV R0, R4
MOV R1, R5
BL MD5Final
MOV R0, R9 ; s
MOV R1, #0 ; c
MOV R2, #0x64 ; n
BL memset
LDR R6, =(a02x - 0x2AD8)
ADD R7, R5, #9
MOV R4, R9
SUB R5, R5, #1
ADD R6, PC, R6 ; "%02x"
以上代码为一个加密函数的汇编实现,函数传入字符串,输出16进制形式的MD5密文
我对这段汇编代码的理解为:
假设输入字符串为A
1、A+~@ 进行MD5加密,得出结果B
2、B进行MD5加密,得出结果C
3、C+^@ 进行MD5加密,得出D
4、D的16进制形式即是最终结果。
其中的MD5算法是标准32位MD5算法,可是我这样得出的结果总是和实际结果不一致,求大神帮忙看下哪里理解错了
[培训]传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
他的文章
赞赏
雪币:
留言: