能力值:
( LV3,RANK:30 )
|
-
-
2 楼
挖个坑,留更新用.
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
SO 传上来,我来帮你把他灭了
|
能力值:
( LV3,RANK:30 )
|
-
-
4 楼
我看不到图..
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
坐位子上等大牛更新,学习中。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
超牛
膜拜
期待後續
|
能力值:
( LV4,RANK:40 )
|
-
-
7 楼
表格拿走了
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
挺不错的,楼主能不能提示下下面这段的分析
text:00009448 PUSH {R4-R7,LR} .text:0000944A MOV R7, R11 .text:0000944C MOV R6, R10 .text:0000944E MOV R5, R9 .text:00009450 MOV R4, R8 .text:00009452 PUSH {R4-R7} .text:00009454 SUB SP, SP, #0x3C ; SP=SP-0x3C .text:00009456 STR R1, [SP,#0x60+var_2C] ; 把寄存器值存到一个虚内存地址 .text:00009458 MOVS R4, R0 .text:0000945A LDR R3, [R0,#0x3C] ; 从存储器装载数据到寄存器 .text:0000945C LDR R0, [R0] .text:0000945E ADDS R6, R3, R0 .text:00009460 SUBS R0, R0, R3 .text:00009462 ASRS R1, R0, #0x1F ; 算数右移 .text:00009464 LDR R3, =0 .text:00009466 LDR R2, =0x404F0000 .text:00009468 BLX __muldi3 ; 带链接的切换跳转 .text:00009468 ; .text:00009468 ; .text:0000C008 MUL R1, R2, R1 ; 32位乘 .text:00009468 ; .text:0000C00C MLA R3, R0, R3, R1 ; 32位累加 .text:00009468 ; .text:0000C010 UMULL R0, R1, R2, R0 ; 64位无符号乘累加(32位*32位)=64位 .text:00009468 ; .text:0000C014 ADD R1, R1, R3 ; 32位数相加 .text:00009468 ; .text:0000C018 BX LR ; 切换跳转 .text:0000946C LDR R3, [R4,#0x20] ; 十进制32 .text:0000946E LDR R0, [R4,#0x1C] ; 十进制28 .text:00009470 STR R1, [SP,#0x60+var_58] .text:00009472 ADDS R5, R3, R0 .text:00009474 SUBS R0, R0, R3 .text:00009476 LSLS R0, R0, #3 .text:00009478 LDR R2, =0x519E4E00 .text:0000947A LDR R3, =0 .text:0000947C ASRS R1, R0, #0x1F .text:0000947E BLX __muldi3 F5出的伪C
v2 = a2; v3 = a1; v4 = *(_DWORD *)(a1 + 60); v5 = *(_DWORD *)a1; v6 = v4 + v5; v7 = 1078919168LL * (v5 - v4); v8 = *(_DWORD *)(v3 + 32); LODWORD(v7) = *(_DWORD *)(v3 + 28); v9 = HIDWORD(v7); v10 = v8 + v7 + v6; v11 = (unsigned __int64)(10954633216LL * ((signed int)v7 - v8)) >> 32; v12 = 1094778880LL * (v6 - (v8 + (signed int)v7)); v13 = *(_DWORD *)(v3 + 56); LODWORD(v12) = *(_DWORD *)(v3 + 4); 不知 LODWORD(x) 在这里如何定义
|
能力值:
( LV3,RANK:30 )
|
-
-
9 楼
看不是很懂这F5出来的代码.
LDR R0, [R4,#0x1C] ;
这句我的理解应该是 v7 = *(_DWORD *)(v3 + 28);
LDR 返回不的是32位??用LODWORD(A)=B表示把表达式右边的值B的低16位放到到左边A的低16位
可理解为
A=(A & 0xFFFF0000) | (B & 0xFFFF);
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
mark。。。。留作冥币
|
能力值:
( LV9,RANK:290 )
|
-
-
11 楼
支持,学习
|
能力值:
( LV4,RANK:50 )
|
-
-
12 楼
最新版本叫了名字混淆~希望楼主继续分析
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
额,LZ挖的坑记得填哦~~~
|
能力值:
( LV3,RANK:30 )
|
-
-
14 楼
非常清晰!感谢!求日后调教
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
好文, 标记收藏
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
表格带走,回复留下!好东西!
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
分析有点扯蛋,表格不错。
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
拿走xls
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
发现精品文章一编
|
能力值:
( LV2,RANK:10 )
|
-
-
20 楼
好文章,看汇编还是有些蛋疼...还是 F5大法好.
|
能力值:
( LV2,RANK:10 )
|
-
-
21 楼
表格很有用处
|
能力值:
( LV2,RANK:10 )
|
-
-
22 楼
感谢,收获很大,希望继续分析...
|