标签: reverse-engineering

如何对使用ProGuard进行模糊处理的Android APK进行逆向工程/反编译?

不幸的是,我丢失了我使用ProGuard混淆的一个应用程序的源代码.
我仍然有.apkProGuard生成的文件和一些配置文件:

  1. dump.txt
  2. mapping.txt
  3. seeds.txt
  4. usage.txt

到目前为止我做了什么?

  1. 使用apktool解码资源文件.
    是的,我已经回来了!

  2. 提取.apk文件并使用dex2jarclasses.dex文件转换为.jar文件.

如果我现在使用JD-Gui查看源代码(.jar文件),我会看到我的混淆代码.像这样的东西:

class c {
  TextView a;
  TextView b;
  TextView c;
  TextView d;
  CheckBox e;
}

protected List a(Uri[] paramArrayOfUri) { ... }

protected void a(List paramList) { ... }
Run Code Online (Sandbox Code Playgroud)

还有一些循环看起来有点奇怪.我不写无限循环:

while (true) {
     if (!localIterator.hasNext())
        return localArrayList;
     ProviderInfo[] arrayOfProviderInfo = ((PackageInfo)localIterator.next()).providers;
     if (arrayOfProviderInfo == null)
        continue;
     int i = arrayOfProviderInfo.length;
}
Run Code Online (Sandbox Code Playgroud)

是否可以使用任何ProGuard的.txt文件将混淆的代码重新映射到我的原始源代码?我想看看我自己的变量名称/方法签名.
或者这些文件只能用于跟踪崩溃报告堆栈跟踪?

android decompiling reverse-engineering proguard apk

15
推荐指数
1
解决办法
9995
查看次数

_malloc究竟在汇编中做了什么?

public main
main proc near
push    ebp
mov     ebp, esp
and     esp, 0FFFFFFF0h
sub     esp, 30h
mov     dword ptr [esp], 8 ; size
call    _malloc
mov     [esp+2Ch], eax
mov     dword ptr [esp+4], 4
mov     eax, [esp+2Ch]
mov     [esp], eax
call    __start
Run Code Online (Sandbox Code Playgroud)

上面的代码代表了我正在处理的大型项目的一部分.我试图将此代码转换为C等效,但我很难理解malloc如何工作.

我估计8个字节将是被分配的内存的大小; 但是,我不确定这条线.

mov      eax, [esp+2ch] 
Run Code Online (Sandbox Code Playgroud)

malloc对eax做了什么?

那么这是等效的C代码吗?

int main(void)
{
int *ptr1;
ptr1 = (int *)malloc(sizeof(8));
*ptr1 = 4;
__start(*ptr1);
Run Code Online (Sandbox Code Playgroud)

c x86 assembly reverse-engineering

15
推荐指数
2
解决办法
2万
查看次数

使用constexpr编译时间字符串加密

我想要一个编译时字符串加密,这样我就可以在我的代码中编写:

const auto encryptedInvalidLicense = ENCRYPT("Invalid license");
std::cout << encryptedInvalidLicense.decrypt() << std::endl; // outputs "Invalid license"
Run Code Online (Sandbox Code Playgroud)

并且字符串"Invalid license"不会出现在二进制文件中.预构建可能是答案,但我正在寻找一个纯c ++ constexpr解决方案来解决这个问题,它将得到VS2015的支持.

有什么建议?


  1. 我已经研究过编译时字符串加密,它没有为问题提供constexpr解决方案.

  2. 我还研究了http://www.unknowncheats.me/forum/c-and-c/113715-compile-time-string-encryption.html.虽然它是一个constexpr解决方案,但VS2015仍然将字符串纯文本添加到二进制文件中.

c++ reverse-engineering constexpr c++11 c++14

15
推荐指数
1
解决办法
5835
查看次数

逆向工程二进制文件格式是否合法

通过反向工程从其他应用程序反向工程未加密的二进制文件格式并阅读内容,在我的应用程序中添加对第三方文件格式的支持是否合法?

file-format reverse-engineering

14
推荐指数
2
解决办法
4744
查看次数

应用于MySQL和PostgreSQL DB的逆向工程?

是否有应用程序对mysql和/或postgre中的现有数据库进行逆向工程?

我有兴趣从现有的DB图中获取数据库图,类似于在MSSQL Server中可以完成的

mysql postgresql reverse-engineering

14
推荐指数
3
解决办法
3万
查看次数

逆向工程Apple Kext - 重建课堂

问候!

我目前正在尝试扩展Magic Mouse的功能.为此,我希望编写一个截取来自多点触控驱动程序AppleMultitouchDriver.kext的事件的kext,解释它们,然后调度新事件或转发实际事件.这种方法类似于DoubleCommand使用的方法.

我已经创建了一个小的测试kext,它可以拦截鼠标事件(点击,动作等).

我现在遇到的问题是我无法拦截来自AppleMultitouchDevice和/或AppleMultitouchHIDEventDriver对象的事件,因为它们没有类定义.我需要能够像在鼠标拦截器中那样将指针重新分配给回调函数,就像在DoubleCommand中一样.据我所知,这意味着我需要重建AppleMultitouchDevice类.我已经能够获得对AppleMultitouchDevice对象实例的引用,所以我只需要能够转换它并使用它.

既然你有背景,这是我的直接问题:

  • 我需要使用哪些方法来对kext进行反向工程或重构有问题的类?
  • 哪些程序可以帮助我完成这项工作?
  • 是否有任何专注于您所知道的特定主题的教程或电子书?
  • 我是否有可能重新分配回调指针而不实际重构整个类?
  • 我可能错过的任何其他东西,因为我对此非常新.

提前感谢您的任何建议或帮助!!

c++ kernel reverse-engineering device-driver magic-mouse

14
推荐指数
1
解决办法
1957
查看次数

有没有办法告诉程序使用什么语言?

我有一个下载并安装的桌面程序.它从.exe文件运行.

是否有一些来自.exe文件的方法来告诉用什么编程语言来编写程序?

有没有工具可以帮助解决这个问题?

可以确定哪些语言,哪些语言不能?


好的,这是我正在寻找的两种东西:

  1. 确定应用程序是否以Delphi编写的提示

  2. 这种"IsDelphi"节目布鲁斯·麦基会发现德尔福,德尔福建成面向.NET或C++ Builder是你的硬盘上的所有应用程序.

windows delphi executable programming-languages reverse-engineering

14
推荐指数
2
解决办法
2088
查看次数

逆向工程c程序

如果分发了这个二进制文件,则每个c程序都转换为机器代码.由于计算机的指令集众所周知,是否可以取回C原始程序?

c assembly reverse-engineering disassembly

14
推荐指数
2
解决办法
3万
查看次数

逆向工程实体框架的表子集

我正在使用EF,我已经获得了Entity Framework Power Tools扩展,它允许我根据给定数据库中的表对类进行逆向工程.

我们有一个相当广泛的数据库,有很多表我不需要代表.有没有简单的方法来选择这些的子集,只对那些进行反向工程?

entity-framework reverse-engineering ef-code-first visual-studio-2012

14
推荐指数
2
解决办法
7957
查看次数

电报:从电报客户端获取fileid

电报机器人fileid用来下载文件.我如何fileid从Telegram客户端(My Unofficial版本)获取此信息?mtproto具有此位置类的文件指示其地址.

文件位置参数

  • dc_id int保存文件的数据中心的编号
  • volume_id long服务器卷
  • local_id int文件ID
  • 秘密 长校验和访问文件

问题是我不知道如何生成fileid适合File Location类中机器人的那个.

更新1:

我试过做一些逆向工程.所以,我发现File Location课堂和课堂之间有一些关系FileId.

这是我的File Location 样本地址.

  • id:0 //此字段仅适用于秘密聊天
  • access_hash:0 //此字段仅适用于秘密聊天
  • volume_id: ( )429640340199BCA94 HEX
  • secret:-3528741004939935589(CF0764C08833409B HEX)//根据TG文档,它应该是文件CheckSum
  • local_id: ()60051775 HEX

根据我从Bot中检索FileID到的前一FileLocation课,这是我的意思:

  • FILEID: AgADBAADL6gxG06L8w0nhNO87UW3iZTKmxkABJtAM4jAZAfPdRcAAgI

很明显,FileID价值是Base64格式的.所以我把它解码了:

  • 十六进制价值: 0200030400032FA8311B4E8BF30D2784D3BCED45B78994CA9B1900049B403388C06407CF7517000202

现在我们可以看到FileLocation这个十六进制值中的值:

  • 未知: 0200030400032FA8311B4E8BF30D2784D3BCED45B789
  • VolumeId: …

android reverse-engineering telegram mtproto telegram-bot

14
推荐指数
1
解决办法
812
查看次数