首页
社区
课程
招聘
[第二阶段第1题]攻防竞赛第二阶段第1题(攻击篇)答题
2014-10-28 19:14 5010

[第二阶段第1题]攻防竞赛第二阶段第1题(攻击篇)答题

2014-10-28 19:14
5010
分析文章:
1.将密码的'-'字符去掉
2.密码每4个字节一组,然后将每字节加上密码表开始偏移得到表中数字.
3.将表中得到的数字进行逻辑运算得到3个值.
4.将逻辑运算出来的值与账户16进制进行对比是否相同,相同显示成功。

算法:
// 11.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include <windows.h>

unsigned char Table [256] = {
	0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 
		0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 
		0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x3E, 0x80, 0x80, 0x80, 0x3F, 
		0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 
		0x80, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 
		0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x80, 0x80, 0x80, 0x80, 0x80, 
		0x80, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 
		0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x80, 0x80, 0x80, 0x80, 0x80, 
		0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 
		0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 
		0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 
		0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 
		0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 
		0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 
		0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 
		0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80
};




int main(int argc, char* argv[])
{

	char Account[256] = {0};//账户
	char Password[256] = {0};//密码
	char PasswordTemp[256] = {0};

	printf("-------------------crackme.l1.apk 注册机-------------\n");
//	printf("账户: ");
//	scanf("%s",Account);
	printf("密码: ");
	scanf("%s",Password);

/*	if (9 != strlen(Account))
	{
		printf("只支持9位数字账户\n");
		return -1;
	}*/

	if ( (Password[3] != '-') || (Password[7] != '-') || (Password[0XB] != '-'))
	{
		printf("输入密码格式有误!\n");
		return -1;
	}


	//-----去掉'-'

	for (int i = 0; i < strlen((const char *)Password); i++)
	{
		static int j = 0;
		if (Password[i] != '-')
		{
			PasswordTemp[j] = Password[i];
			j++;
		}
	}

	//算术右移ASRS
	//循环逻辑左移LSLS
	//异或ORRS

	//-------查表过程过
	BYTE results[256] = {0};
	for (BYTE t =0; t<strlen((const char *)PasswordTemp); t+=4)
	{
		static int inxres = 0;

		BYTE temp[4] = {0};
		for (BYTE f =0; f<4; f++)
		{
			
			BYTE index = PasswordTemp[t+f];

			temp[f] = Table[index];
		}


		//-------逻辑运算
		BYTE A1,A2,A3, A4,A5,A6,A7,A8;
		A1 = temp[1];
		A3 = A1;
		A1 >>=0X4;
		A2 = temp[0];
		A2 <<=0X2;
		A1 ^= A2;
		results[inxres+0] = A1;

		//---------
		A1 = temp[2];
		A4 = A1;
		A2 = A1 >> 0X2;
		//A2 = A3;
		A3 <<=0X4;
		A5 = A4;
		A3 ^= A2;
		results[inxres+1] = A3;
		//-------------

		A1 = temp[3];
		A2 = A5 << 0X6;
		A2 ^= A1;
		results[inxres+2] = A2;
		inxres+=3;

	}
	


	//---生成表并填充0x80
/*	BYTE *Table1 = (BYTE*)malloc(0x100);
	BYTE *TableTemp  = NULL;
	if (NULL == Table1)
	{
		return -1;
	}

	memset(Table1, 0x80, 0x100);

	TableTemp = Table1;
	Table1 += 0X41;

	for (BYTE n = 0; n <=0x1A; n++)
	{
		Table1[n] = n;

		if (n == 0x1A)
		{
			Table1 = TableTemp;
			Table1 += 0x62;
			Table1[n] = n;

			for (BYTE m = 0; m != 0x62; m++)
			{
				Table1[m] = m;
			}
		}
	}*/



	getchar();
	return 0;
}


[培训]《安卓高级研修班(网课)》月薪三万计划,掌 握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞1
打赏
分享
最新回复 (7)
雪    币: 32403
活跃值: (18860)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 8 2014-10-28 20:26
3
0
你这个分析文章太简单了。
将分析调试过程描述一下。
雪    币: 3902
活跃值: (5545)
能力值: ( LV13,RANK:550 )
在线值:
发帖
回帖
粉丝
我是小三 11 2014-10-28 22:14
4
0
明天去公司再写吧。分析文档都在公司电脑上的。
雪    币: 32403
活跃值: (18860)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 8 2014-10-28 22:24
5
0
好的,不要超过提交时间后24小时,即在明天19:14:19前补上。
雪    币: 3902
活跃值: (5545)
能力值: ( LV13,RANK:550 )
在线值:
发帖
回帖
粉丝
我是小三 11 2014-10-29 09:11
6
0
多谢老大的提示,现在将分析调试过程描述下

在Java_com_crackme_MainActivity_crackme函数下好断点,输入账户与密码

获得输入的账户与密码

//申请空间存放账户与密码
libcrackme.so:8050536C loc_8050536C                            ; CODE XREF: Java_com_crackme_MainActivity_crackme+2Ep
libcrackme.so:8050536C PUSH            {R4-R7,LR}
libcrackme.so:8050536E SUB             SP, SP, #0x14
libcrackme.so:80505370 MOVS            R6, R2
libcrackme.so:80505372 MOVS            R4, R0
libcrackme.so:80505374 MOVS            R5, R1
libcrackme.so:80505376 BL              loc_80505328
libcrackme.so:8050537A CMP             R6, #0
libcrackme.so:8050537C BEQ             loc_805053DE
libcrackme.so:8050537E CMP             R5, #0
libcrackme.so:80505380 BEQ             loc_805053DE
libcrackme.so:80505382 MOVS            R0, R5
libcrackme.so:80505384 BLX             strlen_0
libcrackme.so:80505388 STR             R0, [SP,#8]
libcrackme.so:8050538A MOVS            R7, R0
libcrackme.so:8050538C MOVS            R0, R6
libcrackme.so:8050538E BLX             strlen_0
libcrackme.so:80505392 ADDS            R7, #1
libcrackme.so:80505394 MOVS            R3, R0
libcrackme.so:80505396 ADDS            R3, #1
libcrackme.so:80505398 STR             R0, [SP,#0xC]
libcrackme.so:8050539A MOVS            R0, R7
libcrackme.so:8050539C STR             R3, [SP,#4]
libcrackme.so:8050539E BLX             new                     ; 申请空间存放账户与密码
libcrackme.so:805053A2 STR             R0, [R4,#0x34]
libcrackme.so:805053A4 LDR             R0, [SP,#4]
libcrackme.so:805053A6 BLX             new
libcrackme.so:805053AA LDR             R3, [R4,#0x34]
libcrackme.so:805053AC STR             R0, [R4,#0x38]
libcrackme.so:805053AE CMP             R3, #0
libcrackme.so:805053B0 BEQ             loc_805053DE
libcrackme.so:805053B2 CMP             R0, #0
libcrackme.so:805053B4 BEQ             loc_805053DE
libcrackme.so:805053B6 MOVS            R0, R3
libcrackme.so:805053B8 MOVS            R1, #0
libcrackme.so:805053BA MOVS            R2, R7
libcrackme.so:805053BC BLX             memset_0
libcrackme.so:805053C0 MOVS            R1, #0
libcrackme.so:805053C2 LDR             R2, [SP,#4]
libcrackme.so:805053C4 LDR             R0, [R4,#0x38]
libcrackme.so:805053C6 BLX             memset_0
libcrackme.so:805053CA MOVS            R1, R5
libcrackme.so:805053CC LDR             R2, [SP,#8]
libcrackme.so:805053CE LDR             R0, [R4,#0x34]
libcrackme.so:805053D0 BLX             memcpy_0                ; 拷贝账户到申请的空间中
libcrackme.so:805053D4 LDR             R0, [R4,#0x38]
libcrackme.so:805053D6 MOVS            R1, R6
libcrackme.so:805053D8 LDR             R2, [SP,#0xC]
libcrackme.so:805053DA BLX             memcpy_0                ; 拷贝密码到申请的空间中
libcrackme.so:805053DE

//----------判断输入的账户与密码长度是否合法
libcrackme.so:805053E4 PUSH            {R4-R6,LR}
libcrackme.so:805053E6 LDR             R4, =(unk_80514F78 - 0x805053EE)
libcrackme.so:805053E8 LDR             R3, [R0,#0x34]
libcrackme.so:805053EA ADD             R4, PC ; unk_80514F78
libcrackme.so:805053EC CMP             R3, #0
libcrackme.so:805053EE BEQ             loc_80505410
libcrackme.so:805053F0 LDR             R5, [R0,#0x38]
libcrackme.so:805053F2 CMP             R5, #0
libcrackme.so:805053F4 BEQ             loc_80505410
libcrackme.so:805053F6 MOVS            R0, R3
libcrackme.so:805053F8 BLX             strlen_0                ; 账户长度
libcrackme.so:805053FC MOVS            R6, R0
libcrackme.so:805053FE SUBS            R6, #6
libcrackme.so:80505400 MOVS            R0, R5
libcrackme.so:80505402 BLX             strlen_0                ; 密码长度
libcrackme.so:80505406 CMP             R6, #0xE                ; 判断账户与密码长度是否合法
libcrackme.so:80505408 BHI             loc_80505410
libcrackme.so:8050540A SUBS            R0, #0xC
libcrackme.so:8050540C CMP             R0, #0x12               ; 判断账户与密码长度是否合法
libcrackme.so:8050540E BLS             loc_80505424

//-------判断密码中是否包含字符'-'
libcrackme.so:80505986 LDR             R3, [R5,#0x38]
libcrackme.so:80505988 LDRB            R2, [R3,#3]
libcrackme.so:8050598A CMP             R2, #0x2D               ; 判断密码中是否包含字符'-'
libcrackme.so:8050598C BNE             loc_8050599A
libcrackme.so:8050598E LDRB            R2, [R3,#7]
libcrackme.so:80505990 CMP             R2, #0x2D
libcrackme.so:80505992 BNE             loc_8050599A
libcrackme.so:80505994 LDRB            R3, [R3,#0xB]
libcrackme.so:80505996 CMP             R3, #0x2D
libcrackme.so:80505998 BEQ             loc_805059B0

//--------去掉密码中包含的字符'-'
libcrackme.so:8050545A loc_8050545A                            ; CODE XREF: sub_80505430+3Aj
libcrackme.so:8050545A LDRB            R1, [R5,R3]             ; 去掉密码字符'-'
libcrackme.so:8050545C CMP             R1, #0x2D
libcrackme.so:8050545E BEQ             loc_80505466
libcrackme.so:80505460 ADD             R0, SP, #0x118+var_114
libcrackme.so:80505462 STRB            R1, [R0,R2]
libcrackme.so:80505464 ADDS            R2, #1
libcrackme.so:80505466
libcrackme.so:80505466 loc_80505466                            ; CODE XREF: sub_80505430+2Ej
libcrackme.so:80505466 ADDS            R3, #1
libcrackme.so:80505468
libcrackme.so:80505468 loc_80505468                            ; CODE XREF: sub_80505430+28j
libcrackme.so:80505468 CMP             R3, R6
libcrackme.so:8050546A BLT             loc_8050545A            ; 去掉密码字符'-'
libcrackme.so:8050546C MOVS            R0, R5
libcrackme.so:8050546E ADD             R1, SP, #0x118+var_114
libcrackme.so:80505470 BLX             memcpy_0                ; 将去掉字符的密码拷贝存放在另一地方
libcrackme.so:80505474 LDR             R2, [SP,#0x118+var_14]

//-------判断密码表是否创建
libcrackme.so:805059BC LDRB            R2, [R3]
libcrackme.so:805059BE CMP             R2, #0                  ; 判断表是否创建了

//--------如果没有创建密码表,就开始创建
libcrackme.so:805059C0 BNE             loc_80505A26            ; 没有就开始创建
libcrackme.so:805059C2 MOVS            R0, #0x80
libcrackme.so:805059C4 ADDS            R3, #1
libcrackme.so:805059C6 LSLS            R1, R0, #1
libcrackme.so:805059C8
libcrackme.so:805059C8 loc_805059C8                            ; CODE XREF: libcrackme.so:805059CEj
libcrackme.so:805059C8 STRB            R0, [R2,R3]             ; 填充0x80
libcrackme.so:805059CA ADDS            R2, #1
libcrackme.so:805059CC CMP             R2, R1                  ; 判断是否完成 大小为0x100
libcrackme.so:805059CE BNE             loc_805059C8            ; 填充0x80

libcrackme.so:805059D8
libcrackme.so:805059D8 loc_805059D8                            ; CODE XREF: libcrackme.so:805059E2j
libcrackme.so:805059D8 ADDS            R0, R1, R3
libcrackme.so:805059DA ADDS            R0, #0x41               ; 密码表开始地址加上0x41
libcrackme.so:805059DC STRB            R3, [R0]                ; 循环填充
libcrackme.so:805059DE ADDS            R3, #1
libcrackme.so:805059E0 CMP             R3, #0x1A               ; 判断是否结束
libcrackme.so:805059E2 BNE             loc_805059D8
libcrackme.so:805059E4 ADDS            R2, #0x62               ; 密码表开始地址加上0x62
libcrackme.so:805059E6
libcrackme.so:805059E6 loc_805059E6                            ; CODE XREF: libcrackme.so:805059F2j
libcrackme.so:805059E6 STRB            R3, [R2]                ; 开始填充
libcrackme.so:805059E8 ADDS            R3, #1
libcrackme.so:805059EA LSLS            R3, R3, #0x18
libcrackme.so:805059EC LSRS            R3, R3, #0x18
libcrackme.so:805059EE ADDS            R2, #1
libcrackme.so:805059F0 CMP             R3, #0x34               ; 判断是否完成
libcrackme.so:805059F2 BNE             loc_805059E6            ; 开始填充
libcrackme.so:805059F4 LDR             R2, =(byte_80515120 - 0x805059FA)
libcrackme.so:805059F6 ADD             R2, PC ; byte_80515120
libcrackme.so:805059F8 ADDS            R2, #0x31
libcrackme.so:805059FA
libcrackme.so:805059FA loc_805059FA                            ; CODE XREF: libcrackme.so:80505A06j
libcrackme.so:805059FA STRB            R3, [R2]                ; 填充
libcrackme.so:805059FC ADDS            R3, #1
libcrackme.so:805059FE LSLS            R3, R3, #0x18
libcrackme.so:80505A00 LSRS            R3, R3, #0x18
libcrackme.so:80505A02 ADDS            R2, #1
libcrackme.so:80505A04 CMP             R3, #0x3E               ; 判断是否完成
libcrackme.so:80505A06 BNE             loc_805059FA            ; 填充
libcrackme.so:80505A08 LDR             R2, =(byte_80515120 - 0x80505A0E)
libcrackme.so:80505A0A ADD             R2, PC ; byte_80515120
libcrackme.so:80505A0C MOVS            R1, R2
libcrackme.so:80505A0E ADDS            R1, #0x2C
libcrackme.so:80505A10 STRB            R3, [R1]
libcrackme.so:80505A12 MOVS            R3, R2
libcrackme.so:80505A14 ADDS            R3, #0x30
libcrackme.so:80505A16 MOVS            R1, #0x3F
libcrackme.so:80505A18 STRB            R1, [R3]
libcrackme.so:80505A1A MOVS            R3, R2
libcrackme.so:80505A1C ADDS            R3, #0x3E
libcrackme.so:80505A1E MOVS            R1, #0
libcrackme.so:80505A20 STRB            R1, [R3]
libcrackme.so:80505A22 MOVS            R3, #1
libcrackme.so:80505A24 STRB            R3, [R2]                ; 写入标志1,下次判断是否创建

密码每4个字节一组,然后将每字节加上密码表开始偏移得到表中数字.
将表中得到的数字进行逻辑运算得到3个数值,这样循环计算
libcrackme.so:80505A5A MOV             R4, R12
libcrackme.so:80505A5C ADDS            R0, R4, R3
libcrackme.so:80505A5E LDRB            R4, [R0,R1]             ; 取密码1字节
libcrackme.so:80505A60 LDR             R0, [SP,#0x14]
libcrackme.so:80505A62 LDRB            R4, [R0,R4]             ; 将密码表当数组,密码当索引,
libcrackme.so:80505A64 ADD             R0, SP, #0x1C
libcrackme.so:80505A66 STRB            R4, [R1,R0]             ; 存放取得密码表中的值
libcrackme.so:80505A68 LSLS            R4, R4, #0x18
libcrackme.so:80505A6A BPL             loc_80505A70
libcrackme.so:80505A6C MOVS            R4, #0
libcrackme.so:80505A6E STRB            R4, [R1,R0]
libcrackme.so:80505A70
libcrackme.so:80505A70 loc_80505A70                            ; CODE XREF: libcrackme.so:80505A6Aj
libcrackme.so:80505A70 ADDS            R1, #1
libcrackme.so:80505A72 CMP             R1, #4                  ; 每4字节一组
libcrackme.so:80505A74 BNE             loc_80505A5A            ; 判断是否结束
libcrackme.so:80505A76 ADD             R1, SP, #0x1C           ; 下面将从密码表中取得的值进行运算
libcrackme.so:80505A78 LDRB            R0, [R1,#1]
libcrackme.so:80505A7A ADDS            R7, #3
libcrackme.so:80505A7C ADDS            R3, #4
libcrackme.so:80505A7E STR             R0, [SP,#8]
libcrackme.so:80505A80 LDRB            R4, [R1]
libcrackme.so:80505A82 ASRS            R0, R0, #4
libcrackme.so:80505A84 LSLS            R4, R4, #2
libcrackme.so:80505A86 ORRS            R0, R4
libcrackme.so:80505A88 STRB            R0, [R2]
libcrackme.so:80505A8A LDRB            R4, [R1,#2]
libcrackme.so:80505A8C STR             R4, [SP,#4]
libcrackme.so:80505A8E ASRS            R0, R4, #2
libcrackme.so:80505A90 LDR             R4, [SP,#8]
libcrackme.so:80505A92 LSLS            R4, R4, #4
libcrackme.so:80505A94 STR             R4, [SP,#8]
libcrackme.so:80505A96 ORRS            R4, R0
libcrackme.so:80505A98 STRB            R4, [R2,#1]
libcrackme.so:80505A9A LDR             R0, [SP,#4]
libcrackme.so:80505A9C LDRB            R1, [R1,#3]
libcrackme.so:80505A9E LSLS            R4, R0, #6
libcrackme.so:80505AA0 ORRS            R4, R1
libcrackme.so:80505AA2 STRB            R4, [R2,#2]
libcrackme.so:80505AA4 ADDS            R2, #3
libcrackme.so:80505AA6
libcrackme.so:80505AA6 loc_80505AA6                            ; CODE XREF: libcrackme.so:80505A56j
libcrackme.so:80505AA6 LDR             R1, [SP,#0x10]
libcrackme.so:80505AA8 CMP             R3, R1                  ; 判断是否结束,密码长度
libcrackme.so:80505AAA BLT             loc_80505A58

将逻辑运算出来的值与账户值进制进行对比是否相同,相同显示成功。
libcrackme.so:8050548C sub_8050548C                            ; CODE XREF: libcrackme.so:80505ADEp
libcrackme.so:8050548C
libcrackme.so:8050548C var_1C= -0x1C
libcrackme.so:8050548C
libcrackme.so:8050548C PUSH            {R0-R2,R4-R7,LR}
libcrackme.so:8050548E LDR             R1, [R0,#0x34]
libcrackme.so:80505490 MOVS            R6, R0
libcrackme.so:80505492 LDR             R5, =(unk_80514F78 - 0x805054AA)
libcrackme.so:80505494 MOVS            R0, R1
libcrackme.so:80505496 STR             R1, [SP,#0x20+var_1C]
libcrackme.so:80505498 BLX             strlen_0                ; 账户长度
libcrackme.so:8050549C MOVS            R7, R0
libcrackme.so:8050549E MOVS            R0, R6
libcrackme.so:805054A0 ADDS            R0, #0x3C
libcrackme.so:805054A2 BLX             strlen_0                ; 密码查表后逻辑运算出来的值
libcrackme.so:805054A6 ADD             R5, PC ; unk_80514F78
libcrackme.so:805054A8 MOVS            R4, #0
libcrackme.so:805054AA CMP             R7, R0                  ; 根据密码计算出来的值长度与账户长度比较
libcrackme.so:805054AC BEQ             loc_805054E4            ; 判断是否结束
libcrackme.so:805054AE MOVS            R0, #1
libcrackme.so:805054B0 BLX             __cxa_allocate_exception
libcrackme.so:805054B4 MOVS            R3, #1
libcrackme.so:805054B6 STRB            R3, [R0]
libcrackme.so:805054B8 LDR             R3, =0xFFFFFF48
libcrackme.so:805054BA MOVS            R2, R4
libcrackme.so:805054BC LDR             R1, [R5,R3]
libcrackme.so:805054BE B               loc_805054DE
libcrackme.so:805054C0 ; ---------------------------------------------------------------------------
libcrackme.so:805054C0
libcrackme.so:805054C0 loc_805054C0                            ; CODE XREF: sub_8050548C+5Aj
libcrackme.so:805054C0 LDR             R1, [SP,#0x20+var_1C]
libcrackme.so:805054C2 ADDS            R3, R6, R4
libcrackme.so:805054C4 ADDS            R3, #0x3C
libcrackme.so:805054C6 LDRB            R2, [R1,R4]             ; 取账户值
libcrackme.so:805054C8 LDRB            R3, [R3]                ; 取密码查表后逻辑运算出来的值
libcrackme.so:805054CA CMP             R2, R3                  ; 比较是否相等
libcrackme.so:805054CC BEQ             loc_805054E2
libcrackme.so:805054CE MOVS            R0, #1
libcrackme.so:805054D0 BLX             __cxa_allocate_exception
libcrackme.so:805054D4 MOVS            R3, #1
libcrackme.so:805054D6 STRB            R3, [R0]
libcrackme.so:805054D8 LDR             R3, =0xFFFFFF48
libcrackme.so:805054DA
libcrackme.so:805054DA loc_805054DA                            ; CODE XREF: sub_8050548C+68j
libcrackme.so:805054DA LDR             R1, [R5,R3]
libcrackme.so:805054DC MOVS            R2, #0
libcrackme.so:805054DE
libcrackme.so:805054DE loc_805054DE                            ; CODE XREF: sub_8050548C+32j
libcrackme.so:805054DE BLX             __cxa_throw
libcrackme.so:805054E2
libcrackme.so:805054E2 loc_805054E2                            ; CODE XREF: sub_8050548C+40j
libcrackme.so:805054E2 ADDS            R4, #1
libcrackme.so:805054E4
libcrackme.so:805054E4 loc_805054E4                            ; CODE XREF: sub_8050548C+20j
libcrackme.so:805054E4 CMP             R4, R7                  ; 判断是否结束
libcrackme.so:805054E6 BLT             loc_805054C0
libcrackme.so:805054E8 BNE             loc_805054F6
libcrackme.so:805054EA MOVS            R0, #4
libcrackme.so:805054EC BLX             __cxa_allocate_exception
libcrackme.so:805054F0 LDR             R3, =0xFFFFFF50
libcrackme.so:805054F2 STR             R4, [R0]
libcrackme.so:805054F4 B               loc_805054DA
libcrackme.so:805054F6 ; ---------------------------------------------------------------------------
libcrackme.so:805054F6
libcrackme.so:805054F6 loc_805054F6                            ; CODE XREF: sub_8050548C+5Cj
libcrackme.so:805054F6 MOVS            R0, #1
libcrackme.so:805054F8 POP             {R1-R7,PC}
libcrackme.so:805054F8 ; End of function sub_8050548C

//-------强制修改比较值后显示成功。
上传的附件:
雪    币: 3902
活跃值: (5545)
能力值: ( LV13,RANK:550 )
在线值:
发帖
回帖
粉丝
我是小三 11 2014-10-29 09:27
7
0
这一行注释写错了.
libcrackme.so:805054AC BEQ             loc_805054E4            ; 判断长度是否相等
雪    币: 7115
活跃值: (644)
能力值: (RANK:1290 )
在线值:
发帖
回帖
粉丝
玩命 31 2014-10-29 13:38
8
0
分析的不错,但是没有注册机
雪    币: 3902
活跃值: (5545)
能力值: ( LV13,RANK:550 )
在线值:
发帖
回帖
粉丝
我是小三 11 2014-10-29 13:53
9
0
没想明白怎么写..
游客
登录 | 注册 方可回帖
返回