Dash 6.4(ARM&X86) crack
ARM
运行后会提示试用天数剩余,试用期为30天。
Setting中的License中可以选择打开license file激活,选择非法license file,提示“Invalid License”。
我们从license file入手。
搜索关键词License、open、file、activate、Invalid License等。
获取到关键函数:-[DHInApp processLicenseFile:]
以 ’sub_100085ED4((__int64)v5, v6) == (void *)26’作为判断条件
sub_100085ed4函数获取全局变量qword_100344998字符串长度,若不为0则返回该字符串长度,如为0并且全局变量qword_100344990字符串不为“fail”,则解析打开的license file,但是对内容紧紧是比较判断,并没有进行任何运算。
最终,版本≥6后,将全局变量qword_100344998赋值为”com.barebones.textwrangler”,并返回字符串长度,我们发现正好是26。
查看对sub_100085ed4函数的引用,基本都是判断结果是否为26,这里想法就是将sub_100085ed4函数永远返回26。
1 | objc_msgSend_sharedInApp(&OBJC_CLASS___DHInApp, a2); |
1 | qword_100344998 = objc_retain(CFSTR("com.barebones.textwrangler")); |
ADRL指令:
__text:0000000100085EF4 ADRL X0, cfstr_ComBarebonesTe ; id
转换为:
__text:0000000100085EF4 ADRP x23,#0x238000
__text:0000000100085EF8 add x0, x0, #0x1a8
将pc低12位清零,加上12位清零的偏移量,再加上目标地址的低12位得到目标地址。
X86_64
思路相同
patch指令如下:
1 | +[DHInApp sharedInApp](&OBJC_CLASS___DHInApp, "sharedInApp"); |
1 | qword_1003B6F08 = objc_retain(CFSTR("com.barebones.textwrangler")); |
下载
https://www.aliyundrive.com/s/72KoDAR9f8f
提取码:4c4i