一篇小crack-2

几个好友让分享一下拆解细节,所以就多写几句,备忘吧。
下述称crack的程序为标的


流程

    1. 粗暴的断网,删文件啥的让标的报错,捕获错误堆栈,方便获取混淆代码的调用栈
java.lang.RuntimeException: xx已损坏
    at com.s.b.a.b(a.java:281)
    at com.x.s.b.c.a(c.java:12)
    at com.x.s.e.a.b(a.java:232)
    at com.x.s.e.a.a(a.java:190)
    at com.x.s.e.a.a(a.java:170)
    at com.x.s.n.a(n.java:20)
    1. window上会有大小写不分的问题,引发jar包解压后,会覆盖文件。这块可以借助idea,方便查看
  • 3.借助arthas等工具,jad内存中的class,方便静态查看

    1. 抓包分析标的和服务器的交互,http或者https拿下报文进行分析
    1. 分析完,该制作类似注册机的玩意。
  • 5.1 拆解了加密算法的话,服务端模拟会比较方便,可以直接劫持http 模拟一个服务端;本地license的话,就直接生辰给一个即可

  • 5.2 加解密如果搞不定,找脆弱链路,常规来说,都是一个复杂的加解密判断,最后给一个简单的 if语句或者函数,直接爆破这个函数即可 哈哈


javaassist

  • 增加构造函数
    CtNewConstructor.make

  • 修改方法
    CtMethod.setBody

  • 增加方法
    CtNewMethod.make
    CtClass.addMethod

  • 增加 import
    ClassPool.importPackage(

  • 增加 classpath
    ClassPool.insertClassPath

  • 生成class 保存vm内存
    CtClass.toClass()

  • 保存class到文件
    CtClass.writeFile

arthas 的一些命令

  • sc
  • jad

反射

  • 获取静态变量值
    clz.getDeclareField();
    setAccessible
    field.get(X.class)

查找某个类加载于那个jar

java.security.ProtectionDomain pd = SpringBootApplication.class.getProtectionDomain();
java.security.CodeSource cs = pd.getCodeSource();
System.out.println(cs.getLocation());


耐心
耐心
耐心

心态这个比技术更重要 哈哈

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。