首页
社区
课程
招聘
[求助]mov ebx,dword ptr ds:[edi+eax*4] 如何翻译成C语言?
发表于: 2020-3-21 23:38 2350

[求助]mov ebx,dword ptr ds:[edi+eax*4] 如何翻译成C语言?

2020-3-21 23:38
2350
今天在做Crackme写注册机时遇到了一个问题, mov ebx,dword ptr ds:[edi+eax*4]这个语句不知道该如何翻译成C的语句,我知道这句话的意思是将 [edi+eax*4] 的双字节段地址里的内容赋值给ebx,在OD中稍费事一些也可以找到。但是如果是用C来翻译应该如何做呢?难道也可以找到相同的内存地址吗。
以下是具体关键反汇编代码:


Crackme是这个:



求大神解答!!!!!!!!!

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

最后于 2020-3-21 23:40 被天堂製造编辑 ,原因: 添加图片
收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 1042
活跃值: (470)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
数组? DWORD AAA[]
2020-3-22 02:42
0
雪    币: 44
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3

最后于 2020-3-22 22:15 被天堂製造编辑 ,原因: 多打了
2020-3-22 22:15
0
雪    币: 44
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
Rookietp 数组? DWORD AAA[]
我在IDA里看了确实是数组,但是排列的顺序和内存中差别很大,也不是小端排序,是那种跳着排序的。。。比如在内存地址中的排列顺序是AA BB CC DD,在IDA里反编译提供的数组就是CCDDEEFFh,1122AABBh,有点困惑。如果硬要做的话感觉也不是不可以,但感觉在构建数组这一块会花很多时间。
2020-3-22 22:15
0
雪    币: 1042
活跃值: (470)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
天堂製造 我在IDA里看了确实是数组,但是排列的顺序和内存中差别很大,也不是小端排序,是那种跳着排序的。。。比如在内存地址中的排列顺序是AA BB CC DD,在IDA里反编译提供的数组就是CCDDEEFFh, ...
不用呀,不是可以自定义结构体?
2020-3-22 23:06
0
雪    币: 44
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6
麻烦可以再说具体一点嘛?结构体具体怎样定义我有点没反应过来...谢谢啦
2020-3-22 23:38
0
雪    币: 44
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
7
Rookietp 不用呀,不是可以自定义结构体?
IDA提供的数组长这样:
首元素:dw 0000h
CODE:00403E1C                 dd 30960000h, 612C7707h, 51BAEE0Eh, 0C4199909h, 0F48F076Dh
CODE:00403E1C                 dd 0A535706Ah, 95A3E963h, 88329E64h, 0B8A40EDBh, 0E91E79DCh
CODE:00403E1C                 dd 0D988E0D5h, 4C2B97D2h, 7CBD09B6h, 2D077EB1h, 1D91E7B8h
CODE:00403E1C                 dd 106490BFh, 20F21DB7h, 71486AB0h, 41DEF3B9h, 0D47D84BEh
CODE:00403E1C                 dd 0E4EB1ADAh, 0B5516DDDh, 85C7F4D4h, 985683D3h, 0A8C0136Ch
CODE:00403E1C                 dd 0F97A646Bh, 0C9ECFD62h, 5C4F8A65h, 6CD91401h, 3D636306h
CODE:00403E1C                 dd 0DF5FA0Fh, 20C88D08h, 105E3B6Eh, 41E44C69h, 7172D560h
…………

OD里的内存地址长这样:
00403E1A  00 00 00 00 96 30 07 77 2C 61 0E EE BA 51 09 99  
00403E2A  19 C4 6D 07 8F F4 6A 70 35 A5 63 E9 A3 95 64 9E  
00403E3A  32 88 DB 0E A4 B8 DC 79 1E E9 D5 E0 88 D9 D2 97
…………

可以发现两者基本上是一样的。请问知道这些信息以后有什么高效的办法构建数组嘛,还是说只能自己手动整理一下,求大神解惑  


最后于 2020-3-23 10:18 被天堂製造编辑 ,原因:
2020-3-23 10:16
0
雪    币: 1042
活跃值: (470)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
那直接定义成byte 数组好了
 {
               0xd0, 0xd1, 0x61, 0x76, 0x20, 0xd4, 0x61, 0x76, 0xf0, 0xe5, 0x61, 0x76, 0x30, 0x6a, 0x61, 0x76,
               0xd0, 0xd9, 0x61, 0x76, 0x00, 0x00, 0x00, 0x00, 0x70, 0x2e, 0x1d, 0x73, 0xe0, 0xe4, 0x1e, 0x73,
               0xc0, 0x45, 0x1b, 0x73, 0xb0, 0x06, 0x1f, 0x73, 0xa0, 0x2f, 0x1d, 0x73, 0xc0, 0x94, 0x1a, 0x73};


用OD的数据转换插件就能转换成byte数组。



最后于 2020-3-23 12:41 被Rookietp编辑 ,原因:
2020-3-23 12:40
0
雪    币: 44
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
9
Rookietp 那直接定义成byte 数组好了 {             &nb ...
好的 学到了!!感谢
2020-3-23 13:28
0
雪    币: 20
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
学习学习
2020-3-25 13:48
0
游客
登录 | 注册 方可回帖
返回
//