首页
社区
课程
招聘
这样的汇编代码该如何翻译成c???
发表于: 2006-4-12 12:50 6326

这样的汇编代码该如何翻译成c???

2006-4-12 12:50
6326
如题 ida取的
怎么样内嵌到c中?因为c的内嵌不支持定义变量
align 10h
.text:006F5810
.text:006F5810 loc_6F5810:                   ; CODE XREF: .text:00623736p
.text:006F5810                               ; .text:00623BF2p .text:00623FA6p
.text:006F5810                               ; .text:0062415Cp .text:0062A73Ep
.text:006F5810                               ; .text:0062A7B3p .text:0062B38Ep
.text:006F5810                               ; .text:0062B403p .text:006F14F3p
.text:006F5810                               ; .text:006F4C7Cp .text:006F4CADp
.text:006F5810                               ; .text:006F4EB5p .text:006F4ECDp
.text:006F5810                               ; .text:006F5EAEp .text:006F6023p ...
.text:006F5810 push    ebp
.text:006F5811 mov     ebp, esp
.text:006F5813 push    edi
.text:006F5814 push    esi
.text:006F5815 mov     esi, [ebp+0Ch]
.text:006F5818 mov     ecx, [ebp+10h]
.text:006F581B mov     edi, [ebp+8]
.text:006F581E mov     eax, ecx
.text:006F5820 mov     edx, ecx
.text:006F5822 add     eax, esi
.text:006F5824 cmp     edi, esi
.text:006F5826 jbe     short loc_6F5830
.text:006F5828 cmp     edi, eax
.text:006F582A jb      loc_6F59A8
.text:006F5830
.text:006F5830 loc_6F5830:                   ; CODE XREF: .text:006F5826j
.text:006F5830 test    edi, 3
.text:006F5836 jnz     short loc_6F584C
.text:006F5838 shr     ecx, 2
.text:006F583B and     edx, 3
.text:006F583E cmp     ecx, 8
.text:006F5841 jb      short near ptr dword_6F586C
.text:006F5843 rep movsd
.text:006F5845 jmp     ds:off_6F5958[edx*4]  ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>这里有些麻烦
.text:006F584C ; ---------------------------------------------------------------------------
.text:006F584C
.text:006F584C loc_6F584C:                   ; CODE XREF: .text:006F5836j
.text:006F584C mov     eax, edi
.text:006F584E mov     edx, 3
.text:006F5853 sub     ecx, 4
.text:006F5856 jb      short loc_6F5864
.text:006F5858 and     eax, 3
.text:006F585B add     ecx, eax
.text:006F585D jmp     ds:dword_6F5870[eax*4]
.text:006F5864 ; ---------------------------------------------------------------------------
.text:006F5864
.text:006F5864 loc_6F5864:                   ; CODE XREF: .text:006F5856j
.text:006F5864 jmp     ds:dword_6F5968[ecx*4]
.text:006F5864 ; ---------------------------------------------------------------------------
.text:006F586B align 4
.text:006F586C dword_6F586C dd 0EC8D24FFh    ; CODE XREF: .text:006F5841j
.text:006F5870 dword_6F5870 dd 90006F58h     ; DATA XREF: .text:006F585Dr
.text:006F5874 dd offset dword_6F5880
.text:006F5878 dd offset dword_6F58AC
.text:006F587C dd offset dword_6F58D0
.text:006F5880 dword_6F5880 dd 68AD123h, 468A0788h, 1478801h, 0C102468Ah, 478802E9h, 3C68302h, 8303C783h, 0CC7208F9h, 24FFA5F3h
.text:006F5880                               ; DATA XREF: .text:006F5874o
.text:006F5880 dd 6F595895h, 498D00h
.text:006F58AC dword_6F58AC dd 68AD123h, 468A0788h, 2E9C101h, 83014788h, 0C78302C6h, 8F98302h, 0A5F3A672h, 589524FFh, 90006F59h
.text:006F58AC                               ; DATA XREF: .text:006F5878o
.text:006F58D0 dword_6F58D0 dd 68AD123h, 0C1460788h, 834702E9h, 8C7208F9h, 24FFA5F3h, 6F595895h, 498D00h, 6F594Fh, 6F593Ch, 6F5934h
.text:006F58D0                               ; DATA XREF: .text:006F587Co
.text:006F58D0 dd 6F592Ch, 6F5924h, 6F591Ch, 6F5914h, 6F590Ch, 0E48E448Bh, 0E48F4489h, 0E88E448Bh, 0E88F4489h, 0EC8E448Bh
.text:006F58D0 dd 0EC8F4489h, 0F08E448Bh, 0F08F4489h, 0F48E448Bh, 0F48F4489h, 0F88E448Bh, 0F88F4489h, 0FC8E448Bh, 0FC8F4489h
.text:006F58D0 dd 8D048Dh, 3000000h, 0FFF803F0h, 59589524h, 0FF8B006Fh
.text:006F5958 off_6F5958 dd offset dword_6F5968 ; DATA XREF: .text:006F5845r
.text:006F595C dd offset loc_6F5970
.text:006F5960 dd offset loc_6F597C
.text:006F5964 dd offset loc_6F5990
.text:006F5968 dword_6F5968 dd 5E08458Bh     ; CODE XREF: .text:006F5845j
.text:006F5968                               ; DATA XREF: .text:loc_6F5864r
.text:006F5968                               ; .text:off_6F5958o
.text:006F596C ; ---------------------------------------------------------------------------
.text:006F596C pop     edi
.text:006F596D leave
.text:006F596E retn
.text:006F596E ; ---------------------------------------------------------------------------
.text:006F596F align 10h
.text:006F5970
.text:006F5970 loc_6F5970:                   ; CODE XREF: .text:006F5845j
.text:006F5970                               ; DATA XREF: .text:006F595Co
.text:006F5970 mov     al, [esi]
.text:006F5972 mov     [edi], al
.text:006F5974 mov     eax, [ebp+8]
.text:006F5977 pop     esi
.text:006F5978 pop     edi
.text:006F5979 leave
.text:006F597A retn
.text:006F597A ; ---------------------------------------------------------------------------
.text:006F597B align 4
.text:006F597C
.text:006F597C loc_6F597C:                   ; CODE XREF: .text:006F5845j
.text:006F597C                               ; DATA XREF: .text:006F5960o
.text:006F597C mov     al, [esi]
.text:006F597E mov     [edi], al
.text:006F5980 mov     al, [esi+1]
.text:006F5983 mov     [edi+1], al
.text:006F5986 mov     eax, [ebp+8]
.text:006F5989 pop     esi
.text:006F598A pop     edi
.text:006F598B leave
.text:006F598C retn
.text:006F598C ; ---------------------------------------------------------------------------
.text:006F598D align 10h
.text:006F5990
.text:006F5990 loc_6F5990:                   ; CODE XREF: .text:006F5845j
.text:006F5990                               ; DATA XREF: .text:006F5964o
.text:006F5990 mov     al, [esi]
.text:006F5992 mov     [edi], al
.text:006F5994 mov     al, [esi+1]
.text:006F5997 mov     [edi+1], al
.text:006F599A mov     al, [esi+2]
.text:006F599D mov     [edi+2], al
.text:006F59A0 mov     eax, [ebp+8]
.text:006F59A3 pop     esi
.text:006F59A4 pop     edi
.text:006F59A5 leave
.text:006F59A6 retn
.text:006F59A6 ; ---------------------------------------------------------------------------
.text:006F59A7 align 4
.text:006F59A8
.text:006F59A8 loc_6F59A8:                   ; CODE XREF: .text:006F582Aj
.text:006F59A8 lea     esi, [ecx+esi-4]
.text:006F59AC lea     edi, [ecx+edi-4]
.text:006F59B0 test    edi, 3
.text:006F59B6 jnz     short loc_6F59DC
.text:006F59B8 shr     ecx, 2
.text:006F59BB and     edx, 3
.text:006F59BE cmp     ecx, 8
.text:006F59C1 jb      short loc_6F59D0
.text:006F59C3 std
.text:006F59C4 rep movsd
.text:006F59C6 cld
.text:006F59C7 jmp     ds:off_6F5AF0[edx*4]
.text:006F59C7 ; ---------------------------------------------------------------------------
.text:006F59CE align 10h
.text:006F59D0
.text:006F59D0 loc_6F59D0:                   ; CODE XREF: .text:006F59C1j
.text:006F59D0                               ; .text:006F5A18j .text:006F5A42j
.text:006F59D0                               ; .text:006F5A70j
.text:006F59D0 neg     ecx
.text:006F59D2 jmp     ds:off_6F5AA0[ecx*4]
.text:006F59D2 ; ---------------------------------------------------------------------------
.text:006F59D9 align 4
.text:006F59DC
.text:006F59DC loc_6F59DC:                   ; CODE XREF: .text:006F59B6j
.text:006F59DC mov     eax, edi
.text:006F59DE mov     edx, 3
.text:006F59E3 cmp     ecx, 4
.text:006F59E6 jb      short near ptr dword_6F59F4
.text:006F59E8 and     eax, 3
.text:006F59EB sub     ecx, eax
.text:006F59ED jmp     ds:dword_6F59F8[eax*4]
.text:006F59ED ; ---------------------------------------------------------------------------
.text:006F59F4 dword_6F59F4 dd 0F08D24FFh    ; CODE XREF: .text:006F59E6j
.text:006F59F8 dword_6F59F8 dd 90006F5Ah     ; DATA XREF: .text:006F59EDr
.text:006F59FC dd offset loc_6F5A08
.text:006F5A00 dd offset loc_6F5A28
.text:006F5A04 dd offset loc_6F5A50
.text:006F5A08 ; ---------------------------------------------------------------------------
.text:006F5A08
.text:006F5A08 loc_6F5A08:                   ; DATA XREF: .text:006F59FCo
.text:006F5A08 mov     al, [esi+3]
.text:006F5A0B and     edx, ecx
.text:006F5A0D mov     [edi+3], al
.text:006F5A10 dec     esi
.text:006F5A11 shr     ecx, 2
.text:006F5A14 dec     edi
.text:006F5A15 cmp     ecx, 8
.text:006F5A18 jb      short loc_6F59D0
.text:006F5A1A std
.text:006F5A1B rep movsd
.text:006F5A1D cld
.text:006F5A1E jmp     ds:off_6F5AF0[edx*4]
.text:006F5A1E ; ---------------------------------------------------------------------------
.text:006F5A25 align 4
.text:006F5A28
.text:006F5A28 loc_6F5A28:                   ; DATA XREF: .text:006F5A00o
.text:006F5A28 mov     al, [esi+3]
.text:006F5A2B and     edx, ecx
.text:006F5A2D mov     [edi+3], al
.text:006F5A30 mov     al, [esi+2]
.text:006F5A33 shr     ecx, 2
.text:006F5A36 mov     [edi+2], al
.text:006F5A39 sub     esi, 2
.text:006F5A3C sub     edi, 2
.text:006F5A3F cmp     ecx, 8
.text:006F5A42 jb      short loc_6F59D0
.text:006F5A44 std
.text:006F5A45 rep movsd
.text:006F5A47 cld
.text:006F5A48 jmp     ds:off_6F5AF0[edx*4]
.text:006F5A48 ; ---------------------------------------------------------------------------
.text:006F5A4F align 10h
.text:006F5A50
.text:006F5A50 loc_6F5A50:                   ; DATA XREF: .text:006F5A04o
.text:006F5A50 mov     al, [esi+3]
.text:006F5A53 and     edx, ecx
.text:006F5A55 mov     [edi+3], al
.text:006F5A58 mov     al, [esi+2]
.text:006F5A5B mov     [edi+2], al
.text:006F5A5E mov     al, [esi+1]
.text:006F5A61 shr     ecx, 2
.text:006F5A64 mov     [edi+1], al
.text:006F5A67 sub     esi, 3
.text:006F5A6A sub     edi, 3
.text:006F5A6D cmp     ecx, 8
.text:006F5A70 jb      loc_6F59D0
.text:006F5A76 std
.text:006F5A77 rep movsd
.text:006F5A79 cld
.text:006F5A7A jmp     ds:off_6F5AF0[edx*4]
.text:006F5A7A ; ---------------------------------------------------------------------------
.text:006F5A81 align 4
.text:006F5A84 dd offset loc_6F5AA4
.text:006F5A88 dd offset loc_6F5AAC
.text:006F5A8C dd offset loc_6F5AB4
.text:006F5A90 dd offset loc_6F5ABC
.text:006F5A94 dd offset loc_6F5AC4
.text:006F5A98 dd offset loc_6F5ACC
.text:006F5A9C dd offset loc_6F5AD4
.text:006F5AA0 off_6F5AA0 dd offset loc_6F5AE7 ; DATA XREF: .text:006F59D2r
.text:006F5AA4 ; ---------------------------------------------------------------------------
.text:006F5AA4
.text:006F5AA4 loc_6F5AA4:                   ; DATA XREF: .text:006F5A84o
.text:006F5AA4 mov     eax, [esi+ecx*4+1Ch]
.text:006F5AA8 mov     [edi+ecx*4+1Ch], eax
.text:006F5AAC
.text:006F5AAC loc_6F5AAC:                   ; DATA XREF: .text:006F5A88o
.text:006F5AAC mov     eax, [esi+ecx*4+18h]
.text:006F5AB0 mov     [edi+ecx*4+18h], eax
.text:006F5AB4
.text:006F5AB4 loc_6F5AB4:                   ; DATA XREF: .text:006F5A8Co
.text:006F5AB4 mov     eax, [esi+ecx*4+14h]
.text:006F5AB8 mov     [edi+ecx*4+14h], eax
.text:006F5ABC
.text:006F5ABC loc_6F5ABC:                   ; DATA XREF: .text:006F5A90o
.text:006F5ABC mov     eax, [esi+ecx*4+10h]
.text:006F5AC0 mov     [edi+ecx*4+10h], eax
.text:006F5AC4
.text:006F5AC4 loc_6F5AC4:                   ; DATA XREF: .text:006F5A94o
.text:006F5AC4 mov     eax, [esi+ecx*4+0Ch]
.text:006F5AC8 mov     [edi+ecx*4+0Ch], eax
.text:006F5ACC
.text:006F5ACC loc_6F5ACC:                   ; DATA XREF: .text:006F5A98o
.text:006F5ACC mov     eax, [esi+ecx*4+8]
.text:006F5AD0 mov     [edi+ecx*4+8], eax
.text:006F5AD4
.text:006F5AD4 loc_6F5AD4:                   ; DATA XREF: .text:006F5A9Co
.text:006F5AD4 mov     eax, [esi+ecx*4+4]
.text:006F5AD8 mov     [edi+ecx*4+4], eax
.text:006F5ADC lea     eax, ds:0[ecx*4]
.text:006F5AE3 add     esi, eax
.text:006F5AE5 add     edi, eax
.text:006F5AE7
.text:006F5AE7 loc_6F5AE7:                   ; CODE XREF: .text:006F59D2j
.text:006F5AE7                               ; DATA XREF: .text:off_6F5AA0o
.text:006F5AE7 jmp     ds:off_6F5AF0[edx*4]
.text:006F5AE7 ; ---------------------------------------------------------------------------
.text:006F5AEE align 10h
.text:006F5AF0 off_6F5AF0 dd offset loc_6F5B00 ; DATA XREF: .text:006F59C7r
.text:006F5AF0                               ; .text:006F5A1Er .text:006F5A48r
.text:006F5AF0                               ; .text:006F5A7Ar
.text:006F5AF0                               ; .text:loc_6F5AE7r
.text:006F5AF4 dd offset loc_6F5B08
.text:006F5AF8 dd offset loc_6F5B18
.text:006F5AFC dd offset loc_6F5B2C
.text:006F5B00 ; ---------------------------------------------------------------------------
.text:006F5B00
.text:006F5B00 loc_6F5B00:                   ; CODE XREF: .text:006F59C7j
.text:006F5B00                               ; .text:006F5A1Ej .text:006F5A48j
.text:006F5B00                               ; .text:006F5A7Aj
.text:006F5B00                               ; .text:loc_6F5AE7j
.text:006F5B00                               ; DATA XREF: .text:off_6F5AF0o
.text:006F5B00 mov     eax, [ebp+8]
.text:006F5B03 pop     esi
.text:006F5B04 pop     edi
.text:006F5B05 leave
.text:006F5B06 retn
.text:006F5B06 ; ---------------------------------------------------------------------------
.text:006F5B07 align 4
.text:006F5B08
.text:006F5B08 loc_6F5B08:                   ; CODE XREF: .text:006F59C7j
.text:006F5B08                               ; .text:006F5A1Ej .text:006F5A48j
.text:006F5B08                               ; .text:006F5A7Aj
.text:006F5B08                               ; .text:loc_6F5AE7j
.text:006F5B08                               ; DATA XREF: .text:006F5AF4o
.text:006F5B08 mov     al, [esi+3]
.text:006F5B0B mov     [edi+3], al
.text:006F5B0E mov     eax, [ebp+8]
.text:006F5B11 pop     esi
.text:006F5B12 pop     edi
.text:006F5B13 leave
.text:006F5B14 retn
.text:006F5B14 ; ---------------------------------------------------------------------------
.text:006F5B15 align 4
.text:006F5B18
.text:006F5B18 loc_6F5B18:                   ; CODE XREF: .text:006F59C7j
.text:006F5B18                               ; .text:006F5A1Ej .text:006F5A48j
.text:006F5B18                               ; .text:006F5A7Aj
.text:006F5B18                               ; .text:loc_6F5AE7j
.text:006F5B18                               ; DATA XREF: .text:006F5AF8o
.text:006F5B18 mov     al, [esi+3]
.text:006F5B1B mov     [edi+3], al
.text:006F5B1E mov     al, [esi+2]
.text:006F5B21 mov     [edi+2], al
.text:006F5B24 mov     eax, [ebp+8]
.text:006F5B27 pop     esi
.text:006F5B28 pop     edi
.text:006F5B29 leave
.text:006F5B2A retn
.text:006F5B2A ; ---------------------------------------------------------------------------
.text:006F5B2B align 4
.text:006F5B2C
.text:006F5B2C loc_6F5B2C:                   ; CODE XREF: .text:006F59C7j
.text:006F5B2C                               ; .text:006F5A1Ej .text:006F5A48j
.text:006F5B2C                               ; .text:006F5A7Aj
.text:006F5B2C                               ; .text:loc_6F5AE7j
.text:006F5B2C                               ; DATA XREF: .text:006F5AFCo
.text:006F5B2C mov     al, [esi+3]
.text:006F5B2F mov     [edi+3], al
.text:006F5B32 mov     al, [esi+2]
.text:006F5B35 mov     [edi+2], al
.text:006F5B38 mov     al, [esi+1]
.text:006F5B3B mov     [edi+1], al
.text:006F5B3E mov     eax, [ebp+8]
.text:006F5B41 pop     esi
.text:006F5B42 pop     edi
.text:006F5B43 leave
.text:006F5B44 retn

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

收藏
免费 0
支持
分享
最新回复 (13)
雪    币: 245
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
点右键 ,选择创建函数(Create Function )

然后把整个函数复制下来直接复制到 VC里面去
使用
__asm {
}
然后再作一些相应的修改,就可以直接用汇编语句调用了!
2006-4-12 13:27
0
雪    币: 210
活跃值: (42)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
楼上的没有看清楚我的问题 这个函数里面还有定义全局变量 而且也用到这些jmp ds:off_6F5958[edx*4] ;这样的不知道怎么翻译
内嵌到c中也不能编译通过
并且创建函数创建不了 提示.text:006F586C: The function has undefined instruction/data at the specified address.
Your request has been put in the autoanalysis queue.
2006-4-12 14:12
0
雪    币: 238
活跃值: (326)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
4
是典型c的switch,你IDA的代码还需要用手工重新整理,现在看到的结果是不正确的,随便用c下个switch的东西,编译后,看看,就明白是怎么回事了。
2006-4-12 14:21
0
雪    币: 210
活跃值: (42)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
怎么样整理这些ida代码啊?
2006-4-12 14:35
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
是Switch我能看出来
用Od多了就知道是个多分支的跳转了
可是怎么用IDA解我还要学
跟个帖子留名先
2006-4-12 15:13
0
雪    币: 257
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
要这样定义函数把
__declspec(naked) void test()
{
}
2006-4-12 15:21
0
雪    币: 200
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
我很想知道出现象[edx*4],[esi+ecx*4+1Ch]等是不是有规律的,是在某种情况下编译出来的代码吗?在高级语言里什么样的代码才会编译出这样的代码呢?
2006-4-12 15:49
0
雪    币: 210
活跃值: (42)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
对啊 大家研究下怎么把ida中取出的代码(switch结构)内嵌到c中去
2006-4-12 15:58
0
雪    币: 210
活跃值: (42)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
刚才看了一下 switch的话也是在函数结束时像这样定义
.text:00411AE7 off_411AE7 dd offset loc_411A8C ; DATA XREF: .text:00411A85r
.text:00411AEB dd offset loc_411AD3
.text:00411AEF dd offset loc_411A9B
.text:00411AF3 dd offset loc_411AD3
.text:00411AF7 dd offset loc_411AD3
.text:00411AFB dd offset loc_411AD3
.text:00411AFF dd offset loc_411AB9
.text:00411B03 dd offset loc_411AD3
.text:00411B07 dd offset loc_411AAA
.text:00411B0B align 10h
但是上面那个函数为什么在函数里面也有定义呢?
2006-4-12 21:10
0
雪    币: 1325
活跃值: (507)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
11
在C++程序生成的代码中出现数据一般应该是用内嵌汇编弄的保护吧,DELPHI的好象编译器会生成一些这样的数据.
2006-4-12 23:14
0
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
12
我感觉还是手写吧.几千行的代码我都干过,有这时间你手写也弄完了阿
2006-4-13 08:51
0
雪    币: 239
活跃值: (40)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
13
old:
jmp offset[edx*4]

new:

call offset
dd case1
dd case2
...
dd caseN
offset:
pop eax
shl edx,1
add eax, edx
call eax

哈哈,乱写的!
2006-4-13 15:15
0
雪    币: 210
活跃值: (42)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
最初由 nbw 发布
我感觉还是手写吧.几千行的代码我都干过,有这时间你手写也弄完了阿


关键是代码超过1W行了 老大
2006-8-17 15:49
0
游客
登录 | 注册 方可回帖
返回
//