burp到期了,按照以往的情况,很快就会有大佬放出更新版本,但等待的时间着实难熬。

一直改系统时间有些麻烦,所以写个小东西方便群众。

(我是ms党,所以……linux和mac自求多福。)

0x01 原理

windows上的jre使用GetSystemTimeAsFileTime API获取系统时间,对API下个断点,把poi(esp+4)改成0x01d263c1`feb0c000,就能看到所有的时间都变成了2017/1/1 X:0:0:bp kernelbase!GetSystemTimeAsFileTime "r @$t0=poi(esp+4);gu;eq @$t0 0x01d263c1`feb0c000;g"

之后burp就能打开了:

中文操作系统默认时区是东八区,所以时间是2017/1/1 8:0:0,其他系统以此类推。

但现在出现了一个问题:由于所有时间都变成了相同的,所以history等按照时间排序的功能就失效了。

解决方式也很简单,只改日期不改时间即可。GetSystemTimeAsFileTime被我们和谐了,换用GetSystemTime来获取时间,返回的SYSTEMTIME也更方便处理。

(windows时间API基本都是从SharedUserData中直接取值,所以不用担心修改一个API会影响到其他的问题)

0x02 代码

burp的进程是javaw,所以必须要做个hook。

注入+hook的代码网上一找一大把,不过java提供了agent功能进行动态修改,其中native agent本身就是一个dll,这样就不用单独写一个注入的exe了。

native agent需要导出三个函数:Agent_OnLoad和Agent_OnAttach用于初始化,Agent_OnUnload用于卸载,考虑到并不需要访问jvm信息,用PVOID和long代替jvm类型:long WINAPI Agent_OnLoad(PVOID *vm, char *options, void *reserved);

long WINAPI Agent_OnAttach(PVOID *vm, char *options, void *reserved);

long WINAPI Agent_OnUnload(PVOID *vm);

hook实现方面,需要用到两个API:GetSystemTime获取当前时间,把年月日改成2017/1/1;

SystemTimeToFileTime将修改后的时间转换为FileTime并返回传递给原始调用:void WINAPI hook(LPFILETIME ft)

{

SYSTEMTIME st = { 0 };

GetSystemTime(&st);

st.wYear = 2017;

st.wMonth = 1;

st.wDay = 1;

SystemTimeToFileTime(&st, ft);

}

之后是hook,直接jmp,考虑到64位jre的问题要写两种:#ifdef WIN64

BYTE shellcode[] =

{

0x48, 0xb8,               //mov rax,

0, 0, 0, 0, 0, 0, 0, 0,    //hook addr

0xff, 0xe0                  //jmp rax

};

#else

BYTE shellcode[] =

{

0x90, 0xb8,               //mov eax,

0, 0, 0, 0,                   //hook addr

0xff, 0xe0                  //jmp rax

};

#endif

编译加载运行,发现burp直接退出了,反编译BurpLoader,看到了一个可疑调用:

(吐槽一句jd-gui,反编译出的字节码结果还不如javap)

sun.management.VMManagementImpl.getVmArguments0。

native实现必然封装于dll中,退出之前加载的最后一个java模块为management.dll:

查看导出函数,果然发现了名为[email protected]的导出。

那么和谐这个函数就好了。

由于java层的包装会自动处理null的问题,也就不用费力气写hook函数了,改成return NULL即可:#ifdef WIN64

BYTE shellcode2[] =

{

0x48, 0x33, 0xc0,         //xor rax,rax

0xc3, 0x00, 0x00          //ret

};

#else

BYTE shellcode2[] =

{

0x33, 0xc0,               //xor eax,eax

0xc2, 0x08, 0x00          //ret 8

};

#endif

编译加载运行,这次没有问题了:

0x03 下载

编译好的dll为JavaTimeAgent和JavaTimeAgent64,使用方法类似于指定xmx,给java加个启动参数即可:java -agentpath:JavaTimeAgent.dll java_class

javaw -agentpath:JavaTimeAgent.dll -jar BurpLoader.jar

运行后的日期被锁定在2017/1/1,时间不变。如果有特殊需求的话自行修改编译dll。

注意几个细节:

java的环境变量要去控制面板配置;jar和dll最好写绝对路径。

hook的行为可能被杀软和谐。

dll的版本要和jre匹配。

其他检测时间的java程序应该也许可能好像大概差不多能使用这个工具,请自行尝试。

我测试的环境为win7 x86/win10 x64+jre 1.8,其他版本没有环境来测试(理论上不会有问题……吧)。

解压密码见注释。

java getsystemtime,草泥马之家-使用javaAgent解除Burp的时间限制相关推荐

  1. JAVA计算机毕业设计林家餐厅自助点餐管理系统(附源码、数据库)

    JAVA计算机毕业设计林家餐厅自助点餐管理系统(附源码.数据库) 目运行 环境项配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Ecli ...

  2. JAVA毕设项目林家餐厅自助点餐管理系统(java+VUE+Mybatis+Maven+Mysql)

    JAVA毕设项目林家餐厅自助点餐管理系统(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX ...

  3. 【小家java】java8新特性之---全新的日期、时间API(JSR 310规范),附SpringMVC、Mybatis中使用JSR310的正确姿势

    [小家java]java5新特性(简述十大新特性) 重要一跃 [小家java]java6新特性(简述十大新特性) 鸡肋升级 [小家java]java7新特性(简述八大新特性) 不温不火 [小家java ...

  4. java计算机毕业设计林家餐厅自助点餐管理系统源码+系统+mysql数据库+lw文档

    java计算机毕业设计林家餐厅自助点餐管理系统源码+系统+mysql数据库+lw文档 java计算机毕业设计林家餐厅自助点餐管理系统源码+系统+mysql数据库+lw文档 本源码技术栈: 项目架构:B ...

  5. 计算机毕业设计Java南京新东方学校家校通系统(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java南京新东方学校家校通系统(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java南京新东方学校家校通系统(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目 ...

  6. java毕业设计宠物之家Mybatis+系统+数据库+调试部署

    java毕业设计宠物之家Mybatis+系统+数据库+调试部署 java毕业设计宠物之家Mybatis+系统+数据库+调试部署 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软件: ...

  7. java计算机毕业设计如家酒店管理系统源代码+数据库+系统+lw文档

    java计算机毕业设计如家酒店管理系统源代码+数据库+系统+lw文档 java计算机毕业设计如家酒店管理系统源代码+数据库+系统+lw文档 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 ...

  8. Java毕设项目爱家家政公司网站(java+VUE+Mybatis+Maven+Mysql)

    Java毕设项目爱家家政公司网站(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Web ...

  9. Java毕设项目爱家家政公司网站计算机(附源码+系统+数据库+LW)

    Java毕设项目爱家家政公司网站计算机(附源码+系统+数据库+LW) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Ec ...

  10. java对接国内1200家快递公司进行快递寄件示例代码

    通过java对接国内1200家快递公司进行快递寄件操作,该Java寄快递接口支持顺丰.京东.韵达.申通.圆通.邮政.天天.百世等主流快递公司. 以下是寄快递接口的具体示例代码,如果有疑问可以随时联系官 ...

最新文章

  1. mysql后台修改表_mysql之约束以及修改数据表
  2. 浏览器插件之ActiveX开发(二
  3. 产品说,我只需要一个有亿点复杂的查询界面
  4. Java网络编程从入门到精通(7):用getHostAddress方法获得IP地址
  5. 织梦自定义html文本,织梦自定义标签dede:sql根据自定义字段填的文章id获取相关文章...
  6. linux文件乱码crt,Linux中文文件显示乱码或Secure CRT显示乱码解决方案
  7. Hyper-V 2016 系列教程40 使用 PowerShell 实现虚拟机自动化和管理虚拟机
  8. 10.企业应用架构模式 --- 数据源架构模式
  9. oracle中between函数用法,Oracle常用函数使用介绍
  10. 【优化求解】基于布谷鸟算法CS实现单目标求解matlab源码
  11. 【Web前端面试笔试题】2022.08
  12. AutoRunner 功能自动化测试项目实训之AutoRunner产品设计目标(三)
  13. 百万级数据库优化方案大全
  14. 解决——》Mysql导出excel时,数值型变成科学计数法
  15. Sample Science 909 Lab for Mac - 909鼓声虚拟乐器
  16. fig-tlo_PHP-FIG,Quo Vadis?
  17. php 显示英文日期,DEDECMS怎么显示英文日期时间
  18. 苹果状态栏HTML,webview内嵌的html页面,在ios系统上12以上版本和12以下版本状态栏效果不一样...
  19. iPhone 12 pro max卡槽怎么插双卡
  20. mysql 幻读的隔离_MySQL的RR隔离级别与幻读问题

热门文章

  1. Computational principles of synaptic memory consolidation(2016 Nature Neuroscience)
  2. 微信公众号图片上传_base64图片上传处理
  3. 两款浏览器去广告插件,让你舒心上网
  4. 腾讯游戏安全高级工程师胡和君:定制化对抗——游戏反外挂的安全实践
  5. 外星人17r4原版系统_外星人Alienware 17R4 测评/升级
  6. 大数据算法工程师知识点大全
  7. android如何使用so库,Android 使用SO库
  8. 【蓝桥杯】枚举,模拟,排序专题 (一)
  9. 手机用html电视,手机怎么连接电视
  10. Aluminium cold plate