首页
社区
课程
招聘
[旧帖] [求助]麻烦帮我看看这段汇编代码! 0.00雪花
发表于: 2015-2-4 16:14 1654

[旧帖] [求助]麻烦帮我看看这段汇编代码! 0.00雪花

2015-2-4 16:14
1654
想破解一个3des加密的key,反汇编后找到该函数的代码如下:
text:00000DA0                                         EXPORT Java_com_tv_shidian_utils_NativeUtils_get3DESKey
.text:00000DA0                         Java_com_tv_shidian_utils_NativeUtils_get3DESKey
.text:00000DA0 08 B5                                   PUSH    {R3,LR}
.text:00000DA2 04 49                                   LDR     R1, =(keys_ptr - 0xDAC)
.text:00000DA4 02 68                                   LDR     R2, [R0]
.text:00000DA6 A7 23                                   MOVS    R3, #0xA7
.text:00000DA8 79 44                                   ADD     R1, PC ; keys_ptr
.text:00000DAA 9B 00                                   LSLS    R3, R3, #2
.text:00000DAC 09 68                                   LDR     R1, [R1] ; keys
.text:00000DAE D3 58                                   LDR     R3, [R2,R3]
.text:00000DB0 98 47                                   BLX     R3
.text:00000DB2 08 BD                                   POP     {R3,PC}
.text:00000DB2                         ; End of function Java_com_tv_shidian_utils_NativeUtils_get3DESKey
.text:00000DB2
.text:00000DB2                         ; ---------------------------------------------------------------------------
.text:00000DB4 04 32 00 00             off_DB4         DCD keys_ptr - 0xDAC    ; DATA XREF: Java_com_tv_shidian_utils_NativeUtils_get3DESKey+2r
.text:00000DB8
.text:00000DB8                         ; =============== S U B R O U T I N E =======================================
.text:00000DB8
.text:00000DB8
.text:00000DB8                                         EXPORT Java_com_tv_shidian_utils_NativeUtils_get3DESKeyForGet
.text:00000DB8                         Java_com_tv_shidian_utils_NativeUtils_get3DESKeyForGet
.text:00000DB8 08 B5                                   PUSH    {R3,LR}
.text:00000DBA 04 49                                   LDR     R1, =(keys_get_ptr - 0xDC4)
.text:00000DBC 02 68                                   LDR     R2, [R0]
.text:00000DBE A7 23                                   MOVS    R3, #0xA7
.text:00000DC0 79 44                                   ADD     R1, PC ; keys_get_ptr
.text:00000DC2 9B 00                                   LSLS    R3, R3, #2
.text:00000DC4 09 68                                   LDR     R1, [R1]        ; "76fae7c9a6e4b49ed61d740f"
.text:00000DC6 D3 58                                   LDR     R3, [R2,R3]
.text:00000DC8 98 47                                   BLX     R3
.text:00000DCA 08 BD                                   POP     {R3,PC}
.text:00000DCA                         ; End of function Java_com_tv_shidian_utils_NativeUtils_get3DESKeyForGet

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
很奇怪,我用ide 的f5解析得如下代码:
int __fastcall Java_com_tv_shidian_utils_NativeUtils_get3DESKey(int a1)
{
  return (*(int (**)(void))(*(_DWORD *)a1 + 668))();
}
这是有参数的函数,看了看汇编代码感觉也像是带参数的,但是我在反编译的smail文件中看到只有:
public static native String get3DESKey();这个函数是不带参数的!
怎么回事?是ida反编译错误还是jd-gui反编译错误!?
2015-2-6 08:45
0
雪    币: 1604
活跃值: (640)
能力值: ( LV13,RANK:460 )
在线值:
发帖
回帖
粉丝
3
不知道楼主反汇编的这个文件是用c/c++ ,还是 JAVA 写的?

根据楼主提供的伪代码来看,Java_com_tv_shidian_utils_NativeUtils_get3DESKey  这个函数使用 fastcall
调用约定,该约定为了提高代码的执行速度,默认将传递给函数的前2个参数复制到ecx与edx寄存器中,而不是以指令 push dword [esp+xx] 压栈,因此你看到的 int a参数可能是该函数的第3个参数。

而且,你应该按F5反编译 .text :00000DB8 处,标记为 Java_com_tv_shidian_utils_NativeUtils_get3DESKey+2r 的这个函数,看看调用约定是否与前面那个函数相同,再看IDA PRO 识别出的参数个数,然后,转到 .rdata 节或者存储这2个函数原型信息的节中,查看实际的参数个数才能确定。
2015-2-8 08:41
0
游客
登录 | 注册 方可回帖
返回
//