ida字符串存储的小端序陷阱

小端序,英文名little endian

在ida f5查看伪代码后,如果看到 

_DWORD v4[7];

v4[0] = 0xD6C0B67;
  v4[1] = 0x175F4078;
  v4[2] = 0x3302058;
  v4[3] = 0x725D1244;
  v4[4] = 0x2E1F3441;
  v4[5] = 0x6847404D;
  v4[6] = 0x1B;

注意最开始的数据类型,这个数组不光要按照4字节左侧补零对齐,还要将每一组数据翻转拼接才能得到正确的字符串。ida并没有非常智能地帮你捋顺字符串,所以初学的话非常有迷惑性。

例如

v4[2] = 0x3302058;

应为0x03302058-->0x58,0x20,0x30,0x03

这道题后面还涉及前一位和后一位异或,如果字符串的顺序没整对,你离答案就越来越远了。

碰到字符串别偷懒,看汇编捋字符串

MOV             R3, #0x67 ; 'g'
STRB            R3, [R11,#var_4C]
MOV             R3, #0xB
STRB            R3, [R11,#var_4B]
MOV             R3, #0x6C ; 'l'
STRB            R3, [R11,#var_4A]
MOV             R3, #0xD
STRB            R3, [R11,#var_49]
MOV             R3, #0x78 ; 'x'
STRB            R3, [R11,#var_48]
MOV             R3, #0x40 ; '@'
STRB            R3, [R11,#var_47]
MOV             R3, #0x5F ; '_'
STRB            R3, [R11,#var_46]
MOV             R3, #0x17
STRB            R3, [R11,#var_45]
MOV             R3, #0x58 ; 'X'
STRB            R3, [R11,#var_44]
MOV             R3, #0x20 ; ' '
STRB            R3, [R11,#var_43]
MOV             R3, #0x30 ; '0'
STRB            R3, [R11,#var_42]
MOV             R3, #3
STRB            R3, [R11,#var_41]
MOV             R3, #0x44 ; 'D'
STRB            R3, [R11,#var_40]
MOV             R3, #0x12
STRB            R3, [R11,#var_3F]
MOV             R3, #0x5D ; ']'
STRB            R3, [R11,#var_3E]
MOV             R3, #0x72 ; 'r'
STRB            R3, [R11,#var_3D]
MOV             R3, #0x41 ; 'A'
STRB            R3, [R11,#var_3C]
MOV             R3, #0x34 ; '4'
STRB            R3, [R11,#var_3B]
MOV             R3, #0x1F
STRB            R3, [R11,#var_3A]
MOV             R3, #0x2E ; '.'
STRB            R3, [R11,#var_39]
MOV             R3, #0x4D ; 'M'
STRB            R3, [R11,#var_38]
MOV             R3, #0x40 ; '@'
STRB            R3, [R11,#var_37]
MOV             R3, #0x47 ; 'G'
STRB            R3, [R11,#var_36]
MOV             R3, #0x68 ; 'h'
STRB            R3, [R11,#var_35]
MOV             R3, #0x1B
STRB            R3, [R11,#var_34]

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值